ทรูมันนี่วอลเล็ท เบต้า

ร้านค้าสามารถเพิ่มช่องทางรับชำระเงินผ่านทรูมันนี่วอลเล็ท โดยเชื่อมต่อผ่าน API ที่โอมิเซะได้เตรียมไว้ ช่องทางรับชำระเงินนี้ช่วยเพิ่มทางเลือกในการชำระเงินแก่ผู้ซื้อ โดยสามารถเลือกชำระผ่านทรูมันนี่วอลเล็ทที่ได้ลงทะเบียนใช้งานไว้แล้วได้เลย ลดขั้นตอนการกรอกข้อมูลบัตร ช่วยให้จบขั้นตอนการชำระเงินได้เร็วขึ้น

ผู้ซื้อที่มีความประสงค์ที่จะชำระเงินผ่านทรูมันนี่วอลเล็ทจะต้องทำการลงทะเบียนหมายเลขโทรศัพท์ไว้กับทรูมันนี่ก่อนแล้ว

ช่องทางรับชำระเงินนี้เปิดให้ใช้งานสำหรับร้านค้าที่ลงทะเบียนในประเทศไทยเท่านั้น

ทรูมันนี่วอลเล็ทอยู่ระหว่างการทดสอบ ร้านค้าที่สนใจเปิดรับชำระผ่านช่องทางนี้ กรุณากรอกรายละเอียดในแบบฟอร์มและทีมงานของเราจะแจ้งให้ทราบเมื่อระบบพร้อมเปิดใช้งาน

ขั้นตอนการรับชำระเงินผ่านทรูมันนี่วอลเล็ท

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

ขั้นตอนการชำระเงินผ่านทรูมันนี่วอลเล็ท:

  1. ผู้ซื้อเลือกชำระผ่าน 'ทรูมันนี่วอลเล็ท' ในหน้าเช็คเอ้าท์
  2. ผู้ซื้อกรอกหมายเลขโทรศัพท์เพื่อรับรหัส OTP
  3. ผู้ซื้อตรวจสอบรายละเอียดการชำระเงินแล้วกรอกรหัส OTP เพื่อยืนยันการทำรายการ

การสร้างรายการรับชำระเงิน

  1. สร้าง payment source โดยใช้ Source API
  2. นำ payment source ที่ได้จากขั้นตอนแรกมาใช้เพื่อสร้างรายการรับชำระเงินด้วย Charge API

การสร้าง source ของทรูมันนี่วอลเล็ทที่เกิดขึ้นในฝั่งผู้ซื้อ จะใช้ public key ส่วนการสร้างรายการรับชำระในฝั่งร้านค้าจะใช้ secret key เราแนะนำให้ใช้ Omise.js หรือไลบรารี่ของเราในการสร้างรายการในฝั่งของผู้ซื้อ

หมายเหตุ: การเชื่อมต่อกับ Omise.js กำลังจะเปิดใช้งานเร็วๆ นี้

ในกรณีที่มีการสร้างทั้ง source และ charge จากฝั่งเซิร์ฟเวอร์ของร้านค้า (เราไม่แนะนำวิธีการนี้) สามารถใช้ Charge API เพื่อสร้างและรับชำระเงินจาก source นั้นได้เลย

การสร้าง source ทรูมันนี่วอลเล็ทในฝั่งผู้ซื้อ (client side)

การสร้าง source ทรูมันนี่วอลเล็ท โดยใช้ source API ตามตัวอย่างด้านล่าง

หมายเหตุ: สำหรับกรณีดังกล่าว ร้านค้าจะต้องแทน $OMISE_PUBLIC_KEY เป็น public key ของร้านค้า

curl https://api.omise.co/sources \
  -X POST                         \
  -u $OMISE_PUBLIC_KEY:           \
  -d "amount=100000"              \
  -d "currency=thb"               \
  -d "type=truemoney"             \
  -d "phone_number=11111111111"
{
  "object": "source",
  "id": "src_test_5fg7otlmr411x79qzrg",
  "livemode": false,
  "location": "/sources/src_test_5fg7otlmr411x79qzrg",
  "type": "truemoney",
  "flow": "redirect",
  "amount": 100000,
  "currency": "thb",
  "phone_number": "11111111111"
}

การสร้างรายการรับชำระผ่านทรูมันนี่วอลเล็ท

