Skip to content

Commit

Permalink
add recipient_wallet payout field (#165)
Browse files Browse the repository at this point in the history
  • Loading branch information
heat authored Aug 13, 2020
1 parent a0d03ec commit 18b47a0
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 8 deletions.
38 changes: 38 additions & 0 deletions example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,41 @@ func Example() {
panic(err)
}
}

func ExampleClient_CreateSinglePayout_Venmo() {
// Initialize client
c, err := paypal.NewClient("clientID", "secretID", paypal.APIBaseSandBox)
if err != nil {
panic(err)
}

// Retrieve access token
_, err = c.GetAccessToken()
if err != nil {
panic(err)
}

// Set payout item with Venmo wallet
payout := paypal.Payout{
SenderBatchHeader: &paypal.SenderBatchHeader{
SenderBatchID: "Payouts_2018_100007",
EmailSubject: "You have a payout!",
EmailMessage: "You have received a payout! Thanks for using our service!",
},
Items: []paypal.PayoutItem{
{
RecipientType: "EMAIL",
RecipientWallet: paypal.VenmoRecipientWallet,
Receiver: "[email protected]",
Amount: &paypal.AmountPayout{
Value: "9.87",
Currency: "USD",
},
Note: "Thanks for your patronage!",
SenderItemID: "201403140001",
},
},
}

c.CreateSinglePayout(payout)
}
37 changes: 34 additions & 3 deletions integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
package paypal

import (
"github.com/stretchr/testify/assert"
"testing"
"time"

"github.com/stretchr/testify/assert"
)

// All test values are defined here
Expand Down Expand Up @@ -38,6 +39,36 @@ func TestGetUserInfo(t *testing.T) {
}
}

func TestCreateVenmoPayout(t *testing.T) {
c, _ := NewClient(testClientID, testSecret, APIBaseSandBox)
c.GetAccessToken()

payout := Payout{
SenderBatchHeader: &SenderBatchHeader{
SenderBatchID: "Payouts_2018_100007",
EmailSubject: "You have a payout!",
EmailMessage: "You have received a payout! Thanks for using our service!",
},
Items: []PayoutItem{
{
RecipientType: "EMAIL",
RecipientWallet: VenmoRecipientWallet,
Receiver: "[email protected]",
Amount: &AmountPayout{
Value: "9.87",
Currency: "USD",
},
Note: "Thanks for your patronage!",
SenderItemID: "201403140001",
},
},
}

res, err := c.CreateSinglePayout(payout)
assert.NoError(t, err, "should accept venmo wallet")
assert.Greater(t, len(res.Items), 0)
}

func TestCreateSinglePayout(t *testing.T) {
c, _ := NewClient(testClientID, testSecret, APIBaseSandBox)
c.GetAccessToken()
Expand Down Expand Up @@ -285,13 +316,13 @@ func TestSubscriptionPlans(t *testing.T) {
TotalCycles: 0,
},
},
PaymentPreferences: PaymentPreferences{
PaymentPreferences: &PaymentPreferences{
AutoBillOutstanding: false,
SetupFee: nil,
SetupFeeFailureAction: SetupFeeFailureActionCancel,
PaymentFailureThreshold: 0,
},
Taxes: Taxes{
Taxes: &Taxes{
Percentage: "19",
Inclusive: false,
},
Expand Down
17 changes: 12 additions & 5 deletions types.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,12 @@ const (
FeatureUpdateCustomerDispute string = "UPDATE_CUSTOMER_DISPUTES"
)

// https://developer.paypal.com/docs/api/payments.payouts-batch/v1/?mark=recipient_wallet#definition-recipient_wallet
const (
PaypalRecipientWallet string = "PAYPAL"
VenmoRecipientWallet string = "VENMO"
)

const (
LinkRelSelf string = "self"
LinkRelActionURL string = "action_url"
Expand Down Expand Up @@ -735,11 +741,12 @@ type (

// PayoutItem struct
PayoutItem struct {
RecipientType string `json:"recipient_type"`
Receiver string `json:"receiver"`
Amount *AmountPayout `json:"amount"`
Note string `json:"note,omitempty"`
SenderItemID string `json:"sender_item_id,omitempty"`
RecipientType string `json:"recipient_type"`
RecipientWallet string `json:"recipient_wallet"`
Receiver string `json:"receiver"`
Amount *AmountPayout `json:"amount"`
Note string `json:"note,omitempty"`
SenderItemID string `json:"sender_item_id,omitempty"`
}

// PayoutItemResponse struct
Expand Down

0 comments on commit 18b47a0

Please sign in to comment.