-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathqrgenerator.go
89 lines (68 loc) · 1.74 KB
/
qrgenerator.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
/*
GoLang code created by Jirawat Harnsiriwatanakit https://github.com/kazekim
*/
package promptpayqr
import (
"flag"
"fmt"
"github.com/divan/qrlogo"
"github.com/skip2/go-qrcode"
"image"
"os"
)
func QRForTargetWithAmount(target, amount string) (*[]byte, error) {
qr := New()
payload := qr.GeneratePayload(target, &amount)
var png []byte
png, err := qrcode.Encode(payload, qrcode.Medium, 256)
if err != nil {
return nil, err
}
return &png, nil
}
func QRForBillPayment(billerID string, ref1 string, ref2 string, terminalID string, amount string) (*[]byte, error) {
qr := New()
payload := qr.GenerateBillPaymentPayload(billerID, ref1, ref2, &terminalID, &amount)
var png []byte
png, err := qrcode.Encode(payload, qrcode.Medium, 256)
if err != nil {
return nil, err
}
return &png, nil
}
func QRForTarget(target string) (*[]byte, error) {
qr := New()
payload := qr.GeneratePayload(target, nil)
var png []byte
png, err := qrcode.Encode(payload, qrcode.Medium, 256)
if err != nil {
return nil, err
}
return &png, nil
}
func QRWithPromptpayLogoForTargetWithAmount(target, amount string) (*[]byte, error) {
var (
input = flag.String("promptpay", "promptpay.png", "Prompt Pay Logo")
size = flag.Int("size", 256, "Image size in pixels")
)
qr := New()
payload := qr.GeneratePayload(target, &amount)
file, err := os.Open(*input)
if err != nil {
fmt.Println("Failed to open logo:", err)
os.Exit(1)
}
defer file.Close()
logo, _, err := image.Decode(file)
if err != nil {
fmt.Println("Failed to decode PNG with logo:", err)
os.Exit(1)
}
qrImage, err := qrlogo.Encode(payload, logo, *size)
if err != nil {
fmt.Println("Failed to encode QR:", err)
os.Exit(1)
}
qrBytes := qrImage.Bytes()
return &qrBytes, err
}