ทรูมันนี่วอลเล็ท
หัวข้อทั้งหมดในหน้านี้
ร้านค้าสามารถเพิ่มช่องทางรับชำระเงินผ่านทรูมันนี่วอลเล็ท โดยเชื่อมต่อผ่าน API ที่โอมิเซะได้เตรียมไว้ ช่องทางรับชำระเงินนี้ช่วยเพิ่มทางเลือกในการชำระเงินแก่ผู้ซื้อ โดยสามารถเลือกชำระผ่านทรูมันนี่วอลเล็ทที่ได้ลงทะเบียนใช้งานไว้แล้วได้เลย ลดขั้นตอนการกรอกข้อมูลบัตร ช่วยให้จบขั้นตอนการชำระเงินได้เร็วขึ้น
คู่มือฉบับนี้จะช่วยเป็นแนวทางการติดตั้งทรูมันนี่วอลเล็ทและอธิบายขั้นตอนการรับชำระเงินผ่านทรูมันนี่วอลเล็ท
ผู้ซื้อที่มีความประสงค์ที่จะชำระเงินผ่านทรูมันนี่วอลเล็ทจะต้องทำการลงทะเบียนหมายเลขโทรศัพท์ไว้กับทรูมันนี่ก่อนแล้ว
การเปิดรับชำระเงิน
- ประเทศที่รองรับ: ประเทศไทย
- API เวอร์ชันล่าสุดที่รองรับ:
2017-11-02
ร้านค้าที่ต้องการเปิดใช้ระบบ ทรูมันนี่วอลเล็ท กรุณาส่งอีเมลมาที่ support@omise.co ทางทีมงานโอมิเซะจะส่งข้อกำหนดและเงื่อนไขการใช้บริการให้ร้านค้าได้พิจารณาและลงลายมือชื่อก่อนเปิดใช้งานจริง
ขั้นตอนการรับชำระเงินผ่านทรูมันนี่วอลเล็ท
การชำระเงินผ่านทรูมันนี่วอลเล็ท ผู้ซื้อจะถูกส่งไปยังหน้าเว็บไซต์หรือแอปพลิเคชัน เพื่อยืนยันการทำรายการด้วยรหัส OTP ในขั้นตอนการชำระเงิน ผู้ซื้อจะต้องกรอกหมายเลขโทรศัพท์เพื่อให้ระบบจัดส่งรหัส OTP ไปให้ที่หมายเลขโทรศัพท์ จากนั้นผู้ซื้อต้องใช้รหัส OTP เพื่อใช้กรอกและยืนยันการทำรายการ เมื่อกรอกรหัสสำเร็จผู้ซื้อจึงจะถูกส่งกลับมายังเว็บไซต์หรือแอปพลิเคชันของร้านค้า

