项目作者: pheerathach

项目描述 :
Thai QR PromptPay Generator
高级语言: Java
项目地址: git://github.com/pheerathach/promptpay.git
创建时间: 2019-07-04T16:01:25Z
项目社区:https://github.com/pheerathach/promptpay

开源协议:Apache License 2.0

下载


Thai QR PromptPay Generator

Codacy Badge

ไลบรารีช่วยสร้าง QR สำหรับรับชำระเงินด้วย PromptPay โดยสามารถสร้าง

  1. QR สำหรับบุคคลธรรมดารับโอนเงิน (Credit Transfer)
  2. QR สำหรับธุรกิจรับชำระเงิน (Bill Payment)

ไลบรารีนี้ต้องการ Java เวอร์ชัน 8 ขึ้นไป

การใช้งาน

  1. QR สำหรับบุคคลธรรมดารับโอนเงิน (Credit Transfer) Tag 29
  1. // รับชำระผ่าน PromptPay เบอร์ 081-234-5678 จำนวนเงิน: <ให้ผู้ชำระระบุ>
  2. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().mobileNumber("0812345678").build();
  3. // รับชำระผ่าน PromptPay เลขประจำตัวประชาชน 0-0000-00000-00-0 จำนวนเงิน: <ให้ผู้ชำระระบุ>
  4. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().nationalId("0000000000000").build();
  5. // รับชำระผ่าน PromptPay E-Wallet ID 000000000000000 จำนวนเงิน: <ให้ผู้ชำระระบุ>
  6. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().eWalletId("000000000000000").build();
  7. // รับชำระผ่าน PromptPay เบอร์ 081-234-5678 จำนวนเงิน: 10 บาท
  8. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().mobileNumber("0812345678").amount(new BigDecimal("10.00")).build();
  9. // รับชำระผ่าน PromptPay เลขประจำตัวประชาชน 0-0000-00000-00-0 จำนวนเงิน: 136.25 บาท
  10. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().nationalId("0000000000000").amount(new BigDecimal("136.25")).build();
  11. // รับชำระผ่าน PromptPay E-Wallet ID 000000000000000 จำนวนเงิน: 0.01 บาท
  12. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().staticQR().creditTransfer().eWalletId("000000000000000").amount(new BigDecimal("0.01")).build();
  1. QR สำหรับธุรกิจรับชำระเงิน (Bill Payment) Tag 30
  1. // รับชำระผ่าน PromptPay เลขประจำตัวผู้เสียภาษี 0000000000000 + 99 (SUFFIX 2 หลัก)
  2. // รหัสอ้างอิง 1: 15123141 รหัสอ้างอิง 2: 3654112 จำนวนเงิน: <ให้ผู้ชำระระบุ>
  3. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().billPayment().billerId("000000000000099").ref1("15123141").ref2("3654112").build();
  4. // รับชำระผ่าน PromptPay เลขประจำตัวผู้เสียภาษี 0000000000000 + 99 (SUFFIX 2 หลัก)
  5. // รหัสอ้างอิง 1: 15123141 รหัสอ้างอิง 2: 3654112 จำนวนเงิน: 200.00 บาท
  6. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().billPayment().billerId("000000000000099").ref1("15123141").ref2("3654112").amount(new BigDecimal("200.00")).build();
  7. // รับชำระผ่าน PromptPay เลขประจำตัวผู้เสียภาษี 0000000000000 + 99 (SUFFIX 2 หลัก)
  8. // รหัสอ้างอิง 1: 15123141 รหัสอ้างอิง 2: 3654112 รหัสอ้างอิง 3: ABCD จำนวนเงิน: 200.00 บาท
  9. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().billPayment().billerId("000000000000099").ref1("15123141").ref2("3654112").ref3("ABCD").amount(new BigDecimal("200.00")).build();
  10. // รับชำระผ่าน PromptPay เลขประจำตัวผู้เสียภาษี 0000000000000 + 99 (SUFFIX 2 หลัก)
  11. // รหัสอ้างอิง 1: 15123141 รหัสอ้างอิง 3: ABCD จำนวนเงิน: 100.00 บาท
  12. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().billPayment().billerId("000000000000099").ref1("15123141").ref3("ABCD").amount(new BigDecimal("100.00")).build();
  1. QR สำหรับธุรกิจรับชำระเงิน (Bill Payment) ตามมาตรฐานเดิมของธปท.
  1. // รับชำระแบบ Bill Payment เดิมตามธปท. เลขประจำตัวผู้เสียภาษี 0000000000000 + 99 (SUFFIX 2 หลัก)
  2. // รหัสอ้างอิง 1: 15123141 รหัสอ้างอิง 2: 3654112 จำนวนเงิน: <ให้ผู้ชำระระบุ>
  3. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().bot().billPayment().billerId("000000000000099").ref1("15123141").ref2("3654112").build();

ข้อพึงสังเกต

  • QR ที่ถูกสร้างขึ้นเพื่อให้ใช้ได้หลายครั้ง คือ staticQR()
  • QR ที่ถูกสร้างขึ้นเพื่อให้ใช้ได้แค่ครั้งเดียว คือ dynamicQR()

วิธีนำไปใช้

  1. นำเข้าไลบรารีผ่าน Maven โดยเพิ่มโค้ดดังกล่าวใน pom.xml
    1. <dependencies>
    2. ...
    3. <dependency>
    4. <groupId>com.github.pheerathach</groupId>
    5. <artifactId>promptpay</artifactId>
    6. <version>1.0.2</version>
    7. </dependency>
    8. </dependencies>
  2. เรียกใช้ไลบรารี

    1. ThaiQRPromptPay qr = new ThaiQRPromptPay.Builder().dynamicQR().creditTransfer().mobileNumber("0812345678").amount(new BigDecimal("100.00")).build();

    2.1. หากต้องการเนื้อหาสำหรับนำไปสร้างรูป QR

    1. String content = qr.generateContent();

    2.2. หากต้องการให้ไลบรารีสร้างรูป QR ให้

    2.2.1. เป็นไฟล์ PNG

    1. qr.draw(300, 300, new File("D:\\qr.png")); // width 300 x height 300 pixels | save to D:\qr.png

    2.2.2. เป็น Base64 String (PNG)

    1. qr.drawToBase64(300, 300); // width 300 x height 300 pixels

    2.2.3. เป็น byte[]

    1. qr.drawToByteArray(400, 400); // width 400 x height 400 pixels

เอกสารอ้างอิง

  • มาตรฐานการรับชำระเงินด้วย QR ของธนาคารแห่งประเทศไทย

https://www.bot.or.th/Thai/FIPCS/Documents/FPG/2562/ThaiPDF/25620084.pdf

  • ZXing 3.4.0

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