-
Notifications
You must be signed in to change notification settings - Fork 7
/
payment.go
96 lines (72 loc) · 2.23 KB
/
payment.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
/*
Package for creating QR codes for payments.
Short Payment Descriptor format and EPC QR Code (SEPA) format is supported.
- Generating QR code image for Short Payment Descriptor format
import "github.com/dundee/qrpay"
p := qrpay.NewSpaydPayment()
p.SetIBAN("CZ5855000000001265098001")
p.SetAmount("10.8")
p.SetDate(time.Date(2021, 12, 24, 0, 0, 0, 0, time.UTC))
p.SetMessage("M")
p.SetRecipientName("go")
p.SetNofificationType('E')
p.SetNotificationValue("[email protected]")
p.SetExtendedAttribute("vs", "1234567890")
qrpay.SaveQRCodeImageToFile(p, "qr-payment.png")
- Generating QR code image for EPC QR Code
import "github.com/dundee/qrpay"
p := qrpay.NewEpcPayment()
p.SetIBAN("CZ5855000000001265098001")
p.SetAmount("10.8")
p.SetMessage("M")
p.SetRecipientName("go")
qrpay.SaveQRCodeImageToFile(p, "qr-payment.png")
QR code image encoding uses https://github.com/skip2/go-qrcode
- Getting QR code content for Short Payment Descriptor format
import "github.com/dundee/qrpay"
p := qrpay.NewSpaydPayment()
p.SetIBAN("CZ5855000000001265098001")
p.SetAmount("108")
fmt.Println(qrpay.GenerateString())
// Output: SPD*1.0*ACC:CZ5855000000001265098001*AM:108*
*/
package qrpay
import (
"github.com/dundee/qrpay/epc"
"github.com/dundee/qrpay/spayd"
qrcode "github.com/skip2/go-qrcode"
)
type Payment interface {
SetIBAN(string) error
SetBIC(string) error
SetAmount(value string) error
SetCurrency(value string) error
SetSenderReference(value string) error
SetRecipientName(value string) error
SetMessage(value string) error
GetErrors() map[string]error
GenerateString() (string, error)
}
func NewSpaydPayment() *spayd.SpaydPayment {
return spayd.NewSpaydPayment()
}
func NewEpcPayment() *epc.EpcPayment {
return epc.NewEpcPayment()
}
func SaveQRCodeImageToFile(payment Payment, path string) error {
content, err := payment.GenerateString()
if err != nil {
return err
}
return qrcode.WriteFile(content, qrcode.Medium, 400, path)
}
func GetQRCodeImage(payment Payment) ([]byte, error) {
content, err := payment.GenerateString()
if err != nil {
return nil, err
}
return qrcode.Encode(content, qrcode.Medium, 400)
}
// check validity
var _ Payment = (*spayd.SpaydPayment)(nil)
var _ Payment = (*epc.EpcPayment)(nil)