นำค่าใน id ที่ได้รับมา แทนลงใน source parameter ของรายการรับชำระเงินใหม่ เนื่องจากการรับชำระเงินผ่านทรูมันนี่วอลเล็ตเป็นขั้นตอนแบบ re-direct คือผู้ซื้อถูกส่งออกไปยังหน้าต่างใหม่เพื่อยืนยันการทำรายการ ร้านค้าจะต้องระบุ return_uri เป็น URL ของหน้าที่ต้องการแสดงต่อผู้ซื้อเมื่อทำการชำระเงินเสร็จ

หมายเหตุ: ในตัวอย่างนี้ร้านค้าจะต้องแทน $OMISE_SECRET_KEY ด้วย secret key ของตนเอง และในส่วนของ $SOURCE_ID จะต้องระบุ id ตาม attribute ด้านบน

curl https://api.omise.co/charges                           \
  -X POST                                                   \
  -u $OMISE_SECRET_KEY:                                     \
  -d "amount=100000"                                        \
  -d "currency=thb"                                         \
  -d "return_uri=http://example.com/orders/345678/complete" \
  -d "source=$SOURCE_ID"
{
  "object": "charge",
  "id": "chrg_test_5fg7otrqsmol7wiqwuq",
  "livemode": false,
  "location": "/charges/chrg_test_5fg7otrqsmol7wiqwuq",
  "amount": 100000,
  "currency": "thb",
  "funding_amount": 100000,
  "funding_currency": "thb",
  "description": null,
  "metadata": {
  },
  "status": "pending",
  "capture": true,
  "authorized": false,
  "schedule": null,
  "reversed": false,
  "reversed_at": null,
  "voided": false,
  "paid": false,
  "paid_at": null,
  "transaction": null,
  "refunded": 0,
  "refunds": {
    "object": "list",
    "from": "1970-01-01T00:00:00Z",
    "to": "2019-04-03T08:27:05Z",
    "offset": 0,
    "limit": 20,
    "total": 0,
    "order": "chronological",
    "location": "/charges/chrg_test_5fg7otrqsmol7wiqwuq/refunds",
    "data": [

    ]
  },
  "return_uri": "http://example.com/orders/345678/complete",
  "failure_code": null,
  "failure_message": null,
  "card": null,
  "customer": null,
  "ip": null,
  "dispute": null,
  "created": "2019-04-03T08:27:05Z",
  "source": {
    "object": "source",
    "id": "src_test_5fg7ot3mixaqv3lon90",
    "type": "truemoney",
    "flow": "redirect",
    "amount": 100000,
    "currency": "thb",
    "phone_number": "11111111111"
  },
  "disputable": false,
  "capturable": false,
  "reversible": false,
  "refundable": false,
  "reference": "pay2_test_5fg7otrvrrjl4ivrm40",
  "authorize_uri": "https://pay.omise.co/payments/pay2_test_5fg7otrvrrjl4ivrm40/authorize"
}

การสร้าง source และรายการรับชำระในฝั่งร้านค้า (Server-side)

Charge API สามารถใช้สร้างรายการรับชำระโดยการเรียกใช้ API

curl https://api.omise.co/charges                           \
  -X POST                                                   \
  -u $OMISE_SECRET_KEY:                                     \
  -d "amount=100000"                                        \
  -d "currency=thb"                                         \
  -d "return_uri=http://example.com/orders/345678/complete" \
  -d "source[type]=truemoney"                               \
  -d "source[phone_number]=11111111111"
{
  "object": "charge",
  "id": "chrg_test_5fg7ou0xh53vpf3fhct",
  "livemode": false,
  "location": "/charges/chrg_test_5fg7ou0xh53vpf3fhct",
  "amount": 100000,
  "currency": "thb",
  "funding_amount": 100000,
  "funding_currency": "thb",
  "description": null,
  "metadata": {
  },
  "status": "pending",
  "capture": true,
  "authorized": false,
  "schedule": null,
  "reversed": false,
  "reversed_at": null,
  "voided": false,
  "paid": false,
  "paid_at": null,
  "transaction": null,
  "refunded": 0,
  "refunds": {
    "object": "list",
    "from": "1970-01-01T00:00:00Z",
    "to": "2019-04-03T08:27:07Z",
    "offset": 0,
    "limit": 20,
    "total": 0,
    "order": "chronological",
    "location": "/charges/chrg_test_5fg7ou0xh53vpf3fhct/refunds",
    "data": [

    ]
  },
  "return_uri": "http://example.com/orders/345678/complete",
  "failure_code": null,
  "failure_message": null,
  "card": null,
  "customer": null,
  "ip": null,
  "dispute": null,
  "created": "2019-04-03T08:27:06Z",
  "source": {
    "object": "source",
    "id": "src_test_5fg7ou09xaylh9n7cu8",
    "type": "truemoney",
    "flow": "redirect",
    "amount": 100000,
    "currency": "thb",
    "phone_number": "11111111111"
  },
  "disputable": false,
  "capturable": false,
  "reversible": false,
  "refundable": false,
  "reference": "pay2_test_5fg7ou111sg5ggseu1i",
  "authorize_uri": "https://pay.omise.co/payments/pay2_test_5fg7ou111sg5ggseu1i/authorize"
}

