Multi-Currency

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

คู่มือการใช้งานนี้จะอธิบายวิธีการรับชำระเงินในสกุลเงินต่างประเทศ

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

  • ประเทศที่รองรับ: ประเทศไทย, สิงคโปร์
  • API เวอร์ชันล่าสุดที่รองรับ: 2014-07-27

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

หมายเหตุ:

  • การรับชำระเงินในสกุลเงินต่างประเทศสามารถรับผ่านบัตรเครดิตและบัตรเดบิตเท่านั้น ช่องทางการรับชำระเงินอื่นๆ ไม่รองรับบริการนี้
  • ในประเทศไทย ฟีเจอร์นี้สามารถใช้ได้กับบัตร Visa และ Mastercard เท่านั้น
  • ในบางกรณีธนาคารผู้ออกบัตรอาจคิดค่าธรรมเนียมการการชำระเงินเป็นสกุลต่างประเทศกับผู้ถือบัตรเพิ่มเติม แม้ผู้ถือบัตรจะเลือกชำระเป็นสกุลเงินท้องถิ่นของตนเองก็ตาม

สกุลเงินต่างประเทศที่รองรับ

สกุลเงินต่างประเทศที่รองรับจะมีความแตกต่างกัน ขึ้นอยู่กับประเทศที่ร้านค้าลงทะเบียนใช้งานโอมิเซะ

รหัสสกุลเงิน สกุลเงิน ไทย สิงคโปร์ ญี่ปุ่น*
AUD ดอลลาร์ออสเตรเลีย
CAD ดอลลาร์แคนาดา
CHF สวิสฟรังก์
CNY หยวนจีน
DKK โครนเดนมาร์ก
EUR ยูโร
GBP ปอนด์สเตอร์ลิง
HKD ดอลลาร์ฮ่องกง
JPY เยน ✓†
MYR ริงกิตมาเลเซีย
SGD ดอลลาร์สิงคโปร์ ✓†
THB บาท ✓†
USD ดอลลาร์สหรัฐ

* บริการนี้ยังไม่รองรับร้านค้าที่ลงทะเบียนใช้งานโอมิเซะในประเทศญี่ปุ่น
สกุลเงินท้องถิ่นของร้านค้า

การใช้งาน

ตัวอย่างนี้แสดงวิธีการสร้างรายการรับชำระเงินจำนวน 1,000 ดอลลาร์สหรัฐ จากร้านค้าที่ลงทะเบียนใช้งานในประเทศไทย

การสร้างรายการรับชำระเงินในสกุลเงินต่างประเทศ มีวิธีการคล้ายกันกับการสร้างรายการรับชำระเงินปกติ

  1. สร้าง token ใหม่
  2. สร้างรายการรับชำระเงินใหม่ โดยระบุ currency เป็นสกุลเงินอื่นๆ ที่ไม่ใช่สกุลเงินท้องถิ่นของร้านค้า

การสร้าง token

สามารถอ่านวิธีการสร้าง token ใหม่ ได้จากคู่มือ Omise.js ในการทดสอบระบบ สามารถทดสอบตามตัวอย่างที่แสดงในคู่มือการใช้งานนี้ สำหรับแบบฟอร์มชำระเงิน สามารถคัดลอกโค้ดตัวอย่างนี้แล้ววางลงในหน้าชำระเงิน

<form id="checkout-form" method="POST" action="/checkout">
  <script type="text/javascript" src="https://cdn.omise.co/omise.js"
          data-key="OMISE_PUBLIC_KEY"
          data-amount="100000"
          data-currency="USD">
  </script>
</form>

การสร้างรายการรับชำระเงินสกุลต่างประเทศ

นำ token ที่ได้จากขั้นตอนแรก มาสร้างรายการรับชำระเงินใหม่ โดยส่งคำสั่งผ่าน charge API ตรวจสอบข้อมูลด้านล่างนี้ ใน charge object ที่ได้รับตอบกลับ:

  • currency: สกุลเงินที่ระบุในขั้นตอนการสร้างรายการรับชำระเงิน (USD)
  • funding_currency: สกุลเงินท้องถิ่นของร้านค้า (THB)
  • funding_amount: ยอดรับชำระเงินเมื่อทำการแปลงจากสกุลเงินต่างประเทศเป็นสกุลเงินท้องถิ่นของร้านค้า

นอกจาก amount และ refunded_amount แล้ว ยอดทั้งหมดจะแสดงเป็นสกุลเงินท้องถิ่นของร้านค้า

