mirror of
https://github.com/plutov/paypal.git
synced 2025-01-23 10:21:03 +01:00
Add payment-source type
This commit is contained in:
parent
da794934b8
commit
3f993bc542
|
@ -118,13 +118,13 @@ order, err := c.CreateOrder(paypalsdk.OrderIntentCapture, []paypalsdk.PurchaseUn
|
||||||
### Authorize Order
|
### Authorize Order
|
||||||
|
|
||||||
```go
|
```go
|
||||||
auth, err := c.AuthorizeOrder(orderID, &paypalsdk.Amount{Total: "7.00", Currency: "USD"})
|
auth, err := c.AuthorizeOrder(orderID, paypalsdk.PaymentSource{})
|
||||||
```
|
```
|
||||||
|
|
||||||
### Capture Order
|
### Capture Order
|
||||||
|
|
||||||
```go
|
```go
|
||||||
capture, err := c.CaptureOrder(orderID, &paypalsdk.Amount{Total: "7.00", Currency: "USD"}, true, nil)
|
capture, err := c.CaptureOrder(orderID, paypalsdk.PaymentSource{})
|
||||||
```
|
```
|
||||||
|
|
||||||
### Void Order
|
### Void Order
|
||||||
|
|
|
@ -122,7 +122,7 @@ func TestAuthorizeOrder(t *testing.T) {
|
||||||
c, _ := NewClient(testClientID, testSecret, APIBaseSandBox)
|
c, _ := NewClient(testClientID, testSecret, APIBaseSandBox)
|
||||||
c.GetAccessToken()
|
c.GetAccessToken()
|
||||||
|
|
||||||
_, err := c.AuthorizeOrder(testOrderID, &Amount{Total: "7.00", Currency: "USD"})
|
_, err := c.AuthorizeOrder(testOrderID, PaymentSource{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Order is expired, 400 error must be returned")
|
t.Errorf("Order is expired, 400 error must be returned")
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,7 @@ func TestCaptureOrder(t *testing.T) {
|
||||||
c, _ := NewClient(testClientID, testSecret, APIBaseSandBox)
|
c, _ := NewClient(testClientID, testSecret, APIBaseSandBox)
|
||||||
c.GetAccessToken()
|
c.GetAccessToken()
|
||||||
|
|
||||||
_, err := c.CaptureOrder(testOrderID, &Amount{Total: "100", Currency: "USD"}, true, nil)
|
_, err := c.CaptureOrder(testOrderID, PaymentSource{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Order is expired, 400 error must be returned")
|
t.Errorf("Order is expired, 400 error must be returned")
|
||||||
}
|
}
|
||||||
|
|
20
order.go
20
order.go
|
@ -42,14 +42,10 @@ func (c *Client) CreateOrder(intent string, purchaseUnits []PurchaseUnitRequest,
|
||||||
|
|
||||||
// AuthorizeOrder - Use this call to authorize an order.
|
// AuthorizeOrder - Use this call to authorize an order.
|
||||||
// Endpoint: POST /v2/checkout/orders/ID/authorize
|
// Endpoint: POST /v2/checkout/orders/ID/authorize
|
||||||
func (c *Client) AuthorizeOrder(orderID string, amount *Amount) (*Authorization, error) {
|
func (c *Client) AuthorizeOrder(orderID string, paymentSource PaymentSource) (*Authorization, error) {
|
||||||
type authRequest struct {
|
|
||||||
Amount *Amount `json:"amount"`
|
|
||||||
}
|
|
||||||
|
|
||||||
auth := &Authorization{}
|
auth := &Authorization{}
|
||||||
|
|
||||||
req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v2/checkout/orders/"+orderID+"/authorize"), authRequest{Amount: amount})
|
req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v2/checkout/orders/"+orderID+"/authorize"), paymentSource)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return auth, err
|
return auth, err
|
||||||
}
|
}
|
||||||
|
@ -61,18 +57,12 @@ func (c *Client) AuthorizeOrder(orderID string, amount *Amount) (*Authorization,
|
||||||
return auth, nil
|
return auth, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CaptureOrder - Use this call to capture a payment on an order. To use this call, an original payment call must specify an intent of order.
|
// CaptureOrder - Use this call to capture a payment on an order.
|
||||||
// Endpoint: POST /v2/checkout/orders/ID/capture
|
// Endpoint: POST /v2/checkout/orders/ID/capture
|
||||||
func (c *Client) CaptureOrder(orderID string, amount *Amount, isFinalCapture bool, currency *Currency) (*Capture, error) {
|
func (c *Client) CaptureOrder(orderID string, paymentSource PaymentSource) (*Capture, error) {
|
||||||
type captureRequest struct {
|
|
||||||
Amount *Amount `json:"amount"`
|
|
||||||
IsFinalCapture bool `json:"is_final_capture"`
|
|
||||||
Currency *Currency `json:"transaction_fee"`
|
|
||||||
}
|
|
||||||
|
|
||||||
capture := &Capture{}
|
capture := &Capture{}
|
||||||
|
|
||||||
req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v2/checkout/orders/"+orderID+"/capture"), captureRequest{Amount: amount, IsFinalCapture: isFinalCapture, Currency: currency})
|
req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v2/checkout/orders/"+orderID+"/capture"), paymentSource)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return capture, err
|
return capture, err
|
||||||
}
|
}
|
||||||
|
|
34
types.go
34
types.go
|
@ -429,6 +429,40 @@ type (
|
||||||
Links []Link `json:"links"`
|
Links []Link `json:"links"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PaymentSource structure
|
||||||
|
PaymentSource struct {
|
||||||
|
Card *PaymentSourceCard `json:"card"`
|
||||||
|
Token *PaymentSourceToken `json:"token"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PaymentSourceCard structure
|
||||||
|
PaymentSourceCard struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Number string `json:"number"`
|
||||||
|
Expiry string `json:"expiry"`
|
||||||
|
SecurityCode string `json:"security_code"`
|
||||||
|
LastDigits string `json:"last_digits"`
|
||||||
|
CardType string `json:"card_type"`
|
||||||
|
BillingAddress *CardBillingAddress `json:"billing_address"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CardBillingAddress structure
|
||||||
|
CardBillingAddress struct {
|
||||||
|
AddressLine1 string `json:"address_line_1"`
|
||||||
|
AddressLine2 string `json:"address_line_2"`
|
||||||
|
AdminArea2 string `json:"admin_area_2"`
|
||||||
|
AdminArea1 string `json:"admin_area_1"`
|
||||||
|
PostalCode string `json:"postal_code"`
|
||||||
|
CountryCode string `json:"country_code"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PaymentSourceToken structure
|
||||||
|
PaymentSourceToken struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
}
|
||||||
|
|
||||||
// Payout struct
|
// Payout struct
|
||||||
Payout struct {
|
Payout struct {
|
||||||
SenderBatchHeader *SenderBatchHeader `json:"sender_batch_header"`
|
SenderBatchHeader *SenderBatchHeader `json:"sender_batch_header"`
|
||||||
|
|
Loading…
Reference in New Issue
Block a user