Omise Payment Method
ก่อนที่จะอธิบาย Omise Payment Flow ขออนุญาตอธิบายถึงวิธีการสร้าง Charge
หรือการชำระกับทาง Omise (อ่านว่า โอ-มิ-เซะ หลายคนอ่านกัน โอมิส 😂) ก่อน ซึ่งในตอนนี้มีหลายรูปแบบ โดยคร่าวๆที่ทราบตอนนี้คือมี
Credit / Debit card
ชำระผ่านบัตรเครดิต หรือบัตรเดบิต ซึ่งสามารถแยกได้อีก 2 รูปแบบย่อยคือNon 3-D Secure
(Non 3DS
) กับ3-D Secure
(3DS
)
บางคนงงว่า3DS
มันคืออะไร ก็ลองอ่านจากบทความนี้ดูครับInternet Banking
ชำระผ่านอินเตอร์เน็ตแบงค์กิ้งAlipay (Online)
ชำระผ่านอาลีเพย์แบบออนไลน์Bill Payment
(Tesco Lotus
) ชำระด้วยบาร์โค้ดที่เทสโก้โลตัส (ในบทความนี้จะไม่พูดถึงเรื่องBill Payment
)
Omise Payment Flow
โดยปกติการชำระผ่านบัตรเครดิตหรือเดบิตการ์ดนั้นทำได้ไม่ยาก เพราะในเอกสารนั้นมีตัวอย่างการชำระพร้อม source code ให้ครบถ้วนอยู่แล้ว และแม้ว่าในเอกสารจะมีอธิบายไว้ค่อนข้างครบ แต่หลายคนอาจจะงงกับวิธีการเขียนเพื่อเชื่อมต่ออยู่ดี Credit / Debit card
แบบ 3-D Secure
รวมถึงการชำระที่เขียนลักษณะเดียวกันได้คือ Internet Banking
กับ Alipay Online
ซึ่ง Flow ในการสร้าง Charge
คือ
- เมื่อสร้าง
Token
หรือSource
สำเร็จก็ดำเนินการส่งข้อมูลพร้อม Order เพื่อดำเนินการสร้างCharge
พร้อมreturn_uri
โดยเรียก API ไปยังCharge API
- API จะส่งคืนค่า
JSON
กลับมา หากส่งข้อมูลไม่ถูกต้องจะได้รับ{ 'object': 'error', .... }
กลับคืนมา ซึ่งใน error จะมี url เพื่อเข้าไปอ่านรายละเอียดเพิ่มเติมว่า error เพราะอะไร - หากถูกต้อง
status
ของCredit / Debit card
แบบ3-D Secure
,Internet Banking
และAlipay Online
จะเป็นpending
เสมอ เพราะการชำระดังกล่าวจำเป็นต้องผ่านการอนุมัติจากผู้ซื้อบนเว็บไซต์ของธนาคาร หรือของ Alipay เสียก่อน และจะได้รับauthorize_uri
กลับมาด้วย - จากนั้นก็เขียนโปรแกรมให้ redirect หรือเปลี่ยนหน้าเพจไปที่
authorize_uri
เท่านั้นก็จบแล้ว เมื่อทำธุรกรรมบนหน้าเว็บไซต์ของธนาคารหรือของ Alipay ถ้าเป็นCredit / Debit card
มันก็คือขั้นตอนการกรอก OTP นั่นแหละ พอเสร็จมันก็จะเปลี่ยนหน้าเพจกลับมายังreturn_uri
ที่ส่งตั้งแต่ตอนสร้างCharge
ถ้าลองเขียน Code PHP แบบง่ายๆก็น่าจะเป็นแบบนี้ครับ
[php]
$charge = OmiseCharge::create(array(
// ส่วนนี้แล้วแต่ว่าใครจะเขียนสำหรับรูปแบบการชำระแบบไหน
));
if ($charge[‘status’] === ‘pending’ && $charge[‘authorize_uri’] !== null) {
header("Location: {$charge[‘authorize_uri’]}");
exit();
}
[/php]
เท่านี้ก็เรียบร้อยแล้ว ✌✌ ง่ายกว่าที่คิดใช่ไหมละครับ
ขอฝากบทความก่อนหน้าสำหรับคนใช้ React Native และต้องการที่จะเชื่อมต่อกับ Omise ที่ลิงค์นี้นะคร้าบบบ