curl https://api.omise.co/charges \
  -X POST \
  -u $OMISE_SECRET_KEY: \
  -d "amount=100000" \
  -d "currency=USD" \
  -d "card=$TOKEN_ID"
{
  "object": "charge",
  "id": "chrg_test_5jk1yuwnxdo3mr1ua63",
  "location": "/charges/chrg_test_5jk1yuwnxdo3mr1ua63",
  "amount": 100000,
  "net": 3017353,
  "fee": 114609,
  "fee_vat": 8023,
  "interest": 0,
  "interest_vat": 0,
  "funding_amount": 3139985,
  "refunded_amount": 0,
  "authorized": true,
  "capturable": false,
  "capture": true,
  "disputable": true,
  "livemode": false,
  "refundable": true,
  "reversed": false,
  "reversible": false,
  "voided": false,
  "paid": true,
  "expired": false,
  "platform_fee": {
    "fixed": null,
    "amount": null,
    "percentage": null
  },
  "currency": "USD",
  "funding_currency": "THB",
  "ip": null,
  "refunds": {
    "object": "list",
    "data": [],
    "limit": 20,
    "offset": 0,
    "total": 0,
    "location": "/charges/chrg_test_5jk1yuwnxdo3mr1ua63/refunds",
    "order": "chronological",
    "from": "1970-01-01T00:00:00Z",
    "to": "2020-04-15T08:01:47Z"
  },
  "link": null,
  "description": null,
  "metadata": {},
  "card": {
    "object": "card",
    "id": "card_test_5jk1yupbzqvn598opcl",
    "livemode": false,
    "location": null,
    "deleted": false,
    "street1": null,
    "street2": null,
    "city": "Bangkok",
    "state": null,
    "phone_number": null,
    "postal_code": "10320",
    "country": "gb",
    "financing": "credit",
    "bank": "SAMPLE BANK",
    "brand": "Visa",
    "fingerprint": "XjOdjaoHRvUGRfmZacMPcJtm0U3SEIIfkA7534dQeVw=",
    "first_digits": null,
    "last_digits": "4242",
    "name": "Somchai Prasert",
    "expiration_month": 9,
    "expiration_year": 2020,
    "security_code_check": true,
    "created_at": "2020-04-15T08:01:46Z"
  },
  "source": null,
  "schedule": null,
  "customer": null,
  "dispute": null,
  "transaction": "trxn_test_5jk1yuxyzv61x6x7k7p",
  "failure_code": null,
  "failure_message": null,
  "status": "successful",
  "authorize_uri": null,
  "return_uri": null,
  "created_at": "2020-04-15T08:01:47Z",
  "paid_at": "2020-04-15T08:01:47Z",
  "expires_at": "2020-04-22T08:01:47Z",
  "expired_at": null,
  "reversed_at": null,
  "zero_interest_installments": true
}

อัตราแลกเปลี่ยน

เมื่อได้รับชำระเงินในสกุลเงินต่างประเทศ ระบบจะทำการแปลงยอดเงินนั้น ๆ เป็นสกุลเงินท้องถิ่นของร้านค้าโดยอัตโนมัติก่อนจะทำการสรุปยอดเข้าบัญชี อัตราแลกเปลี่ยนที่ใช้เป็นอัตราแลกเปลี่ยนซึ่งมีการอัปเดตแบบเรียลไทม์ ซึ่งจะสูงกว่าราคากลางของตลาด (mid-market rate) ประมาณ 2-4% สามารถเรียกดูอัตราแลกเปลี่ยนที่ใช้ได้ผ่าน Forex API

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

curl https://api.omise.co/forex/usd \
  -u $OMISE_SECRET_KEY:
{
  "object": "forex",
  "rate": 31.399849000000003,
  "location": "/forex/usd",
  "livemode": false,
  "base": "USD",
  "quote": "THB"
}

การคืนเงิน

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

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

curl https://api.omise.co/charges/$CHARGE_ID/refunds \
  -X POST \
  -u $OMISE_SECRET_KEY: \
  -d "amount=100000"
{
  "object": "refund",
  "id": "rfnd_test_5jk1yv64nx2f3h0w32n",
  "location": "/charges/chrg_test_5jk1yuhvh2jgvpe3qig/refunds/rfnd_test_5jk1yv64nx2f3h0w32n",
  "livemode": false,
  "voided": true,
  "currency": "USD",
  "amount": 100000,
  "metadata": {},
  "charge": "chrg_test_5jk1yuhvh2jgvpe3qig",
  "transaction": "trxn_test_5jk1yv6ham3stbdvrnr",
  "status": "closed",
  "funding_amount": 3139985,
  "funding_currency": "THB",
  "created_at": "2020-04-15T08:01:48Z"
}

แดชบอร์ด

ตัวอย่างรายการที่แสดงบนแดชบอร์ด:

Multi-currency charge

ข้อขัดข้อง

หากร้านค้าไม่ได้ทำการเปิดใช้งานสกุลเงินต่างประเทศไว้ และได้ทำการสร้างรายการในสกุลเงินต่างประเทศ รายการจะไม่สำเร็จ โดยจะแสดงรหัสข้อขัดข้องเป็น failed_multi_currency

กรุณาติดต่อ support@omise.co หากพบข้อขัดข้องนี้

บัญชีร้านค้าที่ไม่ได้ตั้งค่าเพื่อรับสกุลเงินต่างประเทศจะไม่สามารถรับชำระรายการที่จ่ายด้วยสกุลเงินต่างประเทศได้ โดยจะขึ้นว่า invalid_charge

ขั้นตอนถัดไป