ใหม่ PayNext Extra Installment QR
หัวข้อทั้งหมดในหน้านี้
PayNext Extra Installment QR
รับชำระเงินแบบผ่อนชำระแบบออฟไลน์จากผู้ใช้ TrueMoney Wallet ผ่านระบบ POS ของคุณ ด้วยวิธีการชำระเงิน PayNext Extra Installment QR
📋 ภาพรวม
| คุณสมบัติ | รายละเอียด |
|---|---|
| วิธีการชำระเงิน | PayNext Extra Installment QR |
| ประเภท source | installment_paynext_extra_qr |
| รูปแบบการชำระเงิน | offline |
| ประเทศที่รองรับ | ไทย |
| สกุลเงิน | THB |
| จำนวนเงินขั้นต่ำ | ไม่มีขั้นต่ำ |
| จำนวนเงินสูงสุด | ฿5,000.00 (500000) |
| API version ขั้นต่ำ | 2017-11-02 |
✅ วิธีเปิดใช้งาน PayNext Extra Installment QR
หากต้องการเปิดใช้งาน PayNext Extra Installment QR สำหรับบัญชีของคุณ ให้ส่งอีเมลขอใช้งานไปที่ support@omise.co คุณจะต้องอ่านและยอมรับข้อกำหนดและเงื่อนไขที่อัปเดตก่อนที่วิธีการชำระเงินนี้จะถูกเปิดใช้งาน
🔄 ขั้นตอนการชำระเงิน
PayNext Extra Installment QR ใช้รูปแบบ offline เมื่อสร้าง charge แล้ว ระบบ POS จะแสดงคิวอาร์โค้ดที่ลูกค้าสแกนด้วยแอป TrueMoney Wallet การอนุมัติเกิดขึ้นแบบออฟไลน์ทั้งหมด — ไม่มีการเปลี่ยนเส้นทางผ่านเบราว์เซอร์

