วีแชทเพย์ (บาร์โค้ด) เบต้า

หัวข้อทั้งหมดในหน้านี้

รับวีแชทเพย์ผ่านเครื่อง POS (point-of-sale) ที่เคาน์เตอร์แคชเชียร์ภายในร้านผ่านช่องทาง

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

คู่มือนี้จะแนะนำวิธีการติดตั้งเพื่อเริ่มต้นใช้งาน

การเปิดรับชำระเงิน

  • ประเทศที่รองรับ: ประเทศไทย
  • API เวอร์ชันล่าสุดที่รองรับ: 2017-11-02

ร้านค้าที่ต้องการเปิดใช้ระบบ วีแชทเพย์ (บาร์โค้ด) กรุณาส่งอีเมลมาที่ support@omise.co ทางทีมงานโอมิเซะจะส่งข้อกำหนดและเงื่อนไขการใช้บริการให้ร้านค้าได้พิจารณาและลงลายมือชื่อก่อนเปิดใช้งานจริง

ขั้นตอนการชำระเงิน

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

Flow

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

การเชื่อมต่อระบบ

สามารถสร้างรายการรับชำระเงินวีแชทเพย์ (บาร์โค้ด) ด้วยการส่งคำสั่ง API ดังนี้

  1. สร้างรายการรับชำระเงิน พร้อมทั้งระบุ parameter
  2. เมื่อได้รับการแจ้งเตือนรายการสำเร็จผ่าน webhook ให้เรียกดูข้อมูลอีกครั้งเพื่อความแม่นยำ (แนะนำ)

ใช้งาน secret key ในการสร้างรายการวีแชทเพย์ (บาร์โค้ด)

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

เมื่อผู้ซื้อเลือกชำระเงินผ่านช่องทางนี้ ให้ร้านค้าสร้างรายการรับชำระเงิน พร้อมทั้งระบุ parameter amount, currency, source[type] (barcode_wechat), and source[barcode]

Parameter Type Description
amount integer (required) See Limits
currency string (required) THB
source[barcode] string (required) WeChat Pay Quick Pay payment code number
source[type] string (required) barcode_wechat

ตัวอย่างนี้ แสดงวิธีการสร้างรายการด้วย curl แทน $OMISE_SECRET_KEYด้วย test secret key ของร้านค้า สามารถไปคัดลอกจากแดชบอร์ด

curl https://api.omise.co/charges \
  -u $OMISE_SECRET_KEY: \
  -d "amount=400000" \
  -d "currency=THB" \
  -d "source[barcode]=123456789012345678" \
  -d "source[type]=barcode_wechat"
{
  "object": "charge",
  "id": "chrg_test_5kgg8st4p4tuwt7zt4b",
  "location": "/charges/chrg_test_5kgg8st4p4tuwt7zt4b",
  "amount": 400000,
  "net": 400000,
  "fee": 0,
  "fee_vat": 0,
  "interest": 0,
  "interest_vat": 0,
  "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_5kgg8st4p4tuwt7zt4b/refunds",
    "order": "chronological",
    "from": "1970-01-01T00:00:00Z",
    "to": "2020-07-07T03:53:37Z"
  },
  "link": null,
  "description": null,
  "metadata": {},
  "card": null,
  "source": {
    "object": "source",
    "id": "src_test_5kgg8sswfka5lh8k2nd",
    "livemode": false,
    "location": "/sources/src_test_5kgg8sswfka5lh8k2nd",
    "amount": 400000,
    "barcode": "123456789012345678",
    "created_at": "2020-07-07T03:53:37Z",
    "currency": "THB",
    "email": null,
    "flow": "offline",
    "installment_term": null,
    "name": null,
    "mobile_number": null,
    "phone_number": null,
    "scannable_code": null,
    "references": null,
    "store_id": null,
    "store_name": null,
    "terminal_id": null,
    "type": "barcode_wechat",
    "zero_interest_installments": null,
    "charge_status": "pending"
  },
  "schedule": null,
  "customer": null,
  "dispute": null,
  "transaction": null,
  "failure_code": null,
  "failure_message": null,
  "status": "pending",
  "authorize_uri": null,
  "return_uri": null,
  "created_at": "2020-07-07T03:53:37Z",
  "paid_at": null,
  "expires_at": "2020-07-14T03:53:37Z",
  "expired_at": null,
  "reversed_at": null,
  "zero_interest_installments": true,
  "branch": null,
  "terminal": null,
  "device": null
}

