This repository has been archived by the owner on Apr 29, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 20
/
request_builders.go
104 lines (89 loc) · 3.95 KB
/
request_builders.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package orbital
import (
"encoding/xml"
"strconv"
"github.com/BoltApp/sleet"
)
func buildAuthRequest(authRequest *sleet.AuthorizationRequest, credentials Credentials) Request {
amount := authRequest.Amount.Amount
exp := strconv.Itoa(authRequest.CreditCard.ExpirationYear) + strconv.Itoa(authRequest.CreditCard.ExpirationMonth)
code := currencyMap[authRequest.Amount.Currency]
body := RequestBody{
OrbitalConnectionUsername: credentials.Username,
OrbitalConnectionPassword: credentials.Password,
MerchantID: credentials.MerchantID,
IndustryType: IndustryTypeEcomm,
MessageType: MessageTypeAuth,
BIN: BINStratus,
TerminalID: TerminalIDStratus,
AccountNum: authRequest.CreditCard.Number,
Exp: exp,
CurrencyCode: code,
CurrencyExponent: CurrencyExponentDefault,
CardSecVal: authRequest.CreditCard.CVV,
OrderID: *authRequest.ClientTransactionReference,
Amount: amount,
AVSzip: *authRequest.BillingAddress.PostalCode,
AVSaddress1: *authRequest.BillingAddress.StreetAddress1,
AVSaddress2: authRequest.BillingAddress.StreetAddress2,
AVSstate: *authRequest.BillingAddress.RegionCode,
AVScity: *authRequest.BillingAddress.Locality,
AVScountryCode: *authRequest.BillingAddress.CountryCode,
}
if authRequest.CreditCard.Network == sleet.CreditCardNetworkVisa || authRequest.CreditCard.Network == sleet.CreditCardNetworkDiscover {
body.CardSecValInd = CardSecPresent
}
if authRequest.Cryptogram != "" && authRequest.ECI != "" {
body.DPANInd = "Y"
body.DigitalTokenCryptogram = authRequest.Cryptogram
}
body.XMLName = xml.Name{Local: RequestTypeNewOrder}
return Request{Body: body}
}
func buildCaptureRequest(captureRequest *sleet.CaptureRequest, credentials Credentials) Request {
body := RequestBody{
OrbitalConnectionUsername: credentials.Username,
OrbitalConnectionPassword: credentials.Password,
MerchantID: credentials.MerchantID,
Amount: captureRequest.Amount.Amount,
BIN: BINStratus,
TerminalID: TerminalIDStratus,
TxRefNum: captureRequest.TransactionReference,
OrderID: *captureRequest.ClientTransactionReference,
}
body.XMLName = xml.Name{Local: RequestTypeCapture}
return Request{Body: body}
}
func buildVoidRequest(voidRequest *sleet.VoidRequest, credentials Credentials) Request {
body := RequestBody{
OrbitalConnectionUsername: credentials.Username,
OrbitalConnectionPassword: credentials.Password,
MerchantID: credentials.MerchantID,
BIN: BINStratus,
TerminalID: TerminalIDStratus,
TxRefNum: voidRequest.TransactionReference,
OrderID: *voidRequest.ClientTransactionReference,
}
body.XMLName = xml.Name{Local: RequestTypeVoid}
return Request{Body: body}
}
func buildRefundRequest(refundRequest *sleet.RefundRequest, credentials Credentials) Request {
amount := refundRequest.Amount.Amount
code := currencyMap[refundRequest.Amount.Currency]
body := RequestBody{
OrbitalConnectionUsername: credentials.Username,
OrbitalConnectionPassword: credentials.Password,
MerchantID: credentials.MerchantID,
IndustryType: IndustryTypeEcomm,
MessageType: MessageTypeRefund,
BIN: BINStratus,
TerminalID: TerminalIDStratus,
CurrencyCode: code,
CurrencyExponent: CurrencyExponentDefault,
OrderID: *refundRequest.ClientTransactionReference,
Amount: amount,
TxRefNum: refundRequest.TransactionReference,
}
body.XMLName = xml.Name{Local: RequestTypeNewOrder}
return Request{Body: body}
}