การติดตั้งใช้งาน
ในการสร้างรายการรับชำระเงินผ่านทรูมันนี่วอลเล็ท ให้ร้านค้าส่งคำสั่ง API ดังนี้
- สร้าง payment source (
type:truemoney) โดยใช้ 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, phone_number, และ type
| Parameter | Type | Description |
|---|---|---|
amount |
integer | (required) ข้อจำกัด |
currency |
string | (required) THB |
phone_number |
string | (required) หมายเลขโทรศัพท์ที่ผูกกับบัญชีทรูมันนี่ 10 หลัก เริ่มต้นด้วยเลข 0 (example: 0812345678) |
type |
string | (required) truemoney |
ตัวอย่างด้านล่างนี้เป็นการสร้าง source สำหรับรายการ ทรูมันนี่วอลเล็ท จำนวน ฿4,000
ให้แทนค่าของ omise_public_key และ $OMISE_PUBLIC_KEY ด้วย test public key ของร้านค้าซึ่งสามารถคัดลอกได้จาก แดชบอร์ด
หากใช้ Omise.js parameter
typeเป็นตัวแปรที่จำเป็นของฟังก์ชันcreateSource
Omise.setPublicKey(omise_public_key);
Omise.createSource('truemoney', {
"amount": 400000,
"currency": "THB",
"phone_number": "0812345678"
}, 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=truemoney" \
-d "phone_number=0812345678"
{
"object": "source",
"id": "src_test_5ywrj249q5hyvv5z78p",
"livemode": false,
"location": "/sources/src_test_5ywrj249q5hyvv5z78p",
"amount": 400000,
"barcode": null,
"bank": null,
"created_at": "2024-02-27T10:30:17Z",
"currency": "THB",
"email": null,
"flow": "redirect",
"installment_term": null,
"ip": "35.198.236.178",
"absorption_type": null,
"name": null,
"mobile_number": "0812345678",
"phone_number": "0812345678",
"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,
"type": "truemoney",
"zero_interest_installments": null,
"charge_status": "unknown",
"receipt_amount": null,
"discounts": []
}
ตัวแปรของ 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
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=$SOURCE_ID"
{
"object": "charge",
"id": "chrg_test_5ywrj26qog0w0f2q4u4",
"location": "/charges/chrg_test_5ywrj26qog0w0f2q4u4",
"amount": 400000,
"acquirer_reference_number": null,
"net": 388658,
"fee": 10600,
"fee_vat": 742,
"interest": 0,
"interest_vat": 0,
"funding_amount": 400000,
"refunded_amount": 0,
"transaction_fees": {
"fee_flat": "0.0",
"fee_rate": "2.65",
"vat_rate": "7.0"
},
"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_5ywrj26qog0w0f2q4u4/refunds",
"order": "chronological",
"from": "1970-01-01T00:00:00Z",
"to": "2024-02-27T10:30:17Z"
},
"link": null,
"description": null,
"metadata": {},
"card": null,
"source": {
"object": "source",
"id": "src_test_5ywrj1shzm99jl6omnu",
"livemode": false,
"location": "/sources/src_test_5ywrj1shzm99jl6omnu",
"amount": 400000,
"barcode": null,
"bank": null,
"created_at": "2024-02-27T10:30:15Z",
"currency": "THB",
"email": null,
"flow": "redirect",
"installment_term": null,
"ip": "35.198.236.178",
"absorption_type": null,
"name": null,
"mobile_number": "0812345678",
"phone_number": "0812345678",
"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,
"type": "truemoney",
"zero_interest_installments": null,
"charge_status": "pending",
"receipt_amount": null,
"discounts": []
},
"schedule": null,
"customer": null,
"dispute": null,
"transaction": null,
"failure_code": null,
"failure_message": null,
"status": "pending",
"authorize_uri": "https://pay.omise.co/payments/pay2_test_5ywrj26s1nptr851s4v/authorize",
"return_uri": "http://example.com/orders/345678/complete",
"created_at": "2024-02-27T10:30:17Z",
"paid_at": null,
"expires_at": "2024-03-05T10:30:17Z",
"expired_at": null,
"reversed_at": null,
"zero_interest_installments": false,
"branch": null,
"terminal": null,
"device": null,
"authorized": false,
"capturable": false,
"capture": true,
"disputable": false,
"livemode": false,
"refundable": false,
"partially_refundable": false,
"reversed": false,
"reversible": false,
"voided": false,
"paid": false,
"expired": false,
"can_perform_void": false,
"approval_code": 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]=truemoney" \
-d "source[phone_number]=0812345678"
สร้างรายการสำเร็จ
เมื่อร้านค้าสร้างรายการรับชำระเงินขึ้นมาแล้ว จะพบว่าสถานะของรายการแสดงเป็น pending หรือ status==pending
โดยสถานะของรายการรับชำระเงินสามารถเป็นได้ทั้ง successful, failed และ expired
ในส่วนต่อไปเราจะอธิบายวิธีอนุมัติรายการ, การรับ event แจ้งเตือนเมื่อรายการเสร็จสิ้นผ่าน webhook และการตรวจสอบสถานะรายการ
ภาพด้านล่างนี้แสดงให้เห็นถึงขั้นตอนทั้งหมดในการรับชำระเงินแต่ละรายการ
การอนุมัติรายการรับชำระเงิน
ระบบจะส่งผู้ซื้อไปยังตำแหน่งที่ระบุไว้ใน authorize_uri เพื่อให้ผู้ซื้อสามารถดำเนินการอนุมัติรายการรับชำระเงินได้
ร้านค้าสามารถจำลองขั้นตอนการอนุมัติรายการในโหมดทดสอบ โดยเข้าไปที่ authorize_uri เพื่อปรับสถานะรายการเป็น “สำเร็จ” หรือ “ไม่สำเร็จ” ได้ด้วยตนเอง หลังจากผู้ซื้อทำการอนุมัติรายการเสร็จสิ้น ผู้ซื้อจะถูกส่งไปยังหน้าที่ร้านค้าระบุเป็น 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 เพื่ออ่านคำอธิบายเพิ่มเติม
สาเหตุขัดข้องที่อาจเกิดขึ้นได้มีดังนี้
| รหัสข้อขัดข้อง | รายละเอียด |
|---|---|
payment_rejected |
รายการถูกปฏิเสธโดยธนาคารผู้ออกบัตร |
failed_processing |
ระบบทำรายการไม่สำเร็จ |
invalid_account |
ไม่พบบัญชีที่สามารถชำระเงินผ่านช่องทางที่เลือก |
insufficient_fund |
วงเงินคงเหลือไม่เพียงพอหรือวงเงินเต็ม |
การยกเลิกรายการและการคืนเงิน
รายการรับชำระเงินทรูมันนี่วอลเล็ทสามารถยกเลิกรายการ (void) ได้ภายในวันเดียวกับที่ทำรายการ และสามารถทำการคืนเงิน (refund) ได้ภายใน 30 วัน
| ยกเลิกภายในวัน | ยกเลิกวันถัดไป | |||
|---|---|---|---|---|
| ช่องทางการชำระ | คืนเต็มจำนวน | คืนบางส่วน | คืนเต็มจำนวน | คืนบางส่วน |
| TrueMoney Wallet (Wallet Balance) |
✅ | ✅ | ✅ | |
| Bank Account | ✅ | ✅ | ✅ | |
| Pay Next | ✅ | ✅ | ||
| Pay Next Extra | ✅ | ✅ | ||
สามารถอ่านวิธีการคืนเงินสำหรับรายการรับชำระเงินผ่านทรูมันนี่วอลเล็ทได้ที่ Refunds API
ข้อจำกัด
- จำนวนรับชำระขั้นต่ำ:
2000(THB20.00) - จำนวนรับชำระสูงสุด:
10000000(THB100,000.00)
นอกจากการจำกัดยอดชำระต่อรายการแล้ว ยอดชำระสูงสุดยังขึ้นอยู่กับสถานะการยืนยันตัวตนของเจ้าของบัญชีทรูมันนี่วอลเล็ทกับทางผู้ให้บริการด้วย
| สถานะ | ยอดสูงสุดต่อวัน |
|---|---|
| ยังไม่ได้ยืนยันตัวตน | ฿40,000 |
| ยืนยันตัวตนด้วยหมายเลขบัตรประชาชนผ่านช่องทางออนไลน์ | ฿60,000 |
| ยืนยันตัวตนด้วยบัตรประชาชนที่ตู้ทรูมันนี่หรือ 7-11 สาขาที่รองรับ | ฿200,000 |
อ่านเพิ่มเติมได้ที่ คำถามที่พบบ่อยเกี่ยวกับทรูมันนี่วอลเล็ท