การตั้งค่าให้รายการหมดอายุ

รายการรับชำระเงิน ที่ผู้ซื้อยังไม่ได้อนุมัติรายการ (สถานะแสดงเป็น status=pending) สามารถตั้งค่าให้หมดอายุลงทันทีได้

นั่นหมายถึงว่ารายการที่สร้างขึ้นจะถูกยกเลิกไป

curl https://api.omise.co/charges/$CHARGE_ID/expire \
  -X POST \
  -u $OMISE_SECRET_KEY:

สร้างรายการสำเร็จ

เมื่อร้านค้าสร้างรายการรับชำระเงินขึ้นแล้ว จะพบว่าสถานะของรายการแสดงเป็น pending หรือ status==pending สถานะของรายการรับชำระเงินสามารถเป็นได้ทั้ง successful, failed และ expired

ในส่วนต่อไปเราจะอธิบายวิธีอนุมัติรายการ, การรับ event แจ้งเตือนเมื่อรายการเสร็จสิ้นผ่าน webhook และการตรวจสอบสถานะรายการ

ภาพด้านล่างนี้แสดงให้เห็นถึงขั้นตอนทั้งหมดในการรับชำระเงินแต่ละรายการ

sequenceDiagram participant customer participant merchant participant api.omise.co participant payment provider customer->>merchant: Present payment code for scanning merchant->>api.omise.co: Create charge using payment code api.omise.co-->>merchant: Return charge api.omise.co-xmerchant: Send "charge.create" webhook customer->>payment provider: Provide charge authorization payment provider-->>customer: Return payment result payment provider-->>api.omise.co: Return payment result api.omise.co-xmerchant: Send "charge.complete" webhook

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

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

การรับ 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_cancelled ผู้ซื้อยกเลิกการชำระเงิน
failed_processing ระบบทำรายการไม่สำเร็จ
insufficient_balance วงเงินคงเหลือไม่เพียงพอหรือวงเงินเต็ม
payment_rejected รายการถูกปฏิเสธโดยธนาคารผู้ออกบัตร

การยกเลิกและการคืนเงิน

รายการวีแชทเพย์ (บาร์โค้ด) สามารถคืนเงิน (refund) ได้ภายใน 365 วันนับจากวันที่ทำรายการ ร้านค้าสามารถเลือกคืนเงินเต็มจำนวนหรือคืนเพียงบางส่วนก็ได้ โดยดำเนินการผ่าน API

curl https://api.omise.co/charges/$REFUNDABLE_CHARGE_ID/refunds \
  -u $OMISE_SECRET_KEY: \
  -d "amount=400000"
{
  "object": "refund",
  "id": "rfnd_test_5kgg8t650droe85vpoi",
  "location": "/charges/chrg_test_5kgg8sn4e8zbjii8g5c/refunds/rfnd_test_5kgg8t650droe85vpoi",
  "livemode": false,
  "voided": false,
  "currency": "THB",
  "amount": 400000,
  "metadata": {},
  "charge": "chrg_test_5kgg8sn4e8zbjii8g5c",
  "transaction": "trxn_test_5kgg8t68u4wmnqhu1lp",
  "status": "closed",
  "funding_amount": 400000,
  "funding_currency": "THB",
  "created_at": "2020-07-07T03:53:39Z"
}

ข้อจำกัด

  • จำนวนรับชำระขั้นต่ำ: 2000 (THB20.00)
  • จำนวนรับชำระสูงสุด: 15000000 (THB150,000.00)

ขั้นตอนต่อไป

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