ข้ามไปยังเนื้อหาหลัก

Omise ทำงานอย่างไร

การทำความเข้าใจแนวคิดหลักของ Omise จะช่วยให้คุณสร้างการผูกรวมการชำระเงินที่ปลอดภัยและมีประสิทธิภาพ เรียนรู้เกี่ยวกับ tokens, charges, sources และกระบวนการชำระเงิน

ภาพรวม

Omise เป็น payment gateway ที่ได้รับการรับรอง PCI ที่ช่วยให้ธุรกิจสามารถรับการชำระเงินอย่างปลอดภัยโดยไม่ต้องจัดการข้อมูลบัตรที่ละเอียดอ่อนโดยตรง โดยใช้สถาปัตยกรรมแบบ token-based Omise ช่วยให้ข้อมูลบัตรไม่อยู่ในเซิร์ฟเวอร์ของคุณ ลดภาระการปฏิบัติตาม PCI ของคุณพร้อมรักษาความปลอดภัย

แนวคิดหลัก

1. สถาปัตยกรรม Payment Gateway

Omise อยู่ระหว่างแอปพลิเคชันของคุณและ payment processors โดยจัดการ:

  • Tokenization: แปลงข้อมูลที่ละเอียดอ่อนเป็น tokens ที่ปลอดภัย
  • Authorization: ตรวจสอบและอนุมัติการชำระเงิน
  • Settlement: ย้ายเงินจากลูกค้าไปยังบัญชีของคุณ
  • Reconciliation: ติดตามและรายงานธุรกรรมทั้งหมด

2. โมเดลสองเซิร์ฟเวอร์

Omise ใช้ API endpoints สองตัวที่แยกกันเพื่อความปลอดภัย:

Vault Server (vault.omise.co)

  • วัตถุประสงค์: จัดการข้อมูลผู้ถือบัตรที่ละเอียดอ่อน
  • ใช้กับ: Public keys
  • การดำเนินการ: สร้าง tokens และ sources
  • ความปลอดภัย: แยกข้อมูลบัตรจาก main API

API Server (api.omise.co)

  • วัตถุประสงค์: จัดการการดำเนินการอื่นๆ ทั้งหมด
  • ใช้กับ: Secret keys
  • การดำเนินการ: สร้าง charges, refunds, transfers ฯลฯ
  • ความปลอดภัย: ไม่เคยรับข้อมูลบัตรดิบ
ทำไมต้องมีสองเซิร์ฟเวอร์?

การแยกนี้ช่วยให้แน่ใจว่าข้อมูลบัตรที่ละเอียดอ่อนไม่เคยถูกสัมผัสเซิร์ฟเวอร์ของคุณหรือ main API ซึ่งช่วยลดความต้องการการปฏิบัติตาม PCI ของคุณอย่างมาก

3. API Keys

Omise ใช้ API keys สามแบบ:

Key Typeรูปแบบกรณีการใช้งานปลอดภัยสำหรับ Client?
Public Keypkey_test_...Tokenization✅ ใช่
Secret Keyskey_test_...การดำเนินการทั้งหมด❌ ไม่ (server เท่านั้น)
Chain Keyck_test_...Sub-merchants❌ ไม่ (server เท่านั้น)

เรียนรู้เพิ่มเติมเกี่ยวกับ authentication →

4. Payment Objects

Tokens

Token แสดงถึงวิธีการชำระเงิน (มักเป็นบัตร) และสามารถใช้ครั้งเดียวเพื่อสร้าง charge

คุณสมบัติ:

  • ใช้ได้ครั้งเดียวเท่านั้น
  • ใช้ได้นาน 30 นาทีหลังจากสร้าง
  • มีข้อมูลบัตรที่ tokenize แล้ว
  • สร้างด้วย public key

ตัวอย่าง:

{
"object": "token",
"id": "tokn_test_5xp6ca4dtzx5cskm9mk",
"used": false,
"card": {
"brand": "Visa",
"last_digits": "4242",
"expiration_month": 12,
"expiration_year": 2027
}
}

Charges

Charge แสดงถึงคำขอชำระเงินไปยังวิธีการชำระเงินของลูกค้า

คุณสมบัติ:

  • สร้างด้วย token, source หรือ customer card
  • สามารถอนุมัติ (captured ภายหลัง) หรือ captured ทันที
  • รองรับ metadata สำหรับการติดตามแบบกำหนดเอง
  • สร้าง transaction เมื่อสำเร็จ

