ใหม่ 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 การอนุมัติเกิดขึ้นแบบออฟไลน์ทั้งหมด — ไม่มีการเปลี่ยนเส้นทางผ่านเบราว์เซอร์

PayNext Extra Installment QR – ขั้นตอนการชำระเงิน

สำคัญ: มีช่วงเวลาหมดอายุสองช่วงที่ต้องคำนึงถึง: - หมดอายุของ source: หากลูกค้าไม่สแกนคิวอาร์โค้ดภายในเวลาที่กำหนด source จะหมดอายุและสถานะ charge จะเปลี่ยนเป็น expired - หมดอายุของ charge: หาก charge ไม่ถูกดำเนินการให้เสร็จสิ้นภายใน 1 วัน หลังจากสร้าง (ดู expires_at ใน charge response) charge จะหมดอายุโดยอัตโนมัติ

ทั้งสองช่วงเวลานี้เป็นอิสระจากกัน ควรสร้าง logic การลองใหม่ให้รองรับทั้งสองกรณี: แสดงคิวอาร์โค้ดใหม่สำหรับ timeout การสแกน และถือว่าเป็นคำสั่งที่ถูกยกเลิกสำหรับการหมดอายุ 1 วัน

ขั้นตอนการชำระเงินมีดังนี้:

  1. ลูกค้าเลือก PayNext Extra Installment QR เป็นวิธีการชำระเงินที่ POS terminal
  2. ระบบ POS ของคุณสร้างและแสดงคิวอาร์โค้ด
  3. ลูกค้าเปิดแอป TrueMoney Wallet และสแกนคิวอาร์โค้ด
  4. ลูกค้าเลือกระยะเวลาผ่อนชำระและอัตราดอกเบี้ยที่ต้องการ
  5. สรุปการชำระเงินแสดงขึ้นเพื่อตรวจสอบ
  6. ลูกค้ายืนยันการชำระเงิน

⚙️ การติดตั้ง

หากต้องการรับชำระเงินด้วย PayNext Extra Installment QR ให้ดำเนินการตามขั้นตอนดังนี้:

  1. สร้าง source — สร้าง payment source ใหม่ โดยกำหนด type: installment_paynext_extra_qr ผ่าน Omise.js หรือ mobile SDK (iOS / Android)
  2. สร้าง charge — สร้าง charge ใหม่โดยใช้ source identifier ที่ได้รับจากขั้นตอนที่ 1 charge response จะมีคิวอาร์โค้ดอยู่ด้วย
  3. แสดงคิวอาร์โค้ด — ดึงคิวอาร์โค้ดจาก source.scannable_code.image.download_uri ใน charge response และแสดงบน POS terminal
  4. ตรวจสอบ 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 และยืนยันสถานะสุดท้าย

ลำดับขั้นตอนการชำระเงิน

sequenceDiagram participant Customer as ลูกค้า participant OmiseJS as OmiseJS participant Merchant as ผู้ค้า participant OmiseAPI as OmiseAPI participant TrueMoney as TrueMoney Customer->>OmiseJS: ส่งรายละเอียดการชำระเงิน OmiseJS->>OmiseAPI: ขอสร้าง source OmiseAPI-->>OmiseJS: ส่งคืน source OmiseJS->>Merchant: ส่ง source ให้ผู้ค้า Merchant->>OmiseAPI: ขอสร้าง charge OmiseAPI-->>Merchant: ส่ง charge.create webhook OmiseAPI-->>Merchant: ส่งคืน charge พร้อมคิวอาร์โค้ด Merchant->>Customer: แสดงคิวอาร์โค้ดบน POS terminal Customer->>TrueMoney: สแกนคิวอาร์โค้ดและยืนยันการชำระเงิน TrueMoney-->>OmiseAPI: ส่งผลการชำระเงิน OmiseAPI-->>Merchant: ส่ง charge.complete webhook Merchant-->>Customer: ส่งผลการชำระเงิน

การอนุมัติ 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

📖 เอกสารที่เกี่ยวข้อง

เว็ปไซต์นี้มีการใช้คุกกี้เพื่อวิเคราะห์การใช้และปรับการใช้งานให้เหมาะกับท่าน เมื่อกดยอมรับหรือยังคงเข้าชมเว็บไซต์ต่อ เราถือว่าท่านยินยอมในการใช้งานคุกกี้ของเว็บไซต์ อ่านนโยบายความเป็นส่วนตัว