Point of Sale QR30 Integration - SCB
The Point of sale QR30 module provides integration with SCB's qr code payment service via Thai QR Code Tag 30 (QR 30). It allows the POS system to validate a customer payment with the callback url from the bank when a customer pays by scanning a QR code with a Thai bank's mobile application.
This module collects the following data from the bank. Please check the PDPA law.
- Transaction id
- Payer's bank
- Payer account name
- Payer account number
Supported features
- Direct payment flow
- Automatic payment confirmation
- Manual payment confirmation
- Payment limits (min-max)
- Payment fee
- QR code on Customer Display
Technical details
API: SCB Standard Checkout (https://developer.scb.co.th/#/documents/documentation/qr-payment/thai-qr.html)
SDK: SCB Development App (https://developer.scb.co.th/#/documents/documentation/basics/getting-started.html)
This module requires API key and secret from SCB. You should register with SCB to get them.
When the Send button is clicked, a server-to-server API call is made to create the qr code. When the payment is made, the system receives notification from SCB via a callback endpoint(/pos_qr/notification) and the payment is confirmed automatically.
The payment confirmation is sent to a web client via webhook. Make sure the proxy allows this.
Compatibility
- Odoo 18
Configuration
First, you need to create a payment for POS. To configure this module, you need to:
Go to Point of Sale > Configuration > Payment Methods > New
Original setup
- Set the method name
- Assign a journal
- Integration: Select "Bank App (QR Code)"
- QR Code Format: Select "QR Tag 30"
Additional setup
- "Bank" is fixed as SCB.
- "Name" can be shop name or any text you want to display with the QR code.
- "Enable Callback" is to allow callback from SCB.
"Callback URL" is the callback endpoint in Odoo system. Copy the generated value and put it in SCB configuration.
- "Biller ID" is provided by SCB in merchant profile menu.
"Ref 3 Prefix" is also in merchant profile.
"API Key" is from Application menu.
"API Secret" is also from application.
"Base url" is the url prefix to the endpoints. The default value is for sandbox environment.
"Customer Fee" is the service charge for this payment. Set it as you'd like.
"Fix Payment Product" is the product to associate with "Customer Fee". You can create a new service type product. This product appears in the receipt.
(Optional) Click Test Connection to test the configuration.
Add this new payment method to your Point of Sale shop.
Usage
To use this payment,
After checking out, select the payment method associated with QR tag 30 and click send.
The qrcode popup will appears.
After the payment is confirmed, the system will automatically navigate to receipt screen.
- User can hide the popup and process another order while waiting for payment. In this case, the payment is marked as paid and the user can click on "Validate" to proceed to receipt screen.
- User can confirm the payment manually by clicking on the "Manually confirm payment" button.
The difference of closing and cancel button in qrcode popup.
- Closing popup with (X) in the top right corner is just hiding the popup. You can reopen it with the same QR code data. Customer can still pay with the same qrcode.
- Cancel Payment button however, voids the qr code. If the user make a payment, it does NOT register within the system. You can generate a new QR code.
To view payment history,
Go to Point of Sale > Orders > Payment
Here you can see a list of payments made group by their payment method
Click to view full information
Module history
18.0
- Released
Testing instructions
Payments must be made using a separate sandbox account (https://developer.scb.co.th/#/management/apps).
Read more at https://developer.scb.co.th/#/documents.
Bug Report
You may report issues in github (https://github.com/ncharlie/pos_qr30/issues).
Please log in to comment on this module
Report comment
Any abuse of this reporting system will be penalizedThere are no ratings yet!
ต้องเสียค่าบริการรายเดือนหรือไม่ครับ.
Re:
ไม่มีค่าบริการสำหรับการใช้งาน module ครับ แต่ผู้ใช้ต้องติดต่อธนาคารเพื่อขอเชื่อมต่อ API ซึ่งอาจจะมีค่าบริการในส่วนของธนาคารครับ