ตัวอย่าง:

{
"object": "charge",
"id": "chrg_test_5xp6ccfmecft4zxrb7p",
"amount": 100000,
"currency": "thb",
"status": "successful",
"paid": true,
"authorized": true,
"captured": true
}

สถานะ Charge:

  • pending - รอการชำระเงิน (สำหรับวิธีการ async)
  • successful - การชำระเงินเสร็จสมบูรณ์
  • failed - การชำระเงินถูกปฏิเสธหรือล้มเหลว
  • expired - หน้าต่างการชำระเงินหมดอายุ (วิธีการ async)

Sources

Source แสดงถึงวิธีการชำระเงินทางเลือกเช่น PromptPay, mobile banking หรือรหัส QR

คุณสมบัติ:

  • สร้างสำหรับวิธีการชำระเงินเฉพาะ
  • สามารถใช้ครั้งเดียวหรือใช้ซ้ำได้
  • มักมีคำแนะนำการชำระเงิน (รหัส QR, รายละเอียดธนาคาร)
  • ต้องการการดำเนินการของลูกค้าเพื่อให้เสร็จสมบูรณ์

ตัวอย่าง:

{
"object": "source",
"id": "src_test_5xp6ccfmecft4zxrb7p",
"type": "promptpay",
"flow": "redirect",
"amount": 100000,
"currency": "thb",
"scannable_code": {
"image": {
"download_uri": "https://...",
"type": "qr_code"
}
}
}

Customers

Customer object เก็บวิธีการชำระเงินสำหรับ recurring charges

คุณสมบัติ:

  • สามารถเก็บหลายบัตร
  • เปิดใช้งาน subscription billing
  • รองรับ metadata สำหรับการติดตามแบบกำหนดเอง
  • บัตรที่แนบกับลูกค้าสามารถเรียกเก็บเงินซ้ำได้

ตัวอย่าง:

{
"object": "customer",
"id": "cust_test_5xp6ccfmecft4zxrb7p",
"email": "customer@example.com",
"description": "John Doe",
"cards": {
"total": 1,
"data": [...]
}
}

กระบวนการชำระเงิน

กระบวนการชำระเงินบัตรมาตรฐาน

นี่คือวิธีการทำงานของการชำระเงินบัตรทั่วไป:

ทีละขั้นตอน:

  1. ลูกค้ากรอกรายละเอียดบัตร บนหน้า checkout ของคุณ
  2. เบราว์เซอร์ส่งข้อมูลบัตร ไปยัง Omise Vault (ใช้ public key)
  3. Omise ส่งคืน token ที่แสดงถึงบัตร
  4. เบราว์เซอร์ส่ง token ไปยังเซิร์ฟเวอร์ของคุณ (ไม่ใช่ข้อมูลบัตร!)
  5. เซิร์ฟเวอร์ของคุณสร้าง charge โดยใช้ secret key + token
  6. Omise ประมวลผลการชำระเงิน กับธนาคาร
  7. ธนาคารอนุมัติ (หรือปฏิเสธ) การชำระเงิน
  8. Omise ส่งคืนผลลัพธ์ ไปยังเซิร์ฟเวอร์ของคุณ
  9. เซิร์ฟเวอร์ของคุณอัปเดตคำสั่งซื้อ และแสดงการยืนยัน

กระบวนการวิธีการชำระเงินทางเลือก

สำหรับวิธีการเช่น PromptPay หรือ mobile banking:

ความแตกต่างหลัก:

  • สร้าง source แทน token
  • ลูกค้าทำการชำระเงินให้เสร็จสมบูรณ์นอกแอปของคุณ
  • คุณได้รับ webhook เมื่อการชำระเงินเสร็จสมบูรณ์
  • การชำระเงินอาจหมดอายุหากไม่เสร็จสมบูรณ์ในเวลา

กระบวนการข้อมูลและความปลอดภัย

สิ่งที่อยู่อย่างปลอดภัย

หลักการความปลอดภัย:

  • ✅ ข้อมูลบัตรไปยัง Omise Vault โดยตรง (ไม่ผ่านเซิร์ฟเวอร์ของคุณ)
  • ✅ Tokens ใช้ครั้งเดียวและจำกัดเวลา
  • ✅ Secret keys อยู่บนเซิร์ฟเวอร์ของคุณ
  • ✅ การสื่อสารทั้งหมดผ่าน HTTPS
  • ✅ โครงสร้างพื้นฐานที่ปฏิบัติตาม PCI

