ร้านสะดวกซื้อ

การรับชำระเงินผ่านร้านสะดวกซื้อ (หรือ Konbini) เป็นช่องทางการรับชำระเงินที่เปิดให้บริการในประเทศญี่ปุ่น โดยร้านค้าจะออกบาร์โค้ดเพื่อให้ผู้ซื้อใช้ชำระเงิน ณ ร้านสะดวกซื้อที่รองรับ

ร้านค้าที่โอมิเซะรองรับมีดังนี้ เซเว่น อีเลฟเว่น, เซอร์เคิล เค ซันคุส, ลอว์สัน, มินิสต๊อป, เซโกมาร์ท, และแฟมิลีมาร์ท ซึ่งมีสาขาอยู่ทั่วประเทศญี่ปุ่น

- ช่องทางการรับชำระเงินผ่านร้านค้าสะดวกซื้อ เปิดให้บริการสำหรับร้านค้าที่ลงทะเบียนใช้งานระบบรับชำระเงินโอมิเซะในประเทศญี่ปุ่นเท่านั้น

- รองรับการใช้งานกับ API เวอร์ชัน 2017-11-02 ขึ้นไป

- สามารถเปิดให้ใช้งานกับบัญชีประเภทนิติบุคคลเท่านั้น (ไม่สามารถให้บริการกับบุคคลธรรมดาได้)

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

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

Convenience Store payment flow

เมื่อผู้ซื้อทำธุรกรรมทางออนไลน์สำเร็จแล้วจะเป็นขั้นตอนการชำระเงินที่ร้านค้าสะดวกซื้อ

Convenience Store payment flow

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

สร้างรายการรับชำระเงินโดยใช้ Payment Source

ในการสร้างรายการรับชำระเงิน (charge) ให้สร้าง source object ก่อน โดยใช้ Source API

ตัวอย่างการสร้าง source

curl https://api.omise.co/sources \
  -X POST \
  -u skey_test_59rnqoboimgxvjk894d: \
  -d "amount=150" \
  -d "currency=jpy" \
  -d "type=econtext" \
  -d "name=Customer" \
  -d "email=customer@email.co" \
  -d "phone_number=01234567891" 

ตัวอย่าง JSON response

*การรับชำระเงินผ่านร้านสะดวกซื้อ กำหนดยอดขั้นต่ำของรายการที่ 150 เยน และยอดจะต้องไม่เกิน 49999 เยน

JSON Response

{
  "object": "source",
  "id": "src_5babhlfyw8g7smtk44u",
  "livemode": true,
  "location": "/sources/src_5babhlfyw8g7smtk44u",
  "type": "econtext",
  "flow": "offline",
  "amount": 150,
  "currency": "jpy",
  "name": "Customer",
  "email": "customer@email.co",
  "phone_number": "01234567891"
}

*ในการสร้าง source object สามารถใช้ได้ทั้ง secret key และ public key

ร้านค้าจะได้รับ source เป็นผลลัพธ์ ส่วนสำคัญใน source object คือ id ซึ่งจะนำมาใช้ในขั้นตอนการสร้างรายการรับชำระเงินต่อไป ในเอกสารฉบับนี้ใช้ src_5babhlfyw8g7smtk44u เป็น id ตัวอย่าง

ในการสร้างรายการรับชำระเงิน ให้ส่ง parameter source ใน charge api

การตั้งค่าอายุของรายการรับชำระเงิน

ในการกำหนดวันหมดอายุของรายการรับชำระเงิน ให้เพิ่ม parameter expiry_date พร้อมกำหนดวันที่ (อิงมาตรฐาน ISO 8601) หากไม่มีการกำหนดค่าระบบจะเลือกใช้การตั้งค่าของบัญชีผู้ใช้ หรือกำหนดให้เป็น 7 วันตามค่าพื้นฐานของระบบโอมิเซะ

