การเชื่อมต่อแบบ Redirect
หัวข้อทั้งหมดในหน้านี้
ระบบผ่อนชำระช่วยแบ่งการชำระเงินค่าสินค้าหรือบริการออกเป็นงวดย่อยๆ เมื่อมีรายการผ่อนชำระเกิดขึ้นฝั่งร้านค้าจะได้รับเงินเต็มจำนวน ส่วนผู้ซื้อสามารถเลือกแบ่งชำระได้สูงสุด 36 เดือนขึ้นอยู่กับเงื่อนไขของแต่ละธนาคาร โดยจะเป็นการแบ่งชำระยอดเท่าๆ กันทุกเดือนและกำหนดยอดขั้นต่ำ 2,000 บาทต่อรายการ
การเปิดรับชำระเงิน
- ประเทศที่รองรับ: ประเทศไทย, มาเลเซีย
- API เวอร์ชันล่าสุดที่รองรับ:
2017-11-02
ร้านค้าที่ต้องการเปิดใช้ระบบ ผ่อนชำระ กรุณาส่งอีเมลมาที่ support@opn.ooo ทางทีมงานโอมิเซะจะส่งข้อกำหนดและเงื่อนไขการใช้บริการให้ร้านค้าได้พิจารณาและลงลายมือชื่อก่อนเปิดใช้งานจริง
บัตรที่รองรับการผ่อนชำระ
ไทย
บัตรเครดิต | Source type |
ระยะเวลาผ่อนชำระ (เดือน) | ขั้นต่ำต่อเดือน (บาท) |
---|---|---|---|
ธนาคารกรุงศรี | installment_bay |
3, 4, 6, 9, 10 | 500 |
ธนาคารกรุงเทพ | installment_bbl |
4, 6, 8, 9, 10 | 500 |
กรุงศรีเฟิร์สช้อยส์ | installment_first_choice |
3, 4, 6, 9, 10, 12, 18, 24, 36 | 300 |
ธนาคารกสิกร | installment_kbank |
3, 4, 6, 10 | 300 |
ธนาคารกรุงไทย | installment_ktc |
3, 4, 5, 6, 7, 8, 9, 10 | 300 |
ธนาคารไทยพาณิชย์ | installment_scb |
3, 4, 6, 9, 10 | 500 |
ธนาคารยูโอบี | installment_uob |
3, 4, 6, 10 | 500 |
ธนาคารทหารไทยธนชาต | installment_ttb |
3, 4, 6, 10 | 500 |
มาเลเซีย
บัตรเครดิต | Source type | ระยะเวลาผ่อนชำระ (เดือน) | ยอดชำระขั้นต่ำ (MYR) |
---|---|---|---|
Maybank | installment_mbb | 6 | 500 |
12 | 1000 | ||
18 | 1500 | ||
24 | 2000 |
สำหรับรายการผ่อนชำระที่เกิดขึ้นในมาเลเซีย ร้านค้าจะเป็นผู้รับภาระดอกเบี้ยทั้งหมด
ขั้นตอนการชำระเงินผ่านระบบผ่อนชำระ
ในขั้นตอนการชำระเงิน ผู้ซื้อที่เลือกแบ่งชำระจะถูกส่งไปที่หน้าเว็บไซต์หรือแอปพลิเคชันของทางธนาคารเพื่อยืนยันยอดชำระและทำรายการ
เมื่อผู้ซื้อเลือกจ่ายแบบผ่อนชำระจะถูกส่งไปยังหน้าเว็บไซต์ของธนาคารโดยอัตโนมัติ
จำนวนเงินและหมายเลขอ้างอิงต่างๆ ของผู้ซื้อจะถูกกรอกอัตโนมัติ ผู้ซื้อเพียงต้องตรวจทานข้อมูลก่อนยืนยันรายการเท่านั้น เมื่อทำรายการสำเร็จผู้ซื้อจะถูกส่งกลับมาที่หน้าเว็บไซต์ของร้านค้าอีกครั้ง
การตั้งค่าผู้รับภาระดอกเบี้ย
ฝ่ายใดฝ่ายหนึ่งระหว่างร้านค้ากับผู้ซื้อจะต้องเป็นผู้รับภาระดอกเบี้ยสำหรับรายการแบบผ่อนชำระ กรณีที่เป็นการผ่อนชำระแบบ 0% แปลว่าร้านค้าเป็นผู้รับภาระดอกเบี้ยแทนผู้ซื้อ
การตั้งค่าพื้นฐาน
ร้านค้าสามารถตั้งค่าให้ฝ่ายร้านค้าหรือฝ่ายผู้ซื้อเป็นผู้รับภาระดอกเบี้ยได้จากแดชบอร์ด และสามารถปรับเปลี่ยนได้ตามรายการ
การตั้งค่าตามรายการ
ร้านค้าสามารถปรับแปลี่ยนการตั้งค่าของผู้รับภาระดอกเบี้ยในรายการผ่อนชำระได้โดยการส่ง boolean parameter zero_interest_installments
ในทั้ง source และ การสร้าง charge
เมื่อตั้งค่าเป็น true
ฝ่ายร้านค้าจะเป็นผู้รับภาระดอกเบี้ย ในทางกลับกัน ถ้าตั้งค่าเป็น false
ผู้ซื้อจะเป็นผู้รับภาระดอกเบี้ย หากการตั้งค่าไม่ได้มีการปรับเปลี่ยนระบบจะใช้ผู้รับภาระดั้งเดิมในการรับภาระดอกเบี้ย
ค่าของตัวแปรใน source และ การสร้าง charge จะต้องมีค่าตรงกัน
ในกรณีที่มีการ charge จาก source โดยตรง ให้ส่ง parameter นี้ตั้งแต่การสร้าง charge
การติดตั้งใช้งาน
ในการสร้างรายการรับชำระเงินผ่านผ่อนชำระ ให้ร้านค้าส่งคำสั่ง API ดังนี้
- สร้าง payment source (
type
:installment_bay
,installment_bbl
,installment_first_choice
,installment_kbank
,installment_ktc
,installment_scb
,installment_uob
,installment_mbb
หรือinstallment_ttb
) โดยใช้ Omise.js, omise-ios หรือ omise-android - สร้าง charge โดยใช้ source จากขั้นตอนแรก
- เมื่อผู้ซื้อทำรายการสำเร็จและร้านค้าได้รับ webhook event หรือ
charge.complete
แล้ว เราแนะนำให้ตรวจสอบสถานะรายการด้วยตนเองอีกครั้งเพื่อความแม่นยำ
การสร้าง source เพื่อรับชำระเงินผ่านผ่อนชำระ จะเกิดขึ้นในฝั่งของผู้ซื้อ (client-side) เช่นบนเว็บไซต์หรือโทรศัพท์มือถือของผู้ซื้อ ร้านค้าจะต้องใช้ public key
ส่วนการสร้างรายการ (charge) เพื่อรับชำระเงินผ่านผ่อนชำระ จะเกิดขึ้นในฝั่งของร้านค้า (server-side) ร้านค้าจะต้องใช้ secret key
หมายเหตุ: หากมีความจำต้องสร้างทั้งรายการและ source ในฝั่งร้านค้า (server-side) สามารถทำพร้อมกันได้เลยโดยการส่งคำสั่ง API เพียงครั้งเดียว และใช้งาน secret key
การสร้าง source
เมื่อผู้ซื้อเลือกชำระเงินผ่านช่องทางนี้ ให้ร้านค้าสร้าง source ผ่าน source API โดยกำหนด amount
, currency
, installment_term
, และ type
Parameter | Type | Description |
---|---|---|
amount |
integer | (required) See Limits |
currency |
string | (required) THB |
installment_term |
integer | (required) Valid installment term length in months |
type |
string | (required) Valid installment source type |
zero_interest_installments |
string | (optional) Whether customer or merchant absorbs interest. true when merchant absorbs interest |
ตัวอย่างด้านล่างนี้เป็นการสร้าง source สำหรับรายการ ผ่อนชำระ จำนวน ฿4,000
ให้แทนค่าของ omise_public_key
และ $OMISE_PUBLIC_KEY
ด้วย test public key ของร้านค้าซึ่งสามารถคัดลอกได้จาก แดชบอร์ด
หากใช้ Omise.js parameter
type
เป็นตัวแปรที่จำเป็นของฟังก์ชันcreateSource
Omise.setPublicKey(omise_public_key);
Omise.createSource('installment_kbank', {
"amount": 400000,
"currency": "THB",
"installment_term": 4
}, function(statusCode, response) {
console.log(response)
});
หากร้านค้าต้องการทดสอบให้สร้าง request โดยใช้ curl
curl https://api.omise.co/sources \
-u $OMISE_PUBLIC_KEY: \
-d "amount=400000" \
-d "currency=THB" \
-d "type=installment_kbank" \
-d "installment_term=4"
{
"object": "source",
"id": "src_test_5m031pg0fiqmhpq3clb",
"livemode": false,
"location": "/sources/src_test_5m031pg0fiqmhpq3clb",
"amount": 400000,
"barcode": null,
"created_at": "2020-11-26T09:34:44Z",
"currency": "THB",
"email": null,
"flow": "redirect",
"installment_term": 4,
"name": null,
"mobile_number": null,
"phone_number": null,
"scannable_code": null,
"references": null,
"store_id": null,
"store_name": null,
"terminal_id": null,
"type": "installment_kbank",
"zero_interest_installments": true,
"charge_status": "unknown"
}
ตัวแปรของ id
คือ source identifier (เริ่มต้นด้วย src
)
การสร้างรายการรับชำระเงิน
สร้างรายการรับชำระเงินโดยระบุ parameter return_uri
, source
, amount
และ currency
return_uri
จะเป็นตำแหน่งบนเว็บไซต์ของร้านค้าที่ผู้ซื้อจะถูกส่งไปเมื่อยืนยันรายการสำเร็จsource
จะเป็นตัวกำหนด source identifieramount
และcurrency
จะต้องมีค่าตรงกับamount
และcurrency
ของ source
ตัวอย่างด้านล่างนี้แสดงการสร้างรายการรับชำระเงินผ่าน ขึ้นใหม่โดยใช้ curl
ในการสร้างรายการให้ร้านค้าแทน $OMISE_SECRET_KEY
ด้วย test secret key ของร้านค้าซึ่งสามารถคัดลอกได้จากแดชบอร์ด และแทน $SOURCE_ID
ด้วย id
ของ source
สำหรับรายการผ่อนชำระ ร้านค้าจะต้องส่งข้อมูล parameter เหล่านี้มาด้วย:
zero_interest_installments
จำนวนจะต้องตรงกันกับจำนวนที่ระบุใน source
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "source=$SOURCE_ID" \
-d "amount=400000" \
-d "currency=THB" \
-d "return_uri=https://example.com/orders/345678/complete"
{
"object": "charge",
"id": "chrg_test_5m031pj163buinvqwd0",
"location": "/charges/chrg_test_5m031pj163buinvqwd0",
"amount": 400000,
"net": 373250,
"fee": 14600,
"fee_vat": 1022,
"interest": 10400,
"interest_vat": 728,
"funding_amount": 400000,
"refunded_amount": 0,
"authorized": false,
"capturable": false,
"capture": true,
"disputable": false,
"livemode": false,
"refundable": false,
"reversed": false,
"reversible": false,
"voided": false,
"paid": false,
"expired": false,
"platform_fee": {
"fixed": null,
"amount": null,
"percentage": null
},
"currency": "THB",
"funding_currency": "THB",
"ip": null,
"refunds": {
"object": "list",
"data": [],
"limit": 20,
"offset": 0,
"total": 0,
"location": "/charges/chrg_test_5m031pj163buinvqwd0/refunds",
"order": "chronological",
"from": "1970-01-01T00:00:00Z",
"to": "2020-11-26T09:34:45Z"
},
"link": null,
"description": null,
"metadata": {},
"card": null,
"source": {
"object": "source",
"id": "src_test_5m031p75udwelu4t1l5",
"livemode": false,
"location": "/sources/src_test_5m031p75udwelu4t1l5",
"amount": 400000,
"barcode": null,
"created_at": "2020-11-26T09:34:43Z",
"currency": "THB",
"email": null,
"flow": "redirect",
"installment_term": 4,
"name": null,
"mobile_number": null,
"phone_number": null,
"scannable_code": null,
"references": null,
"store_id": null,
"store_name": null,
"terminal_id": null,
"type": "installment_kbank",
"zero_interest_installments": true,
"charge_status": "pending"
},
"schedule": null,
"customer": null,
"dispute": null,
"transaction": null,
"failure_code": null,
"failure_message": null,
"status": "pending",
"authorize_uri": "https://pay.omise.co/offsites/ofsp_test_5m031pj6bv7t44quvnc/pay",
"return_uri": "https://example.com/orders/345678/complete",
"created_at": "2020-11-26T09:34:44Z",
"paid_at": null,
"expires_at": "2020-12-03T09:34:44Z",
"expired_at": null,
"reversed_at": null,
"zero_interest_installments": true,
"branch": null,
"terminal": null,
"device": null
}
การสร้าง source และรายการรับชำระเงิน
ร้านค้าสามารถสร้างทั้ง source และ รายการรับชำระเงิน (charge) ผ่านการเรียกใช้ API เพียงครั้งเดียว
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=400000" \
-d "currency=THB" \
-d "return_uri=http://example.com/orders/345678/complete" \
-d "source[type]=installment_kbank" \
-d "source[installment_term]=4"
การสร้าง source และ charge โดยฝ่ายผู้ซื้อเป็นผู้รับภาระดอกเบี้ย
ร้านค้าสามารถปรับเปลี่ยนการตั้งค่าของผู้รับภาระดอกเบี้ยได้โดยการส่ง parameter zero_interest_installments สามารถดูว่าใครเป็นผู้รับภาระได้ดอกเบี้ยได้ที่การตั้งค่าผู้รับภาระดอกเบี้ย
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=400000" \
-d "currency=THB" \
-d "return_uri=http://example.com/orders/345678/complete" \
-d "zero_interest_installments=false" \
-d "source[type]=installment_kbank" \
-d "source[installment_term]=4"
สร้างรายการสำเร็จ
เมื่อร้านค้าสร้างรายการรับชำระเงินขึ้นแล้ว จะพบว่าสถานะของรายการแสดงเป็น pending
หรือ status==pending
สถานะของรายการรับชำระเงินสามารถเป็นได้ทั้ง successful
, failed
และ expired
ในส่วนต่อไปเราจะอธิบายวิธีอนุมัติรายการ, การรับ event แจ้งเตือนเมื่อรายการเสร็จสิ้นผ่าน webhook และการตรวจสอบสถานะรายการ
ภาพด้านล่างนี้แสดงให้เห็นถึงขั้นตอนทั้งหมดในการรับชำระเงินแต่ละรายการ
ในโหมดทดสอบร้านค้าสามารถเข้า URL เพื่อปรับสถานะรายการให้สำเร็จหรือไม่สำเร็จได้ด้วยตนเอง
เมื่อผู้ซื้อยืนยันการทำรายการแล้วจะถูกส่งไปยังหน้าที่ร้านค้าระบุเป็น return_uri
เอาไว้
การรับ event แจ้งเตือนรายการสำเร็จ
ร้านค้าสามารถรับการแจ้งเตือนเมื่อมีการทำรายการเสร็จสิ้นโดยใช้งาน webhook events
ในการติดตั้งให้ร้านค้ากำหนดตำแหน่งบนเซิร์ฟเวอร์เพื่อรับ webhook events และเพิ่มตำแหน่งเดียวกันนี้เป็น webhook endpoint บนแดชบอร์ด
เมื่อมีรายการเสร็จสิ้นระบบจะส่ง POST request ไปยัง endpoint นี้ พร้อมทั้งแนบสถานะการตอบกลับของรายการนั้นๆ ไปด้วย
ตัวแปรหลักหรือ key
สำหรับ event object ประกอบไปด้วย charge.complete
และตัวแปร data
ที่มี charge object
อ่านเพิ่มเติมได้ที่ Events API
การตรวจสอบสถานะรายการ
เมื่อได้รับ event ของรายการที่เสร็จสิ้นแล้ว ร้านค้าสามารถตรวจสอบสถานะรายการหรือ status
โดยใช้ Charge API
หากค่าของ charge.status
เป็น successful
หมายถึงว่ารายการรับชำระเงินสำเร็จ หากค่าของ charge.status
เป็น failed
รายการรับชำระเงินนั้นไม่สำเร็จ ร้านค้าสามารถตรวจสอบ failure_code
และ failure_message
ได้ใน charge object เพื่ออ่านคำอธิบายเพิ่มเติม
สาเหตุขัดข้องที่อาจเกิดขึ้นได้มีดังนี้
รหัสข้อขัดข้อง | รายละเอียด |
---|---|
insufficient_balance |
วงเงินคงเหลือไม่เพียงพอหรือวงเงินเต็ม |
payment_cancelled |
ผู้ซื้อยกเลิกการชำระเงิน |
timeout |
ผู้ซื้อไม่ยืนยันการทำรายการภายในเวลาที่กำหนด |
failed_processing |
ระบบทำรายการไม่สำเร็จ |
การคืนเงิน
สามารถตรวจสอบวิธีการคืนเงินรายการผ่อนชำระได้ที่ Refund API
การคืนเงินสามารถทำได้ภายในระยะเวลา 1 ปีนับจากวันทำรายการ ยกเว้นการผ่อนชำระผ่านธนาคารไทยพาณิชย์ ซึ่งสามารถขอคืนได้ภายใน 180 วัน
หมายเหตุ: รายการผ่อนชำระสามารถทำการคืนเงินแบบเต็มจำนวนเท่านั้น ไม่สามารถคืนเงินบางส่วนได้
ข้อจำกัด
- จำนวนรับชำระขั้นต่ำ:
200000
(THB2,000.00) - จำนวนรับชำระสูงสุด:
15000000
(THB150,000.00)
บัตรเครดิตแต่ละใบมียอดชำระขั้นต่ำ ต่อเดือนที่ไม่เท่ากัน โดยขึ้นอยู่กับบัตรเครดิตที่ใช้กับระยะเวลาที่เลือกผ่อนชำระ
ตัวอย่าง: ผู้ซื้อมียอดชำระทั้งหมด 3,300 บาท และต้องการจ่ายแบบผ่อนชำระเป็นเวลา 10 เดือน ผู้ซื้อจะมียอดผ่อนชำระ 330 บาทต่อเดือน ซึ่งต่ำกว่ายอดชำระขั้นต่ำของบัตรเครดิตธนาคารกรุงเทพ แต่สูงกว่ายอดชำระขั้นต่ำของบัตรธนาคารกสิกรเป็นต้น