#89: Add UpdateOrder

This commit is contained in:
Alex Pliutau 2019-07-30 15:12:58 +02:00
parent 637e1c4b15
commit 224bd1f949
3 changed files with 43 additions and 14 deletions

View File

@ -36,6 +36,7 @@ Currently supports **v2** only, if you want to use **v1**, use **v1.1.4** git ta
* GET /v2/payments/refund/**ID**
* POST /v2/checkout/orders
* GET /v2/checkout/orders/**ID**
* PATCH /v2/checkout/orders/**ID**
* POST /v2/checkout/orders/**ID**/authorize
* POST /v2/checkout/orders/**ID**/capture
* POST /v2/payments/billing-plans
@ -115,22 +116,22 @@ order, err := c.GetOrder("O-4J082351X3132253H")
order, err := c.CreateOrder(paypalsdk.OrderIntentCapture, []paypalsdk.PurchaseUnitRequest{paypalsdk.PurchaseUnitRequest{ReferenceID: "ref-id", Amount: paypalsdk.Amount{Total: "7.00", Currency: "USD"}}})
```
### Update Order by ID
```go
order, err := c.UpdateOrder("O-4J082351X3132253H", []paypalsdk.PurchaseUnitRequest{})
```
### Authorize Order
```go
auth, err := c.AuthorizeOrder(orderID, paypalsdk.PaymentSource{})
auth, err := c.AuthorizeOrder(orderID, paypalsdk.AuthorizeOrderRequest{})
```
### Capture Order
```go
capture, err := c.CaptureOrder(orderID, paypalsdk.PaymentSource{})
```
### Void Order
```go
order, err := c.VoidOrder(orderID)
capture, err := c.CaptureOrder(orderID, paypalsdk.CaptureOrderRequest{})
```
### Identity

View File

@ -40,12 +40,29 @@ func (c *Client) CreateOrder(intent string, purchaseUnits []PurchaseUnitRequest,
return order, nil
}
// AuthorizeOrder - Use this call to authorize an order.
// UpdateOrder updates the order by ID
// Endpoint: PATCH /v2/checkout/orders/ID
func (c *Client) UpdateOrder(orderID string, purchaseUnits []PurchaseUnitRequest) (*Order, error) {
order := &Order{}
req, err := c.NewRequest("PATCH", fmt.Sprintf("%s%s%s", c.APIBase, "/v2/checkout/orders/", orderID), purchaseUnits)
if err != nil {
return order, err
}
if err = c.SendWithAuth(req, order); err != nil {
return order, err
}
return order, nil
}
// AuthorizeOrder - https://developer.paypal.com/docs/api/orders/v2/#orders_authorize
// Endpoint: POST /v2/checkout/orders/ID/authorize
func (c *Client) AuthorizeOrder(orderID string, paymentSource PaymentSource) (*Authorization, error) {
func (c *Client) AuthorizeOrder(orderID string, authorizeOrderRequest AuthorizeOrderRequest) (*Authorization, error) {
auth := &Authorization{}
req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v2/checkout/orders/"+orderID+"/authorize"), paymentSource)
req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v2/checkout/orders/"+orderID+"/authorize"), authorizeOrderRequest)
if err != nil {
return auth, err
}
@ -57,12 +74,12 @@ func (c *Client) AuthorizeOrder(orderID string, paymentSource PaymentSource) (*A
return auth, nil
}
// CaptureOrder - Use this call to capture a payment on an order.
// CaptureOrder - https://developer.paypal.com/docs/api/orders/v2/#orders_capture
// Endpoint: POST /v2/checkout/orders/ID/capture
func (c *Client) CaptureOrder(orderID string, paymentSource PaymentSource) (*Capture, error) {
func (c *Client) CaptureOrder(orderID string, captureOrderRequest CaptureOrderRequest) (*Capture, error) {
capture := &Capture{}
req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v2/checkout/orders/"+orderID+"/capture"), paymentSource)
req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v2/checkout/orders/"+orderID+"/capture"), captureOrderRequest)
if err != nil {
return capture, err
}

View File

@ -126,6 +126,17 @@ type (
ProtectionEligibilityType string `json:"protection_eligibility_type,omitempty"`
}
// AuthorizeOrderRequest - https://developer.paypal.com/docs/api/orders/v2/#orders_authorize
AuthorizeOrderRequest struct {
PaymentSource *PaymentSource `json:"payment_source"`
VaultOnCapture bool `json:"vault_on_capture"`
}
// CaptureOrderRequest - https://developer.paypal.com/docs/api/orders/v2/#orders_capture
CaptureOrderRequest struct {
PaymentSource *PaymentSource `json:"payment_source"`
}
// BatchHeader struct
BatchHeader struct {
Amount *AmountPayout `json:"amount,omitempty"`