สำคัญ: มีช่วงเวลาหมดอายุสองช่วงที่ต้องคำนึงถึง: - หมดอายุของ source: หากลูกค้าไม่สแกนคิวอาร์โค้ดภายในเวลาที่กำหนด source จะหมดอายุและสถานะ charge จะเปลี่ยนเป็น
expired- หมดอายุของ charge: หาก charge ไม่ถูกดำเนินการให้เสร็จสิ้นภายใน 1 วัน หลังจากสร้าง (ดูexpires_atใน charge response) charge จะหมดอายุโดยอัตโนมัติทั้งสองช่วงเวลานี้เป็นอิสระจากกัน ควรสร้าง logic การลองใหม่ให้รองรับทั้งสองกรณี: แสดงคิวอาร์โค้ดใหม่สำหรับ timeout การสแกน และถือว่าเป็นคำสั่งที่ถูกยกเลิกสำหรับการหมดอายุ 1 วัน
ขั้นตอนการชำระเงินมีดังนี้:
- ลูกค้าเลือก PayNext Extra Installment QR เป็นวิธีการชำระเงินที่ POS terminal
- ระบบ POS ของคุณสร้างและแสดงคิวอาร์โค้ด
- ลูกค้าเปิดแอป TrueMoney Wallet และสแกนคิวอาร์โค้ด
- ลูกค้าเลือกระยะเวลาผ่อนชำระและอัตราดอกเบี้ยที่ต้องการ
- สรุปการชำระเงินแสดงขึ้นเพื่อตรวจสอบ
- ลูกค้ายืนยันการชำระเงิน
⚙️ การติดตั้ง
หากต้องการรับชำระเงินด้วย PayNext Extra Installment QR ให้ดำเนินการตามขั้นตอนดังนี้:
- สร้าง source — สร้าง payment source ใหม่ โดยกำหนด
type: installment_paynext_extra_qrผ่าน Omise.js หรือ mobile SDK (iOS / Android) - สร้าง charge — สร้าง charge ใหม่โดยใช้ source identifier ที่ได้รับจากขั้นตอนที่ 1 charge response จะมีคิวอาร์โค้ดอยู่ด้วย
- แสดงคิวอาร์โค้ด — ดึงคิวอาร์โค้ดจาก
source.scannable_code.image.download_uriใน charge response และแสดงบน POS terminal - ตรวจสอบ charge — หลังจากได้รับ webhook event
charge.completeให้ดึงข้อมูล charge เพื่อยืนยันสถานะ (ไม่บังคับแต่แนะนำ)
ใช้ public key ในการสร้าง source (ฝั่งไคลเอนต์) ใช้ secret key ในการสร้าง charge (ฝั่งเซิร์ฟเวอร์)
หากต้องการสร้าง source และ charge บนเซิร์ฟเวอร์ทั้งคู่ สามารถรวมทั้งสองขั้นตอนเป็นคำขอ API เดียวโดยใช้ secret key ของคุณ
ขั้นตอนที่ 1 — สร้าง source
เมื่อลูกค้ายืนยันว่าต้องการชำระเงินด้วย PayNext Extra Installment QR ให้สร้าง source ใหม่พร้อม parameter ดังต่อไปนี้
| Parameter | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
amount |
integer | ใช่ | จำนวนเงินในหน่วยย่อย สูงสุด 500000 (฿5,000.00) ไม่มีขั้นต่ำ ดูวงเงิน |
currency |
string | ใช่ | ต้องเป็น THB |
type |
string | ใช่ | ต้องเป็น installment_paynext_extra_qr |
promotion_code |
string | ไม่ | รหัสส่งเสริมการขายที่ออกโดย TrueMoney |
ตัวอย่างต่อไปนี้แสดงการสร้าง PayNext Extra Installment QR source สำหรับ ฿500.00 (50000) แทนที่ omise_public_key / $OMISE_PUBLIC_KEY ด้วย public key สำหรับทดสอบที่พบในแดชบอร์ดของคุณ
ใน Omise.js,
typeจะถูกส่งเป็น argument แรกของcreateSource
Omise.js
Omise.setPublicKey(omise_public_key);
Omise.createSource('installment_paynext_extra_qr', {
"amount": 50000,
"currency": "THB"
}, function(statusCode, response) {
console.log(response);
});
cURL
curl https://api.omise.co/sources \
-u $OMISE_PUBLIC_KEY: \
-d "amount=50000" \
-d "currency=THB" \
-d "type=installment_paynext_extra_qr"
ตัวอย่าง response
{
"object": "source",
"id": "src_test_601oy3f2u9m8llki4eh",
"livemode": false,
"location": "/sources/src_test_601oy3f2u9m8llki4eh",
"amount": 50000,
"currency": "THB",
"flow": "offline",
"type": "installment_paynext_extra_qr",
"charge_status": "unknown",
"created_at": "2024-06-11T01:52:37Z",
"barcode": null,
"bank": null,
"email": null,
"installment_term": null,
"ip": "35.198.236.178",
"absorption_type": null,
"name": null,
"mobile_number": null,
"phone_number": null,
"platform_type": null,
"scannable_code": null,
"billing": null,
"shipping": null,
"items": [],
"references": null,
"provider_references": null,
"store_id": null,
"store_name": null,
"terminal_id": null,
"zero_interest_installments": null,
"receipt_amount": null,
"discounts": [],
"promotion_code": null
}
ฟิลด์ id (ขึ้นต้นด้วย src_) คือ source identifier ที่ใช้ในขั้นตอนถัดไป
ฟิลด์ response ที่สำคัญ
| ฟิลด์ | คำอธิบาย |
|---|---|
installment_term |
null เมื่อสร้าง source ลูกค้าจะเลือกระยะเวลาผ่อนชำระหลังสแกนคิวอาร์โค้ดในแอป TrueMoney Wallet ไม่ควรคาดหวังหรือตรวจสอบค่านี้ในขั้นตอนนี้ |
scannable_code |
null เมื่อสร้าง source คิวอาร์โค้ดจะปรากฏที่นี่เมื่อสร้าง charge แล้ว ดูการแสดงคิวอาร์โค้ด |
absorption_type |
ควบคุมว่าผู้ค้าหรือลูกค้าเป็นผู้รับภาระดอกเบี้ยการผ่อนชำระ null หมายความว่าใช้ค่าเริ่มต้นที่กำหนดในบัญชีของคุณ ติดต่อ support@omise.co หากต้องการเปลี่ยนแปลง |
charge_status |
แสดงสถานะของ charge ที่เชื่อมโยงกับ source นี้ unknown เมื่อสร้าง source; เปลี่ยนเป็น pending เมื่อสร้าง charge แล้ว |
ขั้นตอนที่ 2 — สร้าง charge
สร้าง charge โดยใช้ source identifier จากขั้นตอนที่ 1
| Parameter | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
amount |
integer | ใช่ | ต้องตรงกับ amount ของ source |
currency |
string | ใช่ | ต้องตรงกับ currency ของ source |
source |
string | ใช่ | id ของ source ที่ได้รับจากขั้นตอนที่ 1 |
return_uri |
string | ไม่ | URL สำหรับเปลี่ยนเส้นทางลูกค้าหลังการชำระเงินเสร็จสิ้น |
แทนที่ $OMISE_SECRET_KEY ด้วย secret key สำหรับทดสอบจากแดชบอร์ดของคุณ และแทนที่ $SOURCE_ID ด้วย id ของ source
cURL
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=50000" \
-d "currency=THB" \
-d "return_uri=http://example.com/orders/345678/complete" \
-d "source=$SOURCE_ID"
ตัวอย่าง response
{
"object": "charge",
"id": "chrg_test_601oy3hvu3uq3nq3tyd",
"location": "/charges/chrg_test_601oy3hvu3uq3nq3tyd",
"amount": 50000,
"currency": "THB",
"funding_currency": "THB",
"funding_amount": 50000,
"net": 48047,
"fee": 1825,
"fee_vat": 128,
"interest": 0,
"interest_vat": 0,
"refunded_amount": 0,
"transaction_fees": {
"fee_flat": "0.0",
"fee_rate": "3.65",
"vat_rate": "7.0"
},
"status": "pending",
"authorize_uri": "https://pay.omise.co/payments/pay2_test_601oy3hxhpyo26m91kh/authorize",
"return_uri": "http://example.com/orders/345678/complete",
"source": {
"object": "source",
"id": "src_test_601oy2ze4198tfx1qme",
"livemode": false,
"amount": 50000,
"currency": "THB",
"flow": "offline",
"type": "installment_paynext_extra_qr",
"charge_status": "pending",
"scannable_code": {
"object": "barcode",
"type": "qr",
"image": {
"object": "document",
"livemode": false,
"id": "docu_test_601oy3k3ijlgvs0a2d8",
"deleted": false,
"filename": "qrcode.png",
"location": "/charges/chrg_test_601oy3hvu3uq3nq3tyd/documents/docu_test_601oy3k3ijlgvs0a2d8",
"kind": "qr",
"download_uri": "https://api.omise.co/charges/chrg_test_601oy3hvu3uq3nq3tyd/documents/docu_test_601oy3k3ijlgvs0a2d8/downloads/9F489F5C90D7AD27",
"created_at": "2024-06-11T01:52:38Z"
}
},
"provider_references": {
"reference_number_1": "pay2_test_601oy3hxhpyo26m91kh",
"reference_number_2": null
}
},
"authorized": false,
"capturable": false,
"capture": true,
"paid": false,
"expired": false,
"reversed": false,
"reversible": false,
"refundable": false,
"partially_refundable": false,
"disputable": false,
"voided": false,
"can_perform_void": false,
"livemode": false,
"created_at": "2024-06-11T01:52:38Z",
"paid_at": null,
"expires_at": "2024-06-12T01:52:38Z"
}
ฟิลด์ response ที่สำคัญ
| ฟิลด์ | คำอธิบาย |
|---|---|
source.scannable_code.image.download_uri |
URL ของรูปภาพคิวอาร์โค้ดที่ต้องแสดงบน POS terminal ดึงและแสดงรูปภาพนี้ทันทีหลังสร้าง charge URL นี้ต้องยืนยันตัวตนด้วย secret key |
expires_at |
วันและเวลาที่ charge จะหมดอายุโดยอัตโนมัติหากยังไม่ดำเนินการ สำหรับ PayNext Extra Installment QR คือ 1 วัน หลังจากสร้าง |
source.provider_references.reference_number_1 |
หมายเลขอ้างอิงธุรกรรมที่ออกโดย TrueMoney ควรเก็บค่านี้ไว้เนื่องจากจำเป็นต้องใช้เมื่อแจ้งปัญหาหรือกระทบยอดกับ TrueMoney ส่วน reference_number_2 ไม่ได้ใช้สำหรับวิธีการชำระเงินนี้และจะเป็น null เสมอ |
net |
จำนวนเงินที่จะโอนเข้าบัญชีของคุณหลังหักค่าธรรมเนียมและภาษีมูลค่าเพิ่มแล้ว |
การสร้าง source และ charge ในคำขอเดียว
หากต้องการสร้าง source และ charge บนเซิร์ฟเวอร์ทั้งคู่ สามารถรวมเป็นคำขอ API เดียวโดยใช้ secret key ของคุณ
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=50000" \
-d "currency=THB" \
-d "return_uri=http://example.com/orders/345678/complete" \
-d "source[type]=installment_paynext_extra_qr"
ขั้นตอนที่ 3 — ดำเนินการ charge ให้เสร็จสิ้น
charge จะถูกสร้างโดยมีสถานะ status เป็น pending ส่วนต่อไปนี้อธิบายวิธีแสดงคิวอาร์โค้ด รับ webhook event และยืนยันสถานะสุดท้าย
ลำดับขั้นตอนการชำระเงิน
การอนุมัติ charge
ดึง URL คิวอาร์โค้ดจาก charge response และแสดงบน POS terminal ของคุณ:
charge
└── source
└── scannable_code
└── image
└── download_uri ← URL รูปภาพคิวอาร์โค้ด
ดึงรูปภาพจาก download_uri โดยใช้ secret key และแสดงบน POS terminal จากนั้นลูกค้าสแกนคิวอาร์โค้ดด้วยแอป TrueMoney Wallet เพื่อดำเนินการชำระเงิน
การทดสอบ: ในโหมดทดสอบ ให้ไปที่ charge ที่ต้องการในแดชบอร์ด Omise คลิก Actions และกำหนดสถานะ charge เป็น สำเร็จ หรือ ล้มเหลว ด้วยตนเอง ใช้วิธีนี้เพื่อตรวจสอบ webhook handler ก่อนนำขึ้น production
การรับ webhook เมื่อ charge เสร็จสิ้น
ตั้งค่า endpoint บนเซิร์ฟเวอร์ของคุณเพื่อรับ webhook events และลงทะเบียน endpoint นั้นในแดชบอร์ด Omise Omise จะส่ง event charge.complete เมื่อ charge ถึงสถานะสุดท้าย
การตรวจสอบสถานะ charge
หลังจากได้รับ webhook charge.complete ให้ดึงข้อมูล charge โดยใช้ id และยืนยันว่า status ใน charge ที่ดึงมาตรงกับ status ใน webhook event
| สถานะ | ความหมาย |
|---|---|
successful |
ได้รับการชำระเงินแล้ว |
failed |
การชำระเงินล้มเหลว ตรวจสอบ failure_code และ failure_message เพื่อดูรายละเอียด |
expired |
charge ไม่ถูกดำเนินการให้เสร็จสิ้นภายในเวลาที่กำหนด |
รหัสความล้มเหลวที่เป็นไปได้
| รหัสความล้มเหลว | คำอธิบาย |
|---|---|
failed_processing |
ความล้มเหลวในการประมวลผลการชำระเงินทั่วไป |
↩️ การยกเลิกและการคืนเงิน
- การยกเลิก (Void): charge ของ PayNext Extra Installment QR สามารถยกเลิกได้เฉพาะในวันเดียวกับที่อนุมัติธุรกรรมเท่านั้น
- การคืนเงิน (Refund): สามารถคืนเงินได้ภายใน 30 วัน หลังจากการชำระเงินสำเร็จ
ดูคำแนะนำการคืนเงินได้ที่เอกสาร Refunds API
📊 วงเงิน
| จำนวนเงิน (หน่วยย่อย) | จำนวนเงิน (บาท) | |
|---|---|---|
| ขั้นต่ำ | ไม่มี | ไม่มีขั้นต่ำ |
| สูงสุด | 500000 |
฿5,000.00 |
🔧 การแก้ไขปัญหา
สถานะ charge เป็น expired
มีสาเหตุสองประการ:
- timeout การสแกน: ลูกค้าไม่ได้สแกนคิวอาร์โค้ดภายในเวลาที่กำหนด ให้แสดงคิวอาร์โค้ดใหม่โดยสร้าง source และ charge ใหม่
- timeout 1 วันของ charge: charge ไม่ถูกดำเนินการให้เสร็จสิ้นภายใน 1 วันหลังสร้าง (ดู
expires_atใน charge response) โดยทั่วไปหมายความว่าเป็นคำสั่งที่ถูกยกเลิก ไม่จำเป็นต้องลองใหม่เว้นแต่ลูกค้าจะกลับมา
สถานะ charge เป็น failed พร้อม failure_code: failed_processing
เกิดความล้มเหลวในการประมวลผลทั่วไปจากฝั่ง TrueMoney ให้แจ้งลูกค้าลองชำระเงินใหม่อีกครั้ง หากปัญหายังคงอยู่ ติดต่อ support@omise.co
ลูกค้าถูกเปลี่ยนเส้นทางไปยัง return_uri แต่ charge ยังคงเป็น pending
อย่าพึ่งพาเฉพาะการเปลี่ยนเส้นทาง return_uri ในการตรวจสอบสถานะ charge เสมอรอ webhook event charge.complete และตรวจสอบสถานะ charge โดยดึงข้อมูลจาก API
คิวอาร์โค้ดไม่แสดง
ตรวจสอบว่าระบบ POS ของคุณดึงรูปภาพจาก source.scannable_code.image.download_uri ใน charge response ฟิลด์นี้จะเป็น null เมื่อสร้าง source และจะมีข้อมูลเฉพาะหลังสร้าง charge แล้วเท่านั้น นอกจากนี้ตรวจสอบว่าคำขอถูกยืนยันตัวตนด้วย secret key
จำนวนเงินถูกปฏิเสธพร้อม validation error
ตรวจสอบว่าจำนวนเงินไม่เกินสูงสุด 500000 (฿5,000.00) ไม่มีขั้นต่ำ นอกจากนี้ตรวจสอบว่าค่า amount และ currency ในคำขอ charge ตรงกับค่าใน source
ฟิลด์ promotion_code ไม่มีผล
รหัสส่งเสริมการขายออกโดย TrueMoney และต้องมีผลบังคับใช้อยู่ในขณะสร้าง source ติดต่อ TrueMoney โดยตรงเพื่อตรวจสอบว่ารหัสมีผลและสามารถใช้กับธุรกรรมของคุณได้
❓ คำถามที่พบบ่อย
PayNext Extra Installment QR รองรับประเทศและสกุลเงินใดบ้าง? PayNext Extra Installment QR รองรับเฉพาะประเทศไทยและประมวลผลการชำระเงินในสกุลเงินบาทไทย (THB) เท่านั้น
ลูกค้าต้องมีบัญชี TrueMoney Wallet หรือไม่? ใช่ ลูกค้าต้องมีบัญชี TrueMoney Wallet ที่ใช้งานอยู่เพื่อสแกนคิวอาร์โค้ดและดำเนินการชำระเงิน
ความแตกต่างระหว่าง PayNext Extra Installment QR และ PayNext Extra Installment App Redirection คืออะไร? PayNext Extra Installment QR ออกแบบสำหรับสภาพแวดล้อม POS แบบออฟไลน์ โดย terminal ของคุณแสดงคิวอาร์โค้ดที่ลูกค้าสแกน ส่วน PayNext Extra Installment App Redirection ออกแบบสำหรับการชำระเงินออนไลน์ โดยลูกค้าถูกเปลี่ยนเส้นทางไปยัง TrueMoney Wallet ผ่านเบราว์เซอร์หรือแอป charge แบบ QR หมดอายุใน 1 วัน ส่วน App Redirection หมดอายุใน 7 วัน
คิวอาร์โค้ดอยู่ที่ไหนใน API response?
URL รูปภาพคิวอาร์โค้ดอยู่ที่ source.scannable_code.image.download_uri ใน charge response จะเป็น null เมื่อสร้าง source และมีข้อมูลเฉพาะหลังสร้าง charge แล้ว
จะเกิดอะไรขึ้นหากลูกค้าไม่สแกนคิวอาร์โค้ดทันเวลา?
สถานะ charge จะเปลี่ยนเป็น expired ให้สร้าง source และ charge ใหม่เพื่อสร้างคิวอาร์โค้ดใหม่
สามารถใช้วิธีการชำระเงินนี้โดยไม่ใช้ Omise.js ได้หรือไม่? ได้ หากการสร้าง source และ charge เกิดขึ้นบนเซิร์ฟเวอร์ทั้งคู่ สามารถใช้วิธีการสร้างในคำขอเดียวด้วย secret key ได้ ดูการสร้าง source และ charge ในคำขอเดียว
สามารถคืนเงิน PayNext Extra Installment QR charge ได้หรือไม่? ได้ สามารถคืนเงินได้ภายใน 30 วันหลังการชำระเงินสำเร็จ การยกเลิก (void) ทำได้เฉพาะในวันเดียวกับที่ทำธุรกรรม ดูเอกสาร Refunds API
จะทดสอบการเชื่อมต่อนี้ได้อย่างไร? ใช้ public key และ secret key สำหรับทดสอบจากแดชบอร์ด Omise หลังสร้าง charge ให้ไปที่ charge นั้นในแดชบอร์ด คลิก Actions และกำหนดสถานะเป็น สำเร็จ หรือ ล้มเหลว ด้วยตนเอง
จะหา API key ได้ที่ไหน? ดูที่วิธีเข้าถึง Omise API keys
🔑 API keys
สำหรับข้อมูลเกี่ยวกับวิธีรับ public key และ secret key ดูที่วิธีเข้าถึง Omise API keys