-
Notifications
You must be signed in to change notification settings - Fork 1
/
qr_test.go
161 lines (129 loc) · 4.54 KB
/
qr_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
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package vnqrpay
import (
"log"
"strings"
"testing"
)
func TestMakeCRC(t *testing.T) {
log.Println("TestMakeCRC")
content := "00020101021138540010A00000072701240006970418011062540463830208QRIBFTTA53037045802VN6304AB32"
check := content[:len(content)-4]
extractCrc := strings.ToUpper(content[len(content)-4:])
crc := MakeCRC(check)
if extractCrc != crc {
t.Fatalf("CRC expect: %v, got: %v", crc, extractCrc)
}
}
func TestVerifyCRC(t *testing.T) {
log.Println("TestVerifyCRC")
content := "00020101021138540010A00000072701240006970418011062540463830208QRIBFTTA53037045802VN6304AB32"
if !VerifyCRC(content) {
t.Fatal("Invalid CRC")
}
}
func TestVietQR(t *testing.T) {
log.Println("TestVietQR")
content := "00020101021138540010A00000072701240006970418011062540463830208QRIBFTTA53037045802VN6304AB32"
qr, err := Parse(content)
if err != nil {
t.Fatalf("cannot parse %v", err)
}
if !qr.IsValid {
t.Fatalf("qr.IsValid expect: true, got: %v", qr.IsValid)
}
if qr.Consumer.BankNumber != "6254046383" {
t.Fatalf("qr.Consumer.BankNumber expect: 6254046383, got: %v", qr.Consumer.BankNumber)
}
}
func TestDynamicVietQR(t *testing.T) {
log.Println("TestDynamicVietQR")
content := "00020101021238540010A00000072701240006970418011062540463830208QRIBFTTA53037045405240005802VN62180814a cup of cofee63043301"
qr, err := Parse(content)
if err != nil {
t.Fatalf("cannot parse %v", err)
}
if !qr.IsValid {
t.Fatalf("qr.IsValid expect: true, got: %v", qr.IsValid)
}
if qr.Consumer.BankNumber != "6254046383" {
t.Fatalf("qr.Consumer.BankNumber expect: 6254046383, got: %v", qr.Consumer.BankNumber)
}
if qr.Amount != "24000" {
t.Fatalf("qr.Amount expect: 24000, got: %v", qr.Amount)
}
if qr.AdditionalData.Purpose != "a cup of cofee" {
t.Fatalf("qr.Amount expect: a cup of cofee, got: %v", qr.Amount)
}
}
func TestVNPay(t *testing.T) {
log.Println("TestVNPay")
content := "00020101021126280010A0000007750110010531314453037045408210900005802VN5910CELLPHONES62600312CPSHN ONLINE0517021908061613127850705ONLHN0810CellphoneS63047685"
qr, err := Parse(content)
if err != nil {
t.Fatalf("cannot parse %v", err)
}
if !qr.IsValid {
t.Fatalf("qr.IsValid expect: true, got: %v", qr.IsValid)
}
if qr.Provider.Name != VNPayProvider {
t.Fatalf("qr.Provider.Name expect: %v, got: %v", VNPayProvider, qr.Provider.Name)
}
if qr.Merchant.ID != "0105313144" {
t.Fatalf("qr.Merchant.ID expect: %v, got: %v", "0105313144", qr.Merchant.ID)
}
if qr.Amount != "21090000" {
t.Fatalf("qr.Amount expect: %v, got: %v", "21090000", qr.Amount)
}
if qr.AdditionalData.Store != "CPSHN ONLINE" {
t.Fatalf("qr.AdditionalData.Store expect: %v, got: %v", "CPSHN ONLINE", qr.AdditionalData.Store)
}
if qr.AdditionalData.Terminal != "ONLHN" {
t.Fatalf("qr.AdditionalData.Terminal expect: %v, got: %v", "ONLHN", qr.AdditionalData.Terminal)
}
if qr.AdditionalData.Purpose != "CellphoneS" {
t.Fatalf("qr.AdditionalData.Store expect: %v, got: %v", "CellphoneS", qr.AdditionalData.Purpose)
}
if qr.AdditionalData.Reference != "02190806161312785" {
t.Fatalf("qr.AdditionalData.Reference expect: %v, got: %v", "02190806161312785", qr.AdditionalData.Reference)
}
}
func TestCreateVietQRCode(t *testing.T) {
log.Println("TestCreateVietQRCode")
qr, err := CreateVietQR(VietQROptions{
Consumer: Consumer{
BankBin: Banks[BIDVKey].Bin,
BankNumber: "6254046383",
},
})
if err != nil {
t.Fatal(err)
}
content, err := qr.Build()
if err != nil {
t.Fatal(err)
}
if content != "00020101021138540010A00000072701240006970418011062540463830208QRIBFTTA53037045802VN6304AB32" {
t.Fatalf("expect: %v, got: %v", "00020101021138540010A00000072701240006970418011062540463830208QRIBFTTA53037045802VN6304AB32", qr.AdditionalData.Reference)
}
}
func TestCreateDynamicVietQRCode(t *testing.T) {
log.Println("TestCreateVietQRCode")
qr, err := CreateVietQR(VietQROptions{
Consumer: Consumer{
BankBin: Banks[BIDVKey].Bin,
BankNumber: "6254046383",
},
Amount: "24000",
Purpose: "a cup of cofee",
})
if err != nil {
t.Fatal(err)
}
content, err := qr.Build()
if err != nil {
t.Fatal(err)
}
if content != "00020101021138540010A00000072701240006970418011062540463830208QRIBFTTA53037045405240005802VN62180814a cup of cofee6304C455" {
t.Fatalf("expect: %v, got: %v", "00020101021138540010A00000072701240006970418011062540463830208QRIBFTTA53037045405240005802VN62180814a cup of cofee6304C455", content)
}
}