ข้อควรรู้สำคัญในการกำหนดระยะเวลาหมดอายุของรายการรับชำระเงิน

  • 7-11 กำหนดระยะเวลาการชำระเงินได้ไม่เกิน 60 วัน
  • เราแนะนำให้กำหนดระยะเวลาในการชำระเงินภายใน 365 วัน
  • หากไม่มีการระบุเวลา ระบบจะยึดเอาเวลาสิ้นสุดวันเป็นค่าพื้นฐาน

ตัวอย่างรายการรับชำระเงินที่มีการกำหนด expiry_date และ source เอาไว้แล้ว

curl https://api.omise.co/charges \
 -X POST \
 -u skey_test_59rnqoboimgxvjk894d: \
 -d "description=Your description here" \
 -d "amount=150" \
 -d "currency=jpy" \
 -d "source=src_5babhlfyw8g7smtk44u" \
 -d "expiry_date=2018-04-15"

ตัวอย่าง JSON response

 {
  "object": "charge",
  "id": "chrg_5babhz7ufmaxu5wi03y",
  "livemode": true,
  "location": "/charges/chrg_5babhz7ufmaxu5wi03y",
  "amount": 150,
  "currency": "jpy",
  "description": "test multipay charge",
  "metadata": {
  },
  "status": "pending",
  "capture": true,
  "authorized": false,
  "reversed": false,
  "voided": false,
  "paid": false,
  "transaction": null,
  "refunded": 0,
  "refunds": {
    "object": "list",
    "from": "1970-01-01T00:00:00Z",
    "to": "2018-03-16T02:53:39Z",
    "offset": 0,
    "limit": 20,
    "total": 0,
    "order": null,
    "location": "/charges/chrg_5babhz7ufmaxu5wi03y/refunds",
    "data": [

    ]
  },
  "return_uri": null,
  "reference": null,
  "authorize_uri": "https://pay.omise.co/offlines/econtext/instructions/oflp_om1s3yqgwaldlnhy6y3",
  "failure_code": null,
  "failure_message": null,
  "card": null,
  "customer": null,
  "ip": null,
  "dispute": null,
  "created": "2018-03-16T02:53:39Z",
  "source": {
    "object": "source",
    "id": "src_5babhlfyw8g7smtk44u",
    "references": {
      "payment_code": "553384",
      "expires_at": "2018-04-06T14:59:00Z"
    },
    "type": "econtext",
    "flow": "offline",
    "amount": 150,
    "currency": "jpy",
    "name": "Customer",
    "email": "customer@email.co",
    "phone_number": "01234567891"
  },
  "disputable": false,
  "capturable": false,
  "reversible": false,
  "refundable": false
}

*URL ที่เจ้าของร้านให้ลูกค้านำไปใช้จะอยู่ที่ field authorize_uri. โดยจะแสดงร้านสะดวกซื้อที่รองรับการชำระเงินทั้งหมด รวมถึงอธิบายวิธีการทำรายการไว้อย่างละเอียด (สำหรับท่านที่ใช้งานในโหมดทดสอบ จะได้รับ URL ตัวอย่างสำหรับใช้ทดสอบ)

ร้านค้าสามารถเรียกดูสถานะการชำระเงินได้ตลอด ศึกษาวิธีการดูสถานะรายการได้ที่คู่มือ Charges API

  • รายการที่ authorized และ paid มีสถานะเป็น true คือรายการรับชำระเงินสำเร็จ
  • รายการที่ authorized และ paid มีสถานะเป็น false คือรายการรับชำระเงินไม่สำเร็จ ระบบจะแสดงคำชี้แจง failure_code และ failure_message ในรายละเอียดรายการ
  • ไม่มีกรณีที่ authorized และ paid มีสถานะต่างกัน

Failure codes

Code Description
payment_cancelled ผู้จ่ายยกเลิกการทำรายการ
timeout ผู้จ่ายไม่ได้ทำรายการภายในระยะเวลาที่กำหนด
failed_processing เกิดจากสาเหตุอื่นๆ