Thai QR PromptPay Generator
ไลบรารีช่วยสร้าง QR สำหรับรับชำระเงินด้วย PromptPay โดยสามารถสร้าง
- QR สำหรับบุคคลธรรมดารับโอนเงิน (Credit Transfer)
- QR สำหรับธุรกิจรับชำระเงิน (Bill Payment)
ไลบรารีนี้ต้องการ Java เวอร์ชัน 8 ขึ้นไป
การใช้งาน
- QR สำหรับบุคคลธรรมดารับโอนเงิน (Credit Transfer) Tag 29
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().mobileNumber("0812345678").build();
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().nationalId("0000000000000").build();
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().eWalletId("000000000000000").build();
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().mobileNumber("0812345678").amount(new BigDecimal("10.00")).build();
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().nationalId("0000000000000").amount(new BigDecimal("136.25")).build();
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().eWalletId("000000000000000").amount(new BigDecimal("0.01")).build();
- QR สำหรับธุรกิจรับชำระเงิน (Bill Payment) Tag 30
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().billPayment().billerId("000000000000099").ref1("15123141").ref2("3654112").build();
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().billPayment().billerId("000000000000099").ref1("15123141").ref2("3654112").amount(new BigDecimal("200.00")).build();
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().billPayment().billerId("000000000000099").ref1("15123141").ref2("3654112").ref3("ABCD").amount(new BigDecimal("200.00")).build();
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().billPayment().billerId("000000000000099").ref1("15123141").ref3("ABCD").amount(new BigDecimal("100.00")).build();
- QR สำหรับธุรกิจรับชำระเงิน (Bill Payment) ตามมาตรฐานเดิมของธปท.
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().bot().billPayment().billerId("000000000000099").ref1("15123141").ref2("3654112").build();
ข้อพึงสังเกต
- QR ที่ถูกสร้างขึ้นเพื่อให้ใช้ได้หลายครั้ง คือ staticQR()
- QR ที่ถูกสร้างขึ้นเพื่อให้ใช้ได้แค่ครั้งเดียว คือ dynamicQR()
วิธีนำไปใช้
- นำเข้าไลบรารีผ่าน Maven โดยเพิ่มโค้ดดังกล่าวใน pom.xml
<dependencies>
...
<dependency>
<groupId>com.github.pheerathach</groupId>
<artifactId>promptpay</artifactId>
<version>1.0.1</version>
</dependency>
</dependencies>
- เรียกใช้ไลบรารี
ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().creditTransfer().mobileNumber("0812345678").amount(new BigDecimal("100.00")).build();
2.1. หากต้องการเนื้อหาสำหรับนำไปสร้างรูป QR
String content = qr.generateContent();
2.2. หากต้องการให้ไลบรารีสร้างรูป QR ให้
2.2.1. เป็นไฟล์ PNG
qr.draw(300, 300, new File("D:\\qr.png"));
2.2.2. เป็น Base64 String (PNG)
qr.drawToBase64(300, 300);
2.2.3. เป็น byte[]
qr.drawToByteArray(400, 400);
เอกสารอ้างอิง
- มาตรฐานการรับชำระเงินด้วย QR ของธนาคารแห่งประเทศไทย
https://www.bot.or.th/Thai/FIPCS/Documents/FPG/2562/ThaiPDF/25620084.pdf
https://github.com/zxing/zxing
- Apache Commons Codec 1.12
https://commons.apache.org/proper/commons-codec/
- ขอขอบคุณ คุณ thedayofcondor สำหรับ method ในการหา CRC16
https://stackoverflow.com/questions/13209364/convert-c-crc16-to-java-crc16/13209435