-
Notifications
You must be signed in to change notification settings - Fork 0
/
payment_gateway.go
80 lines (67 loc) · 1.84 KB
/
payment_gateway.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
package gomerchant
import "net/http"
// PaymentGateway interface
type PaymentGateway interface {
Authorize(amount uint64, params AuthorizeParams) (AuthorizeResponse, error)
CompleteAuthorize(paymentID string, params CompleteAuthorizeParams) (CompleteAuthorizeResponse, error)
Capture(transactionID string, params CaptureParams) (CaptureResponse, error)
Refund(transactionID string, amount uint, params RefundParams) (RefundResponse, error)
Void(transactionID string, params VoidParams) (VoidResponse, error)
Query(transactionID string) (Transaction, error)
}
// AuthorizeParams authorize params
type AuthorizeParams struct {
Amount uint64
Currency string
Customer string
Description string
OrderID string
BillingAddress *Address
ShippingAddress *Address
PaymentMethod *PaymentMethod
Params
}
// AuthorizeResponse authorize response
type AuthorizeResponse struct {
TransactionID string
HandleRequest bool // need process request after authorize or not
RequestHandler func(http.ResponseWriter, *http.Request, Params) error // process request
Params
}
// CompleteAuthorizeParams complete authorize params
type CompleteAuthorizeParams struct {
Params
}
// CompleteAuthorizeResponse complete authorize response
type CompleteAuthorizeResponse struct {
Params
}
// CaptureParams capture params
type CaptureParams struct {
Params
}
// CaptureResponse capture response
type CaptureResponse struct {
TransactionID string
Params
}
// RefundParams refund params
type RefundParams struct {
Captured bool
Params
}
// RefundResponse refund response
type RefundResponse struct {
TransactionID string
Params
}
// VoidParams void params
type VoidParams struct {
Captured bool
Params
}
// VoidResponse void response
type VoidResponse struct {
TransactionID string
Params
}