-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsaman.go
130 lines (116 loc) · 3.52 KB
/
saman.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
128
129
130
package samanpayment
import (
"bytes"
"crypto/tls"
"encoding/json"
"log"
"net/http"
)
func (config *SamanConfig) GetTokenRequest(resnum string, transaction_key int, amount int, callback_url string, payer_phone string) (*RequestTokenResponse, error) {
parameters := RequestToken{
Action: "token",
TerminalId: config.TerminalId,
RedirectUrl: callback_url,
TxnRandomSessionKey: transaction_key,
ResNum: resnum,
Amount: amount,
CellNumber: payer_phone,
}
payload, err := json.Marshal(parameters)
req, err := http.NewRequest(http.MethodPost, "https://sep.shaparak.ir/onlinepg/onlinepg", bytes.NewReader(payload))
if err != nil {
log.Fatal("Error on creating request object. ", err.Error())
return nil, err
}
req.Header.Set("Content-type", "application/json")
client := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
}
res, err := client.Do(req)
if err != nil {
log.Fatal("Error on dispatching request. ", err.Error())
return nil, err
}
result := new(RequestTokenResponse)
err = json.NewDecoder(res.Body).Decode(&result)
if err != nil {
log.Fatal("Error on unmarshaling json. ", err.Error())
return nil, err
}
return result, nil
}
func (config *SamanConfig) VerifyTransactionRequest(transaction_key int, refnum string) (*VerifyTransactionResponse, error) {
parameters := VerifyTransaction{
RefNum: refnum,
TerminalId: config.TerminalId,
TxnRandomSessionKey: transaction_key,
IgnoreNationalcode: true,
}
payload, err := json.Marshal(parameters)
req, err := http.NewRequest("POST", "https://sep.shaparak.ir/verifyTxnRandomSessionkey/ipg/VerifyTranscation", bytes.NewReader(payload))
if err != nil {
log.Fatal("Error on creating request object. ", err.Error())
return nil, err
}
req.Header.Set("Content-type", "application/json")
client := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
}
res, err := client.Do(req)
if err != nil {
log.Fatal("Error on dispatching request. ", err.Error())
return nil, err
}
result := new(VerifyTransactionResponse)
err = json.NewDecoder(res.Body).Decode(&result)
if err != nil {
log.Fatal("Error on unmarshaling json. ", err.Error())
return nil, err
}
return result, nil
}
func (config *SamanConfig) ReverseTransactionRequest(transaction_key int, refnum string) (*ReverseTransactionResponse, error) {
parameters := VerifyTransaction{
RefNum: refnum,
TerminalId: config.TerminalId,
TxnRandomSessionKey: transaction_key,
IgnoreNationalcode: true,
}
payload, err := json.Marshal(parameters)
req, err := http.NewRequest("POST", "https://sep.shaparak.ir/verifyTxnRandomSessionkey/ipg/ReverseTranscation", bytes.NewReader(payload))
if err != nil {
log.Fatal("Error on creating request object. ", err.Error())
return nil, err
}
req.Header.Set("Content-type", "application/json")
client := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
}
res, err := client.Do(req)
if err != nil {
log.Fatal("Error on dispatching request. ", err.Error())
return nil, err
}
result := new(ReverseTransactionResponse)
err = json.NewDecoder(res.Body).Decode(&result)
if err != nil {
log.Fatal("Error on unmarshaling json. ", err.Error())
return nil, err
}
return result, nil
}
func SetValue(statuscode int) string {
return codes[statuscode]
}