สิ่งที่คุณควรเก็บ

คุณควรเก็บ:

  • ✅ Charge IDs
  • ✅ Customer IDs
  • ✅ ข้อมูลคำสั่งซื้อ
  • ✅ Metadata
  • ❌ หมายเลขบัตร
  • ❌ รหัส CVV
  • ❌ รายละเอียดบัตรทั้งหมด

สภาพแวดล้อม

โหมดทดสอบ

  • ธุรกรรมจำลอง
  • ไม่มีเงินจริง
  • บัตรและวิธีการชำระเงินทดสอบ
  • Dashboard แยกต่างหาก
  • API keys ที่มี prefix _test_

โหมดจริง

  • ธุรกรรมจริง
  • ประมวลผลเงินจริง
  • บัตรและวิธีการชำระเงินจริง
  • Dashboard production
  • API keys ที่ไม่มี prefix _test_

เรียนรู้เกี่ยวกับโหมดทดสอบกับโหมดจริง →

FAQ

อะไรคือความแตกต่างระหว่าง token และ charge?

Token คือการแสดงที่ปลอดภัยของวิธีการชำระเงิน (เช่นบัตร) มันถูกสร้างขึ้นฝั่ง client และส่งไปยังเซิร์ฟเวอร์ของคุณ

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

คิดว่ามันเป็น: Token = วิธีการชำระเงิน, Charge = คำขอชำระเงิน

ทำไมฉันไม่สามารถใช้ tokens หลายครั้งได้?

Tokens ใช้ครั้งเดียวเพื่อเหตุผลด้านความปลอดภัย หาก tokens สามารถใช้ซ้ำได้ token ที่ถูกบุกรุกอาจส่งผลให้เกิด charges หลายรายการที่ไม่ได้รับอนุญาต

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

จะเกิดอะไรขึ้นหาก charge ล้มเหลว?

Charges ที่ล้มเหลวส่งคืนข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับสาเหตุที่การชำระเงินล้มเหลว:

  • เงินไม่เพียงพอ
  • หมายเลขบัตรไม่ถูกต้อง
  • บัตรถูกปฏิเสธโดยผู้ออก
  • บัตรหมดอายุ

Charge object จะมี status: "failed" และรวม failure_code และ failure_message ที่อธิบายเหตุผล

ฉันจะรู้ได้อย่างไรเมื่อการชำระเงิน async เสร็จสมบูรณ์?

สำหรับวิธีการชำระเงินทางเลือก (PromptPay, mobile banking ฯลฯ) ใช้ webhooks เพื่อรับการแจ้งเตือนเมื่อการชำระเงินเสร็จสมบูรณ์

ตั้งค่า webhook endpoint บนเซิร์ฟเวอร์ของคุณ จากนั้นกำหนดค่าใน Omise dashboard ของคุณ Omise จะ POST ข้อมูลเหตุการณ์ไปยัง endpoint ของคุณเมื่อสถานะการชำระเงินเปลี่ยนแปลง

เรียนรู้เกี่ยวกับ Webhooks →

ฉันสามารถ capture บางส่วนของ pre-authorized charge ได้หรือไม่?

ได้! คุณสามารถ capture น้อยกว่าจำนวนที่อนุมัติ:

// อนุมัติ ฿1,000
omise.charges.create({
amount: 100000,
currency: 'thb',
card: token,
capture: false
});

// Capture เฉพาะ ฿500
omise.charges.capture('chrg_123', {
capture_amount: 50000
});

จำนวนที่ไม่ได้ capture จะถูกปล่อยโดยอัตโนมัติ

อะไรคือความแตกต่างระหว่าง sources และ tokens?
  • Tokens: ใช้สำหรับการชำระเงินบัตร สร้างฝั่ง client ใช้ครั้งเดียว
  • Sources: ใช้สำหรับวิธีการชำระเงินทางเลือก (PromptPay, QR, banking) สามารถรวมคำแนะนำการชำระเงิน อาจต้องการการดำเนินการของลูกค้า

ทั้งสองแสดงถึงวิธีการชำระเงิน แต่ sources จัดการกระบวนการชำระเงินที่ซับซ้อนมากขึ้น

ทรัพยากรที่เกี่ยวข้อง


พร้อมที่จะสร้างหรือไม่? เริ่มต้นด้วย คู่มือเริ่มต้นด่วน ของเรา หรือสำรวจ วิธีการชำระเงินทั้งหมด