-
Notifications
You must be signed in to change notification settings - Fork 1
/
payment_test.go
90 lines (75 loc) · 1.89 KB
/
payment_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package gopaypal
import (
"testing"
)
func TestClient_CreatePayment(t *testing.T) {
// Create gopaypal client
client := NewClient(clientID, secret, SandBoxURL)
// Try to get access token
_, err := client.GetAccessToken()
if err != nil {
t.Errorf("Cannot get PayPal OAuth access token: %v", err)
t.FailNow()
}
// Create payment
res, err := client.CreatePayment(Payment{
Intent: "sale",
Payer: Payer{
PaymentMethod: "paypal",
},
Transactions: []Transaction{
Transaction{
Amount: Amount{
Total: "10",
Currency: "EUR",
Details: Details{
SubTotal: "10",
},
},
Description: "gopaypal create payment test",
Custom: "gopaypal-test",
},
},
RedirectURL: RedirectURL{
ReturnURL: redirectURL,
CancelURL: redirectURL,
},
})
if err != nil {
t.Errorf("Cannot create PayPal payment: %v", err)
t.FailNow()
}
// Check if payment ID is valid
if res.ID == "" {
t.Error("Invalid PayPal create payment response", err)
t.FailNow()
}
// Display payment link to user
t.Logf("This is the PayPal approve payment URL %v", res.Links[1].Href)
t.Log("Use the flags -paymentid and -payerid to test the execution of a PayPal payment")
}
func TestClient_ExecutePayment(t *testing.T) {
// Check for necessary flags
if paymentID == "" || payerID == "" {
t.SkipNow()
}
// Create gopaypal client
client := NewClient(clientID, secret, SandBoxURL)
// Try to get access token
_, err := client.GetAccessToken()
if err != nil {
t.Errorf("Cannot get PayPal OAuth access token: %v", err)
t.FailNow()
}
// Try to execute the payment
res, err := client.ExecutePayment(paymentID, payerID)
if err != nil {
t.Errorf("Cannot execute PayPal payment: %v", err)
t.FailNow()
}
// Check if payment is approved
if res.State != "approved" {
t.Errorf("Payment is not executed. Got %v state. Expected %v", res.State, "approved")
t.FailNow()
}
}