Omise.js
หัวข้อทั้งหมดในหน้านี้
Omise.js
Omise.js คือไลบรารี JavaScript สำหรับรวบรวมข้อมูลการชำระเงินในเบราว์เซอร์ของผู้ใช้ และส่งข้อมูลดังกล่าวไปยังเซิร์ฟเวอร์ของ Omise อย่างปลอดภัย
การใช้ Omise.js เป็นข้อกำหนดสำหรับการรับข้อมูลการชำระเงินบนเว็บไซต์ของคุณ
เอกสารนี้ให้ภาพรวมเกี่ยวกับการทำงานของ Omise.js และแนะนำวิธีต่าง ๆ ในการเพิ่ม Omise.js ลงในหน้าชำระเงินของคุณ
ข้อกำหนด
- เปิดใช้งาน HTTPS บนหน้าชำระเงินของคุณ
แนะนำ: ควรเปิดใช้งาน HTTPS บนเว็บไซต์ทั้งหมดของคุณด้วย
อย่ารวบรวมหรือจัดเก็บข้อมูลบัตรบนเซิร์ฟเวอร์ของคุณ
ดูรายละเอียดเพิ่มเติมได้ที่ แนวทางด้านความปลอดภัยสำหรับผู้ค้า
หลักการทำงาน
Omise.js ให้วิธีการที่ปลอดภัยในการรวบรวมข้อมูลบัตรเครดิต บัตรเดบิต และวิธีการชำระเงินอื่น ๆ ในเบราว์เซอร์ของผู้ใช้
Omise.js ส่งข้อมูลเหล่านี้ไปยังเซิร์ฟเวอร์ที่กำหนด ซึ่งจะส่งคืนค่าที่ใช้ได้ครั้งเดียว — โทเค็น หรือ ซอร์ส — ที่คุณสามารถนำไปใช้บนเซิร์ฟเวอร์เพื่อสร้างการเรียกเก็บเงินได้อย่างปลอดภัย
ตัวอย่าง
GitHub repositories ต่อไปนี้มีตัวอย่างการใช้งาน Omise.js:
ฟอร์มชำระเงินสำเร็จรูป
คุณสามารถใช้ Omise.js เพื่อขอโทเค็นและซอร์สโดยตรง หรือใช้ฟอร์มชำระเงินสำเร็จรูปก็ได้ ฟอร์มสำเร็จรูปจะรวบรวม ตรวจสอบ และส่งข้อมูลผู้ใช้ไปยังเซิร์ฟเวอร์ Omise อย่างปลอดภัย นอกจากนี้ยังรวบรวมข้อมูลเบราว์เซอร์เพิ่มเติมเพื่อช่วยป้องกันการฉ้อโกงด้วย
หลักการทำงานของฟอร์มสำเร็จรูป
การเชื่อมต่อดำเนินตามลำดับดังนี้:
- ผู้ใช้ (ลูกค้า) เข้าสู่หน้าชำระเงินของคุณ
- เว็บไซต์โหลด Omise.js
- Omise.js สร้าง iframe สำหรับการรวบรวมข้อมูลการชำระเงินอย่างปลอดภัย
- Omise.js โหลด pay.html ใน iframe
- PayJS โหลด Omise.js ในสภาพแวดล้อมที่ปลอดภัย
- PayJS โหลดตัวเองและเตรียมส่วนติดต่อการชำระเงิน
- ระบบแสดงวิธีการชำระเงินหรือฟอร์มให้กับผู้ใช้
- เมื่อลูกค้าส่งข้อมูลการชำระเงิน เพย์โหลดจะถูกส่งไปยัง PayJS
- PayJS ตรวจสอบความถูกต้องของเพย์โหลด
- หากการตรวจสอบล้มเหลว ระบบจะแสดงข้อผิดพลาดให้กับลูกค้า
- หากการตรวจสอบสำเร็จ:
- เพย์โหลดถูกส่งไปยัง Omise.js
- Omise.js เรียก API
/tokenหรือ/source - เซิร์ฟเวอร์ Omise ส่งคืนอ็อบเจ็กต์โทเค็นหรือซอร์ส
- Omise.js ส่งการตอบกลับ API ไปยัง PayJS
- หาก API ส่งคืนข้อผิดพลาด ระบบจะแสดงข้อความแสดงข้อผิดพลาดให้กับลูกค้า
- หากการเรียก API สำเร็จ:
- PayJS ส่งผลลัพธ์ไปยัง Omise.js
- Omise.js ส่งโทเค็น ซอร์ส หรือทั้งสองอย่างไปยังเว็บไซต์
- เว็บไซต์ประมวลผลข้อมูล
- เซิร์ฟเวอร์เริ่มการชำระเงินโดยใช้โทเค็นหรือซอร์ส
- เซิร์ฟเวอร์รับผลลัพธ์การชำระเงิน
- เซิร์ฟเวอร์อัปเดตสถานะการชำระเงิน
- เว็บไซต์แสดงผลลัพธ์ให้กับลูกค้า
โดยค่าเริ่มต้น Omise.js จะแสดงปุ่ม Pay with Omise การคลิกปุ่มจะเปิดฟอร์มชำระเงินที่ผู้ใช้กรอกข้อมูล การคลิก Pay [จำนวนเงิน] จะขอโทเค็นหรือซอร์สที่ใช้ได้ครั้งเดียวจากเซิร์ฟเวอร์ Omise โดยตรง
ฟอร์มสามารถกำหนดค่าได้โดยใช้ HTML data attributes หรือ JavaScript
การใช้ Data Attributes
เมื่อใช้ data attributes ไม่จำเป็นต้องเขียน JavaScript เพิ่มเติม กำหนดค่าฟอร์มชำระเงินโดยเพิ่ม HTML ต่อไปนี้ในหน้าชำระเงินของคุณ
วิธีใช้งาน
<form id="checkoutForm" method="POST" action="/charge">
<script type="text/javascript" src="https://cdn.omise.co/omise.js"
data-key="OMISE_PUBLIC_KEY"
data-amount="12345"
data-currency="THB"
data-default-payment-method="credit_card">
</script>
</form>
หมายเหตุ:
- พาธ
actionต้องชี้ไปยังตำแหน่งบนเซิร์ฟเวอร์ backend ที่รับคำขอ POST ซึ่งมีโทเค็นหรือซอร์ส - ต้องวางอิลิเมนต์
<script>ไว้ภายในอิลิเมนต์<form> data-key— คีย์สาธารณะของคุณdata-amount— จำนวนเงินที่แสดงบนฟอร์ม ระบุในหน่วยที่เล็กที่สุดของสกุลเงินdata-default-payment-method— วิธีการชำระเงินเริ่มต้นที่แสดงบนฟอร์ม- ดูพารามิเตอร์สำหรับพารามิเตอร์ที่รองรับเพิ่มเติม
ขั้นตอนถัดไป
กำหนดค่าพาธ /charge บนเซิร์ฟเวอร์ของคุณ (หรือพาธที่ระบุใน action) ให้รับและประมวลผลพารามิเตอร์ omiseToken และ omiseSource
- หากมีการส่งข้อมูลบัตรเครดิตหรือบัตรเดบิต
omiseTokenจะถูกตั้งค่าเป็นตัวระบุโทเค็นที่สร้างขึ้น และomiseSourceจะเป็นnull - หากมีการส่งข้อมูลวิธีการชำระเงินอื่น
omiseSourceจะถูกตั้งค่าเป็นตัวระบุซอร์สที่สร้างขึ้น และomiseTokenจะเป็นnull
การใช้ JavaScript
คุณยังสามารถกำหนดค่าฟอร์มชำระเงินโดยใช้ JavaScript ได้ Omise.js มีอ็อบเจ็กต์ OmiseCard สำหรับวัตถุประสงค์นี้
วิธีใช้งาน
<form id="checkoutForm" method="POST" action="/charge">
<input type="hidden" name="omiseToken">
<input type="hidden" name="omiseSource">
<button type="submit" id="checkoutButton">ชำระเงิน</button>
</form>
<script type="text/javascript" src="https://cdn.omise.co/omise.js"></script>
<script>
OmiseCard.configure({
publicKey: "OMISE_PUBLIC_KEY"
});
const button = document.querySelector("#checkoutButton");
const form = document.querySelector("#checkoutForm");
button.addEventListener("click", (event) => {
event.preventDefault();
OmiseCard.open({
amount: 12345,
currency: "THB",
defaultPaymentMethod: "credit_card",
onCreateTokenSuccess: (nonce) => {
if (nonce.startsWith("tokn_")) {
form.omiseToken.value = nonce;
} else {
form.omiseSource.value = nonce;
}
form.submit();
}
});
});
</script>
หมายเหตุ:
- พาธ
actionต้องชี้ไปยังตำแหน่งบนเซิร์ฟเวอร์ backend ที่รับคำขอ POST ซึ่งมีโทเค็นหรือซอร์ส - ดูพารามิเตอร์สำหรับพารามิเตอร์ที่รองรับเพิ่มเติม
ขั้นตอนถัดไป
กำหนดค่าพาธ /charge บนเซิร์ฟเวอร์ของคุณ (หรือพาธที่ระบุใน action) ให้รับและประมวลผลพารามิเตอร์ omiseToken และ omiseSource
- หากมีการส่งข้อมูลบัตรเครดิตหรือบัตรเดบิต
omiseTokenจะถูกตั้งค่าเป็นตัวระบุโทเค็นที่สร้างขึ้น และomiseSourceจะเป็นnull - หากมีการส่งข้อมูลวิธีการชำระเงินอื่น
omiseSourceจะถูกตั้งค่าเป็นตัวระบุซอร์สที่สร้างขึ้น และomiseTokenจะเป็นnull
เมธอดของ OmiseCard
ใช้เมธอดต่อไปนี้บน OmiseCard เพื่อปรับแต่งรูปลักษณ์และพฤติกรรมของฟอร์ม
configure
ตั้งค่าการกำหนดค่าเริ่มต้นสำหรับฟอร์ม แนะนำให้ตั้งค่าคีย์สาธารณะที่นี่ ปุ่มที่กำหนดค่าผ่าน configureButton และฟอร์มที่เปิดผ่าน open จะรับค่าการกำหนดค่านี้
ต้องเรียก
configureก่อนเรียกopen
| พารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| config | object | {} |
การกำหนดค่าเริ่มต้นสำหรับปุ่ม |
OmiseCard.configure({
publicKey: 'OMISE_PUBLIC_KEY',
});
configureButton
ตั้งค่าการกำหนดค่าเฉพาะปุ่มสำหรับฟอร์ม หากปุ่มอยู่นอกฟอร์ม ให้ระบุคีย์ submitFormTarget ในอ็อบเจ็กต์การกำหนดค่าเพื่อชี้ไปยังฟอร์มของคุณ
| พารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| selector | string | — | CSS selector สำหรับปุ่ม |
| config | object | {} |
การกำหนดค่าสำหรับปุ่ม |
OmiseCard.configure({
publicKey: 'OMISE_PUBLIC_KEY'
});
OmiseCard.configureButton('#checkout-button', {
amount: 3000,
currency: 'USD',
buttonLabel: 'Pay 30 USD'
});
OmiseCard.configureButton('#checkout-button-alt', {
amount: 100000,
currency: 'THB',
buttonLabel: 'Pay 1000 THB'
});
attach
เชื่อมต่อการกำหนดค่าที่ตั้งไว้ผ่าน configureButton กับปุ่มเป้าหมาย หลังจากเชื่อมต่อแล้ว การคลิกปุ่มที่กำหนดค่าแล้วจะเปิดฟอร์มชำระเงิน
OmiseCard.configureButton('#checkout-button', {
publicKey: 'OMISE_PUBLIC_KEY',
amount: 10000,
frameLabel: 'Merchant Name',
submitLabel: 'Pay',
});
OmiseCard.attach();
open
เปิดฟอร์มชำระเงิน
ต้องเรียก
configureก่อนเรียกเมธอดนี้
| พารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| config | object | {} |
การกำหนดค่าสำหรับปุ่มเป้าหมาย |
OmiseCard.open({
amount: 10000,
submitFormTarget: '#checkout-form',
onCreateTokenSuccess: (nonce) => {
/* ตัวจัดการเมื่อสร้างโทเค็นหรือซอร์สสำเร็จ ใช้สำหรับส่งฟอร์มหรือส่งคำขอ Ajax ไปยังเซิร์ฟเวอร์ */
},
onFormClosed: () => {
/* ตัวจัดการเมื่อฟอร์มถูกปิด */
},
});
พารามิเตอร์
| Data Attribute | พารามิเตอร์ | คำอธิบาย |
|---|---|---|
data-amount |
amount |
(จำเป็น) จำนวนเงินที่แสดงบนฟอร์ม |
data-key |
publicKey |
(จำเป็น) คีย์สาธารณะของคุณ ดูได้ที่แดชบอร์ด |
data-button-label |
buttonLabel |
ป้ายกำกับที่แสดงบนปุ่มที่ฝังไว้ ค่าเริ่มต้น: Pay with Omise |
data-currency |
currency |
สกุลเงินที่แสดงในหน้าต่างชำระเงิน ค่าเริ่มต้น: THB |
data-default-payment-method |
defaultPaymentMethod |
วิธีการชำระเงินเริ่มต้น ค่าเริ่มต้น: credit_card |
data-frame-description |
frameDescription |
ข้อความอธิบายที่แสดงใต้ส่วนหัวในหน้าต่างป๊อปอัป |
data-frame-label |
frameLabel |
ข้อความส่วนหัวที่แสดงในหน้าต่างป๊อปอัป ค่าเริ่มต้น: Omise |
data-hide-amount |
hideAmount |
ซ่อนจำนวนเงินบนปุ่มส่งหรือไม่ ค่าเริ่มต้น: false |
data-image |
image |
URI ของรูปโลโก้ ตัวอย่าง: https://example.com/logo.png |
data-locale |
locale |
ภาษาของฟอร์ม ค่าที่รับได้: en, ja, th ค่าเริ่มต้น: en |
data-location |
location |
รวมฟิลด์ postal_code และ city หรือไม่ ค่าเริ่มต้น: no |
data-other-payment-methods |
otherPaymentMethods |
สตริงตัวระบุวิธีการชำระเงินเพิ่มเติม คั่นด้วยเครื่องหมายคอมมา |
data-submit-label |
submitLabel |
ป้ายกำกับที่แสดงบนปุ่มส่งในหน้าต่างป๊อปอัป ค่าเริ่มต้น: Pay |
data-submit-form-target |
submitFormTarget |
CSS selector สำหรับฟอร์มชำระเงิน ค่าเริ่มต้น: อิลิเมนต์ <form> หลักของปุ่ม |
| — | onCreateTokenSuccess |
Callback ที่เรียกเมื่อสร้างโทเค็นหรือซอร์สสำเร็จ รับพารามิเตอร์หนึ่งตัว: ตัวระบุโทเค็นหรือซอร์ส |
| — | onFormClosed |
Callback ที่เรียกเมื่อฟอร์มถูกปิด ไม่มีพารามิเตอร์ |
พารามิเตอร์ต่อไปนี้เป็นพารามิเตอร์แบบมีเงื่อนไขที่ใช้เฉพาะกับวิธีการชำระเงินบางประเภทเท่านั้น
| Data Attribute | พารามิเตอร์ | คำอธิบาย |
|---|---|---|
data-googlepay-merchant-id |
googlepayMerchantId |
สำหรับ googlepay รหัสผู้ค้าของ Google Pay จำเป็นต้องระบุเมื่อรับ live traffic |
data-googlepay-request-billing-address |
googlepayRequestBillingAddress |
สำหรับ googlepay ตั้งค่าเป็น true เพื่อแนบชื่อและที่อยู่สำหรับออกใบแจ้งหนี้ของผู้ถือบัตรไปกับโทเค็นบัตร ช่วยเพิ่มอัตราการอนุมัติสำหรับผู้ถือบัตรในสหรัฐฯ สหราชอาณาจักร และแคนาดา |
data-googlepay-request-phone-number |
googlepayRequestPhoneNumber |
สำหรับ googlepay เมื่อมีการขอที่อยู่สำหรับออกใบแจ้งหนี้ ตั้งค่าเป็น true เพื่อแนบหมายเลขโทรศัพท์ของผู้ถือบัตรไปกับโทเค็นบัตรด้วย |
data-applepay-validation-url |
applepayValidationUrl |
URL ที่ใช้ตรวจสอบเซิร์ฟเวอร์และรับอ็อบเจ็กต์ merchant session สำหรับ Apple Pay จำเป็นต้องระบุเมื่อรับ live traffic ดูเอกสาร Apple Pay |
data-applepay-merchant-id |
applepayMerchantId |
รหัสผู้ค้าของ Apple Pay จำเป็นต้องระบุเมื่อรับ live traffic |
data-applepay-request-billing-address |
applepayRequestBillingAddress |
ตั้งค่าเป็น true เพื่อแนบชื่อและที่อยู่สำหรับออกใบแจ้งหนี้ของผู้ถือบัตรไปกับโทเค็นบัตร ช่วยเพิ่มอัตราการอนุมัติสำหรับผู้ถือบัตรในสหรัฐฯ สหราชอาณาจักร และแคนาดา |
วิธีการชำระเงินที่รองรับในฟอร์มสำเร็จรูป
แม้ว่า Omise.js จะรองรับวิธีการชำระเงินทั้งหมด แต่มีเฉพาะวิธีการชำระเงินต่อไปนี้เท่านั้นที่รองรับในฟอร์มสำเร็จรูป วิธีการชำระเงินที่ใช้ได้ขึ้นอยู่กับการตั้งค่าบัญชีและประเทศที่ลงทะเบียนบัญชีของคุณ
หากต้องการเปิดใช้งานวิธีการชำระเงินเพิ่มเติมในบัญชี live ติดต่อ support@omise.co
| วิธีการชำระเงิน | เอกสาร | ประเทศที่รองรับ |
|---|---|---|
alipay |
Alipay | ไทย |
alipay_cn |
Alipay CN | ไทย, สิงคโปร์ |
alipay_hk |
Alipay HK | สิงคโปร์ |
boost |
Boost | มาเลเซีย |
convenience_store*, net_banking*, pay_easy* |
ร้านสะดวกซื้อ, Pay Easy, ธนาคารออนไลน์ | ญี่ปุ่น |
credit_card |
บัตรเครดิต | ไทย, สิงคโปร์, ญี่ปุ่น |
dana |
DANA | สิงคโปร์ |
duitnow_obw |
DuitNow Online Banking/Wallets | มาเลเซีย |
duitnow_qr |
DuitNow QR | มาเลเซีย |
fpx |
FPX | มาเลเซีย |
gcash |
GCash | สิงคโปร์ |
googlepay |
Google Pay | ไทย, สิงคโปร์ |
applepay |
Apple Pay | สิงคโปร์ |
grabpay |
GrabPay | ไทย, สิงคโปร์, มาเลเซีย |
installment |
ผ่อนชำระ | ไทย |
kakaopay |
KakaoPay | สิงคโปร์ |
maybank_qr |
Maybank QR | มาเลเซีย |
mobile_banking_bay |
กรุงศรี (KMA) | ไทย |
mobile_banking_bbl |
กรุงเทพ (Bualuang mBanking) | ไทย |
mobile_banking_kbank |
กสิกรไทย (K PLUS) | ไทย |
mobile_banking_ktb |
กรุงไทย (KTB NEXT) | ไทย |
mobile_banking_ocbc_pao |
OCBC Pay Anyone | สิงคโปร์ |
mobile_banking_scb |
ไทยพาณิชย์ (SCB Easy) | ไทย |
paynow |
PayNow | สิงคโปร์ |
promptpay |
PromptPay | ไทย |
rabbit_linepay |
Rabbit LINE Pay | ไทย |
shopeepay |
ShopeePay | ไทย |
touch_n_go |
Touch 'n Go | สิงคโปร์ |
truemoney_jumpapp |
TrueMoney App Redirection | ไทย |
* ประเภท type ของซอร์สที่สร้างจะเป็น econtext
การขอโทเค็นและซอร์สโดยตรง
วิธีนี้มีความยืดหยุ่นสูงสุดและรองรับวิธีการชำระเงินทั้งหมด อย่างไรก็ตาม คุณต้องสร้างฟอร์มเองและจัดการเหตุการณ์ทั้งหมดด้วยตัวเอง
อย่าใช้แอตทริบิวต์
nameเป็นตัวระบุสำหรับอิลิเมนต์<input>ในฟอร์มที่กำหนดเอง เมื่อมีแอตทริบิวต์nameค่าของอิลิเมนต์จะถูกส่งไปพร้อมกับฟอร์มไปยังเซิร์ฟเวอร์ของคุณ ซึ่งมีความเสี่ยงที่จะส่งข้อมูลสำคัญ เช่น หมายเลขบัตรใช้แอตทริบิวต์
data-*หรือidเป็นตัวระบุแทน ดูแนวทางด้านความปลอดภัยสำหรับผู้ค้า
หลักการทำงานของฟอร์มที่กำหนดเอง
การเชื่อมต่อดำเนินตามลำดับดังนี้:
- ผู้ใช้เข้าสู่เว็บไซต์
- เว็บไซต์โหลด Omise.js
- เว็บไซต์แสดงฟอร์มบัตรที่กำหนดเองให้กับผู้ใช้
- ผู้ใช้กรอกข้อมูลบัตร
- เว็บไซต์ตรวจสอบความถูกต้องของเพย์โหลด
- หากการตรวจสอบล้มเหลว เว็บไซต์จะแสดงข้อผิดพลาดให้กับผู้ใช้
- หากการตรวจสอบสำเร็จ:
- ผู้ใช้คลิกปุ่มชำระเงิน
- เว็บไซต์ส่งข้อมูลบัตรไปยัง Omise.js เพื่อสร้างโทเค็น
- Omise.js เรียก API
/tokenหรือ/source - เซิร์ฟเวอร์ Omise ส่งคืนอ็อบเจ็กต์โทเค็นหรือซอร์ส
- Omise.js ส่งการตอบกลับ API กลับไปยังเว็บไซต์
- หาก API ส่งคืนข้อผิดพลาด เว็บไซต์จะแสดงข้อผิดพลาดให้กับผู้ใช้
- หากการเรียก API สำเร็จ เว็บไซต์จะส่งการตอบกลับไปยัง backend
วิธีใช้งาน
เพิ่มอิลิเมนต์ <script> ต่อไปนี้เพื่อโหลด Omise.js:
<script type="text/javascript" src="https://cdn.omise.co/omise.js"></script>
เมื่อโหลดแล้ว อ็อบเจ็กต์ Omise จะพร้อมใช้งานในสภาพแวดล้อมของคุณ
เมธอดของ Omise
ใช้เมธอดต่อไปนี้บน Omise เพื่อสร้างโทเค็นหรือซอร์สที่ใช้ได้ครั้งเดียว
setPublicKey
ตรวจสอบสิทธิ์คำขอโดยใช้คีย์สาธารณะของคุณ
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
| key | string | (จำเป็น) คีย์สาธารณะของคุณ ดูได้ที่แดชบอร์ด |
Omise.setPublicKey("OMISE_PUBLIC_KEY");
createToken
สร้างโทเค็นที่ใช้ได้ครั้งเดียวจากเซิร์ฟเวอร์ Omise ใช้โทเค็นเพื่อสร้างการเรียกเก็บเงินหรือเชื่อมต่อบัตรกับอ็อบเจ็กต์ลูกค้า
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
| type | string | (จำเป็น) ต้องระบุเป็น card |
| tokenParameters | object | (จำเป็น) พารามิเตอร์คำขอสำหรับโทเค็น |
| callback | function | (จำเป็น) ฟังก์ชันที่เรียกเมื่อคำขอเสร็จสิ้น รับพารามิเตอร์สองตัว: HTTP status code และอ็อบเจ็กต์การตอบกลับ |
const tokenParameters = {
"city": "New York",
"country": "US",
"expiration_month": 2,
"expiration_year": 2022,
"name": "Somchai Prasert",
"number": "4242424242424242",
"phone_number": "0123456789",
"postal_code": 10320,
"security_code": 123,
"state": "NY",
"street1": "476 Fifth Avenue"
};
Omise.createToken("card", tokenParameters, function(statusCode, response) {
if (statusCode === 200) {
// response["id"] มีตัวระบุโทเค็น
console.log(response["id"]);
} else {
// จัดการข้อผิดพลาด — response["message"] มีคำอธิบายข้อผิดพลาด
console.error(response["message"]);
}
});
createSource
สร้างซอร์สที่ใช้ได้ครั้งเดียวจากเซิร์ฟเวอร์ Omise ใช้ซอร์สเพื่อสร้างการเรียกเก็บเงิน ดูประเภทซอร์สที่ใช้ได้และพารามิเตอร์ที่จำเป็นได้ที่ Source API
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
| type | string | (จำเป็น) ประเภทซอร์ส |
| sourceParameters | object | (จำเป็น) พารามิเตอร์คำขอสำหรับซอร์ส |
| callback | function | (จำเป็น) ฟังก์ชันที่เรียกเมื่อคำขอเสร็จสิ้น รับพารามิเตอร์สองตัว: HTTP status code และอ็อบเจ็กต์การตอบกลับ |
const sourceParameters = {
"amount": 12345,
"currency": "THB",
"phone_number": "0123456789"
};
Omise.createSource("truemoney_jumpapp", sourceParameters, function(statusCode, response) {
if (statusCode === 200) {
// response["id"] มีตัวระบุซอร์ส
console.log(response["id"]);
} else {
// จัดการข้อผิดพลาด — response["message"] มีคำอธิบายข้อผิดพลาด
console.error(response["message"]);
}
});
การประมวลผลโทเค็นและซอร์ส
หลังจาก Omise.js ส่งคืนโทเค็นหรือซอร์สไปยัง frontend ของคุณ เซิร์ฟเวอร์จะต้องนำไปใช้สร้างการเรียกเก็บเงิน โทเค็นและซอร์สใช้ได้ครั้งเดียวเท่านั้น และจะหมดอายุหากไม่ได้ใช้งาน
- สำหรับโทเค็น ดูการเรียกเก็บเงินบัตร สำหรับรายละเอียดและตัวอย่างโค้ดเพิ่มเติม ดูCharge API
- สำหรับซอร์ส ดูคู่มือที่เกี่ยวข้องในเอกสาร API ภายใต้หมวด Payment Methods
สำคัญ: อย่าใช้โทเค็นหรือซอร์สมากกว่าหนึ่งครั้ง ค่าแต่ละค่าจะถูกยกเลิกหลังจากการพยายามเรียกเก็บเงินครั้งเดียว ไม่ว่าการเรียกเก็บเงินจะสำเร็จหรือไม่ก็ตาม
การจัดการข้อผิดพลาด
เมื่อ callback ได้รับ status code ที่ไม่ใช่ 200 อ็อบเจ็กต์การตอบกลับจะมีรายละเอียดของความล้มเหลว
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
object |
string | เป็น "error" เสมอสำหรับการตอบกลับข้อผิดพลาด |
code |
string | รหัสข้อผิดพลาดที่อ่านได้โดยเครื่อง |
message |
string | คำอธิบายข้อผิดพลาดที่อ่านได้โดยมนุษย์ |
รหัสข้อผิดพลาดทั่วไปที่ Omise.js ส่งคืน:
| รหัส | คำอธิบาย |
|---|---|
invalid_card |
ฟิลด์บัตรหนึ่งรายการหรือมากกว่าไม่ผ่านการตรวจสอบ |
expired_card |
วันหมดอายุของบัตรเป็นวันที่ผ่านมาแล้ว |
invalid_security_code |
รหัสความปลอดภัย (CVV) ที่ระบุไม่ถูกต้อง |
authentication_failure |
คีย์สาธารณะหายไป ไม่ถูกต้อง หรือมีสิทธิ์เข้าถึงไม่เพียงพอ |
service_not_found |
วิธีการชำระเงินที่ขอไม่ได้เปิดใช้งานในบัญชีของคุณ |
สำหรับรายการรหัสข้อผิดพลาดทั้งหมด ดูเอกสาร API Errors
CDN
โหลด Omise.js จาก URL ต่อไปนี้:
https://cdn.omise.co/omise.js
คำถามที่พบบ่อย
ทั่วไป
Omise.js คืออะไร และทำไมถึงต้องใช้?
Omise.js คือไลบรารี JavaScript ที่จัดการการรวบรวมและส่งข้อมูลการชำระเงินจากเบราว์เซอร์ของผู้ใช้ไปยังเซิร์ฟเวอร์ Omise อย่างปลอดภัย จำเป็นต้องใช้สำหรับการเชื่อมต่อการชำระเงินทางเว็บทั้งหมด เนื่องจากข้อมูลบัตรสำคัญจะไม่ผ่านเซิร์ฟเวอร์ของคุณ จึงช่วยลดขอบเขตการปฏิบัติตามมาตรฐาน PCI DSS ได้อย่างมาก
Omise.js จัดเก็บข้อมูลบัตรบนเซิร์ฟเวอร์ของฉันหรือไม่?
ไม่ Omise.js ส่งข้อมูลการชำระเงินจากเบราว์เซอร์ของผู้ใช้ไปยังเซิร์ฟเวอร์ Omise โดยตรง และส่งคืนเพียงตัวระบุโทเค็นหรือซอร์สให้กับเซิร์ฟเวอร์ของคุณเท่านั้น เซิร์ฟเวอร์ของคุณจะไม่ได้รับหรือจัดเก็บข้อมูลบัตรดิบ
ควรใช้ฟอร์มสำเร็จรูปหรือฟอร์มที่กำหนดเอง?
| ฟอร์มสำเร็จรูป | ฟอร์มที่กำหนดเอง | |
|---|---|---|
| ความยุ่งยากในการตั้งค่า | น้อย — เพียงฝัง script tag | มาก — ต้องสร้างและออกแบบ UI เอง |
| JavaScript | ไม่จำเป็น | จำเป็น |
| การรวบรวมข้อมูลฉ้อโกง | อัตโนมัติ | ต้องทำเอง |
| วิธีการชำระเงิน | บางวิธีเท่านั้น (ดูวิธีการชำระเงินที่รองรับ) | ทุกวิธีการชำระเงิน |
| การปรับแต่ง UI | จำกัด (โลโก้ ป้ายกำกับ ภาษา) | ควบคุมได้ทั้งหมด |
ใช้ฟอร์มสำเร็จรูปหากต้องการการเชื่อมต่อที่รวดเร็วและดูแลรักษาน้อย ใช้ฟอร์มที่กำหนดเองหากต้องการควบคุม UI ทั้งหมดหรือต้องการรองรับวิธีการชำระเงินที่ไม่มีในฟอร์มสำเร็จรูป
Omise.js รองรับ Single-Page Applications (SPA) หรือไม่?
รองรับ ใช้วิธี JavaScript (OmiseCard) และเรียก OmiseCard.configure() ครั้งเดียวในขั้นตอนการเริ่มต้น เรียก OmiseCard.open() แบบ programmatic เมื่อผู้ใช้พร้อมชำระเงิน หลีกเลี่ยงการฝัง script tag ซ้ำในทุกการเปลี่ยนเส้นทาง
สามารถใช้ Omise.js กับเฟรมเวิร์กเช่น React, Vue หรือ Angular ได้หรือไม่?
ได้ โหลด Omise.js ผ่าน <script> tag ใน HTML (หรือแบบ dynamic เมื่อ component mount) และโต้ตอบกับอ็อบเจ็กต์ global OmiseCard หรือ Omise ปัจจุบันยังไม่มี wrapper สำหรับเฟรมเวิร์กอย่างเป็นทางการ แต่ทั้งสอง API ทำงานร่วมกับสถาปัตยกรรม component แบบ event-driven ได้ดี
ความปลอดภัย
ทำไมหน้าชำระเงินต้องใช้ HTTPS?
HTTPS ช่วยให้การสื่อสารระหว่างเบราว์เซอร์ของผู้ใช้กับหน้าเว็บของคุณถูกเข้ารหัส หากไม่มี HTTPS ผู้โจมตีอาจดักจับหรือแก้ไขหน้าเว็บก่อนที่ Omise.js จะโหลด และอาจแทนที่ฟอร์มที่ปลอดภัยด้วยฟอร์มที่เป็นอันตราย Omise.js จะไม่ทำงานบนหน้าที่ให้บริการผ่าน HTTP ธรรมดา
ทำไมไม่ควรใช้แอตทริบิวต์ name ในช่องกรอกฟอร์มที่กำหนดเอง?
เมื่อส่งฟอร์ม ค่าของอิลิเมนต์ <input> ที่มีแอตทริบิวต์ name จะถูกรวมอยู่ใน POST body ที่ส่งไปยังเซิร์ฟเวอร์ของคุณ สำหรับฟิลด์สำคัญ เช่น หมายเลขบัตรหรือรหัส CVV การทำเช่นนี้จะส่งข้อมูลบัตรดิบผ่านเซิร์ฟเวอร์ของคุณ ซึ่งเป็นความเสี่ยงด้านความปลอดภัยร้ายแรงและเป็นการละเมิด PCI DSS ใช้แอตทริบิวต์ id หรือ data-* เป็นตัวระบุแทน
iframe ในฟอร์มสำเร็จรูปใช้ทำอะไร?
ฟอร์มสำเร็จรูปโหลดภายใน iframe ที่ให้บริการจากโดเมนของ Omise เอง ซึ่งหมายความว่าฟอร์มชำระเงินทำงานในบริบทการเบราว์เซอร์ที่แยกจากหน้าเว็บของคุณ JavaScript ของคุณไม่สามารถเข้าถึงข้อมูลบัตรที่กรอกใน iframe ได้ ซึ่งป้องกันการเปิดเผยข้อมูลสำคัญโดยไม่ตั้งใจหรือโดยเจตนาร้าย
หาคีย์สาธารณะได้ที่ไหน?
คีย์สาธารณะของคุณมีอยู่บนแดชบอร์ด Omise ภายใต้ Settings → Keys ใช้คีย์สาธารณะทดสอบในขั้นตอนการพัฒนา และใช้คีย์สาธารณะliveในสภาพแวดล้อมจริง อย่าใช้คีย์ลับในโค้ดฝั่ง client
โทเค็นและซอร์ส
โทเค็นและซอร์สต่างกันอย่างไร?
โทเค็น แทนบัตรเครดิตหรือบัตรเดบิต และสร้างขึ้นเมื่อลูกค้ากรอกข้อมูลบัตร ซอร์ส แทนวิธีการชำระเงินที่ไม่ใช่บัตร (เช่น PromptPay, GrabPay หรือ e-wallet) และมีข้อมูล redirect หรือ QR ที่จำเป็นสำหรับการชำระเงิน ทั้งสองเป็นตัวระบุที่ใช้ได้ครั้งเดียวที่เซิร์ฟเวอร์ของคุณส่งไปยัง Charge API
โทเค็นหรือซอร์สมีอายุการใช้งานนานแค่ไหน?
โทเค็นใช้ได้ครั้งเดียวและจะหมดอายุหลังจากระยะเวลาสั้น ๆ หากไม่ได้ใช้งาน (โดยทั่วไปไม่กี่นาที) ซอร์สจะหมดอายุตามกฎของวิธีการชำระเงินที่อยู่เบื้องหลัง ใช้โทเค็นหรือซอร์สทันทีหลังจากได้รับ และอย่าแคชหรือนำกลับมาใช้ซ้ำ
จะเกิดอะไรขึ้นหาก omiseToken และ omiseSource ทั้งคู่เป็น null ใน POST ไปยังเซิร์ฟเวอร์?
นี่บ่งชี้ว่าฟอร์มชำระเงินถูกส่งโดยไม่ได้สร้างโทเค็นหรือซอร์สสำเร็จ เช่น ผู้ใช้ปิดฟอร์มก่อนชำระเงินเสร็จ เซิร์ฟเวอร์ของคุณควรจัดการกรณีนี้อย่างเหมาะสม เช่น ส่งผู้ใช้กลับไปยังหน้าชำระเงินพร้อมข้อความที่เหมาะสม
สามารถเชื่อมโทเค็นบัตรกับลูกค้าสำหรับการเรียกเก็บเงินในอนาคตได้หรือไม่?
ได้ ส่งตัวระบุโทเค็นไปยัง Customers API เพื่อเชื่อมต่อบัตรกับอ็อบเจ็กต์ลูกค้า จากนั้นคุณสามารถเรียกเก็บเงินจากลูกค้าในภายหลังได้โดยไม่ต้องให้กรอกข้อมูลบัตรอีกครั้ง
วิธีการชำระเงิน
จะทราบได้อย่างไรว่าวิธีการชำระเงินใดบ้างที่ใช้ได้กับบัญชีของฉัน?
วิธีการชำระเงินที่ใช้ได้ขึ้นอยู่กับประเทศที่ลงทะเบียนบัญชีของคุณและวิธีการที่ Omise เปิดใช้งาน เข้าสู่ระบบแดชบอร์ด Omise เพื่อดูวิธีการชำระเงินที่เปิดใช้งาน หากต้องการเพิ่มวิธีการชำระเงิน ติดต่อ support@omise.co
สามารถแสดงวิธีการชำระเงินหลายวิธีในฟอร์มสำเร็จรูปได้หรือไม่?
ได้ ใช้แอตทริบิวต์ data-other-payment-methods (หรือพารามิเตอร์ otherPaymentMethods ใน JavaScript) เพื่อระบุตัวระบุวิธีการชำระเงินเพิ่มเติมที่คั่นด้วยคอมมาควบคู่กับค่าเริ่มต้น ตัวอย่าง:
data-other-payment-methods="promptpay,truemoney_jumpapp,grabpay"
ฟอร์มสำเร็จรูปรองรับ Google Pay และ Apple Pay หรือไม่?
รองรับ แต่ต้องมีการกำหนดค่าเพิ่มเติมสำหรับ live traffic:
- Google Pay — ตั้งค่า
data-googlepay-merchant-idเป็น merchant ID ของ Google Pay ของคุณ - Apple Pay — ตั้งค่า
data-applepay-merchant-idเป็น merchant ID ของ Apple Pay และdata-applepay-validation-urlเป็น endpoint การตรวจสอบเซิร์ฟเวอร์
ทั้งสองทำงานได้โดยไม่ต้องใช้พารามิเตอร์เหล่านี้ในโหมดทดสอบ
การแก้ไขปัญหา
คลิกปุ่มแล้วฟอร์มชำระเงินไม่ปรากฏ
ตรวจสอบสิ่งต่อไปนี้:
- มีการเรียก
OmiseCard.configure()พร้อมpublicKeyที่ถูกต้องก่อนเรียกOmiseCard.open() - สคริปต์ Omise.js โหลดครบถ้วนก่อนมีการเรียก
OmiseCardวาง logic ของสคริปต์หลัง tag<script src="https://cdn.omise.co/omise.js">หรือรอ eventDOMContentLoaded - หน้าเว็บของคุณให้บริการผ่าน HTTPS Omise.js จะไม่โหลดบนหน้า HTTP
- ไม่มีข้อผิดพลาดใน console ของเบราว์เซอร์ เปิด developer tools และตรวจสอบแท็บ Console และ Network เพื่อดูคำขอที่ถูกบล็อกหรือข้อผิดพลาด JavaScript
ได้รับข้อผิดพลาด authentication_failure
หมายความว่าคีย์สาธารณะที่ส่งให้ Omise.js หายไป มีรูปแบบไม่ถูกต้อง หรือไม่ตรงกับสภาพแวดล้อมที่คาดหวัง (ทดสอบและ live) ตรวจสอบสิ่งต่อไปนี้:
- คีย์ขึ้นต้นด้วย
pkey_(คีย์สาธารณะจะใช้ prefix นี้เสมอ) - ใช้คีย์ที่ถูกต้องสำหรับสภาพแวดล้อมของคุณ (คีย์ทดสอบสำหรับโหมดทดสอบ คีย์ live สำหรับ production)
- ไม่มีช่องว่างหรืออักขระเพิ่มเติมที่เกิดจากการคัดลอกคีย์
เซิร์ฟเวอร์ไม่ได้รับโทเค็นหรือซอร์ส
ยืนยันสิ่งต่อไปนี้:
- แอตทริบิวต์
actionบน<form>ของคุณชี้ไปยัง endpoint เซิร์ฟเวอร์ที่ถูกต้อง - สำหรับวิธี data attributes ต้องวาง
<script>tag ไว้ภายในอิลิเมนต์<form> - สำหรับวิธี JavaScript ต้องตั้งค่า
form.omiseToken.valueหรือform.omiseSource.valueก่อนเรียกform.submit() - เซิร์ฟเวอร์อ่านพารามิเตอร์
omiseTokenและomiseSourceเป็น POST parameters (ไม่ใช่ query parameters)
ฟอร์มที่กำหนดเองส่งข้อมูลบัตรไปยังเซิร์ฟเวอร์โดยไม่ตั้งใจ
เกิดขึ้นเมื่ออิลิเมนต์ <input> ที่เกี่ยวกับบัตรมีแอตทริบิวต์ name ให้ลบแอตทริบิวต์ name ทั้งหมดออกจากฟิลด์กรอกข้อมูลบัตร และใช้แอตทริบิวต์ id หรือ data-* แทน ดูการขอโทเค็นและซอร์สโดยตรง
จะทดสอบการเชื่อมต่อโดยไม่ประมวลผลการชำระเงินจริงได้อย่างไร?
ใช้คีย์สาธารณะทดสอบจากแดชบอร์ด Omise ในโหมดทดสอบ คุณสามารถใช้หมายเลขบัตรทดสอบของ Omise เพื่อจำลองสถานการณ์การชำระเงินสำเร็จและล้มเหลวโดยไม่มีการเรียกเก็บเงินจริง