Some updates to refund endpoint (#121)

* s/authorization/authorizations in url path

* Update authorization object to the paypal v2 version

* duplicate field

* rename some fields

* Update types for refund endpoint

* actually, don't do a breaking change

* .

* pointer

Co-authored-by: Alex Pliutau <a.pliutau@gmail.com>
This commit is contained in:
Eric Lee 2020-05-02 08:09:58 -07:00 committed by GitHub
parent fc9dcf749b
commit efe72c1ed4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 15 deletions

View File

@ -23,15 +23,10 @@ func (c *Client) GetSale(saleID string) (*Sale, error) {
// RefundSale refunds a completed payment. // RefundSale refunds a completed payment.
// Use this call to refund a completed payment. Provide the sale_id in the URI and an empty JSON payload for a full refund. For partial refunds, you can include an amount. // Use this call to refund a completed payment. Provide the sale_id in the URI and an empty JSON payload for a full refund. For partial refunds, you can include an amount.
// Endpoint: POST /v1/payments/sale/ID/refund func (c *Client) RefundSale(saleID string, r RefundRequest) (*Refund, error) {
func (c *Client) RefundSale(saleID string, a *Amount) (*Refund, error) {
type refundRequest struct {
Amount *Amount `json:"amount"`
}
refund := &Refund{} refund := &Refund{}
req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v1/payments/sale/"+saleID+"/refund"), &refundRequest{Amount: a}) req, err := c.NewRequest("POST", fmt.Sprintf("%s%s", c.APIBase, "/v1/payments/sale/"+saleID+"/refund"), &r)
if err != nil { if err != nil {
return refund, err return refund, err
} }

View File

@ -234,6 +234,12 @@ type (
FinalCapture bool `json:"final_capture,omitempty"` FinalCapture bool `json:"final_capture,omitempty"`
} }
RefundRequest struct {
Amount *PurchaseUnitAmount `json:"amount,omitempty"`
InvoiceID string `json:"invoice_id,omitempty"`
NoteToPayer string `json:"note_to_payer,omitempty"`
}
SellerProtection struct { SellerProtection struct {
Status string `json:"status,omitempty"` Status string `json:"status,omitempty"`
DisputeCategories []string `json:"dispute_categories,omitempty"` DisputeCategories []string `json:"dispute_categories,omitempty"`
@ -244,6 +250,10 @@ type (
Reason string `json:"reason,omitempty"` Reason string `json:"reason,omitempty"`
} }
RefundStatusDetails struct {
Reason string `json:"reason,omitempty"`
}
PaymentCaptureResponse struct { PaymentCaptureResponse struct {
Status string `json:"status,omitempty"` Status string `json:"status,omitempty"`
StatusDetails *CaptureStatusDetails `json:"status_details,omitempty"` StatusDetails *CaptureStatusDetails `json:"status_details,omitempty"`
@ -776,13 +786,16 @@ type (
// Refund struct // Refund struct
Refund struct { Refund struct {
ID string `json:"id,omitempty"` ID string `json:"id,omitempty"`
Amount *Amount `json:"amount,omitempty"` Amount *PurchaseUnitAmount `json:"amount,omitempty"`
CreateTime *time.Time `json:"create_time,omitempty"` Status string `json:"status,omitempty"`
State string `json:"state,omitempty"` StatusDetails *RefundStatusDetails `json:"status_details,omitempty"`
CaptureID string `json:"capture_id,omitempty"` InvoiceID string `json:"invoice_id,omitempty"`
ParentPayment string `json:"parent_payment,omitempty"` NoteToPayer string `json:"note_to_payer,omitempty"`
UpdateTime *time.Time `json:"update_time,omitempty"` SellerPayableBreakdown *CaptureSellerBreakdown `json:"seller_payable_breakdown,omitempty"`
Links []Link `json:"links"`
CreateTime *time.Time `json:"create_time,omitempty"`
UpdateTime *time.Time `json:"update_time,omitempty"`
} }
// RefundResponse . // RefundResponse .
@ -983,7 +996,6 @@ type (
Links []Link `json:"links"` Links []Link `json:"links"`
} }
// WebhookEvent struct
WebhookEvent struct { WebhookEvent struct {
ID string `json:"id"` ID string `json:"id"`
CreateTime time.Time `json:"create_time"` CreateTime time.Time `json:"create_time"`