-
Notifications
You must be signed in to change notification settings - Fork 23
/
fraud_management.go
127 lines (110 loc) · 3.62 KB
/
fraud_management.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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package AuthorizeCIM
import (
"encoding/json"
"time"
)
func UnsettledBatchList() (*TransactionsList, error) {
response, err := SendGetUnsettled()
return response, err
}
func (input TransactionsList) List() ([]BatchTransaction, error) {
response, err := SendGetUnsettled()
return response.Transactions, err
}
func updateHeldTransaction() {
}
func (input TransactionsList) Count() int {
return input.TotalNumInResultSet
}
type UnsettledTransactionsRequest struct {
GetUnsettledTransactionListRequest GetUnsettledTransactionListRequest `json:"getUnsettledTransactionListRequest"`
}
type GetUnsettledTransactionListRequest struct {
MerchantAuthentication MerchantAuthentication `json:"merchantAuthentication,omitempty"`
Status string `json:"status,omitempty"`
}
type TransactionsList struct {
Transactions []BatchTransaction `json:"transactions"`
TotalNumInResultSet int `json:"totalNumInResultSet"`
MessagesResponse
}
type BatchTransaction struct {
TransID string `json:"transId"`
SubmitTimeUTC time.Time `json:"submitTimeUTC"`
SubmitTimeLocal string `json:"submitTimeLocal"`
TransactionStatus string `json:"transactionStatus"`
InvoiceNumber string `json:"invoiceNumber"`
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
AccountType string `json:"accountType"`
AccountNumber string `json:"accountNumber"`
SettleAmount float64 `json:"settleAmount"`
MarketType string `json:"marketType"`
Product string `json:"product"`
FraudInformation struct {
FraudFilterList []string `json:"fraudFilterList"`
FraudAction string `json:"fraudAction"`
} `json:"fraudInformation"`
}
type UpdateHeldTransactionRequest struct {
UpdateHeldTransaction UpdateHeldTransaction `json:"updateHeldTransactionRequest"`
}
type UpdateHeldTransaction struct {
MerchantAuthentication MerchantAuthentication `json:"merchantAuthentication"`
RefID string `json:"refId"`
HeldTransactionRequest HeldTransactionRequest `json:"heldTransactionRequest"`
}
type HeldTransactionRequest struct {
Action string `json:"action"`
RefTransID string `json:"refTransId"`
}
func SendTransactionUpdate(tranx PreviousTransaction, method string) (*TransactionResponse, error) {
action := UpdateHeldTransactionRequest{
UpdateHeldTransaction: UpdateHeldTransaction{
MerchantAuthentication: GetAuthentication(),
RefID: tranx.RefId,
HeldTransactionRequest: HeldTransactionRequest{
Action: method,
RefTransID: tranx.RefId,
},
},
}
jsoned, err := json.Marshal(action)
if err != nil {
return nil, err
}
response, err := SendRequest(jsoned)
var dat TransactionResponse
err = json.Unmarshal(response, &dat)
if err != nil {
return nil, err
}
return &dat, err
}
func (t PreviousTransaction) Approve() (*TransactionResponse, error) {
response, err := SendTransactionUpdate(t, "approve")
return response, err
}
func (t PreviousTransaction) Decline() (*TransactionResponse, error) {
response, err := SendTransactionUpdate(t, "decline")
return response, err
}
func SendGetUnsettled() (*TransactionsList, error) {
action := UnsettledTransactionsRequest{
GetUnsettledTransactionListRequest: GetUnsettledTransactionListRequest{
MerchantAuthentication: GetAuthentication(),
Status: "pendingApproval",
},
}
jsoned, err := json.Marshal(action)
if err != nil {
return nil, err
}
response, err := SendRequest(jsoned)
var dat TransactionsList
err = json.Unmarshal(response, &dat)
if err != nil {
return nil, err
}
return &dat, err
}