การอนุมัติรายการ

รายการรับชำระเงินที่ถูกสร้างขึ้นจาก API ด้านบนจะมีการตอบกลับมาพร้อมกับค่าของ authorize_uri โดยค่าดังกล่าวคือเว็บเพจของทรูมันนี่วอลเล็ทที่มีฟอร์มการใส่รหัส OTP เพื่อยืนยันการทำธุรกรรม

ในโหมดใช้งานจริงร้านค้าจะส่งลูกค้าไปยัง authorize_uri (https://pay.omise.co/…) เพื่อใส่รหัส OTP

TrueMoney Authorize URI Live

ในโหมดทดสอบร้านค้าสามารถเข้า URL เพื่อปรับสถานะรายการให้สำเร็จหรือไม่สำเร็จได้ด้วยตนเอง

TrueMoney Authorize URI Test

การตรวจสอบสถานะรายการ

การใช้ Webhooks

สามารถใช้ Events API เพื่อรับการแจ้งเตือนอัตโนมัติ เมื่อตั้ง Webhooks URL แล้ว จะมีการแจ้งเตือน charge.complete ทุกครั้งที่มีการรับชำระเงินผ่านทรูมันนี่วอลเล็ทสำเร็จ สามารถอ่านเพิ่มเติมได้ที่ Webhooks

ในกรณีที่รายการไม่สำเร็จ ร้านค้าสามารถตรวจสอบสาเหตุข้อขัดข้องได้ที่ failure_code และ failure_message ใน charge object

code Description
payment_rejected รายการรับชำระถูกปฏิเสธโดยทรูมันนี่เซอร์วิส
failed_processing การทำรายการไม่สำเร็จ
invalid_account หมายเลขโทรศัพท์ไม่ตรงกับบัญชีทรูมันนี่
insufficient_fund บัญชีทรูมันนี่มียอดเงินไม่เพียงพอสำหรับรายการ

สามารถดูข้อมูลเกี่ยวกับ failure_code และ failure_messageได้ที่ Charge API

ตรวจสอบด้วยตนเอง

ร้านค้าสามารถตรวจสอบสถานะของรายการรับชำระเงินโดยนำ id ที่ได้รับจาก Charges API แล้วตรวจสอบผ่านการร้องขอไปที่:

curl -s https://api.omise.co/charges/$CHARGE_ID \
  -u $OMISE_SECRET_KEY: | jq -M .status
"pending"

การคืนเงิน

สามารถอ่านวิธีการคืนเงินสำหรับรายการรับชำระเงินผ่านทรูมันนี่วอลเล็ทได้ที่ Refunds API

หมายเหตุ: รายการรับชำระเงินทรูมันนี่วอลเล็ทสามารถทำการคืนเงิน (refund) ได้ แต่ไม่สามารถยกเลิกรายการได้ (void)

การเปิดรับชำระเงินผ่านทรูมันนี่วอลเล็ท

ช่องทางรับชำระเงินผ่านทรูมันนี่วอลเล็ทยังอยู่ระหว่างการทดสอบการใช้งาน หากร้านค้ามีความประสงค์จะเปิดใช้บริการจะต้องแจ้งทีมงานโอมิเซะก่อน

เวอร์ชัน API ที่รองรับทรูมันนี่วอลเล็ทคือเวอร์ชัน 2017-11-02 ขึ้นไป สามารถตรวจสอบข้อมูลเพิ่มเติมเกี่ยวกับการอัปเดท API ได้ที่ API Versioning