ข้ามไปยังเนื้อหาหลัก
เวอร์ชัน: ล่าสุด

Cards API

ภาพรวม

Cards API ช่วยให้คุณสามารถจัดการบัตรเครดิตและบัตรเดบิตที่บันทึกไว้ในโปรไฟล์ลูกค้า บัตรต้องถูกแนบกับลูกค้าเพื่อบันทึกไว้สำหรับการใช้งานในอนาคต

บัตรเป็นทรัพยากรของลูกค้า

บัตรใน Omise API มีความเกี่ยวข้องกับลูกค้าเสมอ ในการจัดการบัตร ให้ใช้ Customer Cards endpoint

Endpoint ที่มีให้บริการ

การดำเนินการกับบัตรทั้งหมดอยู่ภายใต้ Customers API:

สิ่งที่คุณสามารถทำได้

  • บันทึกบัตร - แนบบัตรที่ผ่านการโทเค็นไนซ์แล้วกับลูกค้า
  • แสดงรายการบัตรของลูกค้า - ดูบัตรทั้งหมดของลูกค้า
  • อัปเดตรายละเอียดบัตร - เปลี่ยนแปลงเมตาดาต้าของบัตร (ชื่อ, วันหมดอายุ, ที่อยู่สำหรับเรียกเก็บเงิน)
  • ตั้งค่าบัตรเริ่มต้น - เลือกบัตรที่จะใช้สำหรับการชาร์จ
  • ลบบัตร - ลบบัตรออกจากโปรไฟล์ลูกค้า
  • จัดการหลายบัตร - บันทึกวิธีการชำระเงินหลายวิธีต่อลูกค้า

บัตรทำงานอย่างไร

1. โทเค็นไนซ์ข้อมูลบัตร

ขั้นแรก สร้างโทเค็นโดยใช้ public key ของคุณ (ฝั่งไคลเอนต์):

// ฝั่งไคลเอนต์ด้วย Omise.js
Omise.setPublicKey('pkey_test_...');
Omise.createToken('card', {
name: 'JOHN DOE',
number: '4242424242424242',
expiration_month: 12,
expiration_year: 2025,
security_code: '123'
}, (status, response) => {
if (status === 200) {
// ส่งโทเค็นไปยังเซิร์ฟเวอร์
sendTokenToServer(response.id);
}
});

2. แนบบัตรกับลูกค้า

จากนั้น แนบโทเค็นกับลูกค้า (ฝั่งเซิร์ฟเวอร์):

// ฝั่งเซิร์ฟเวอร์
const customer = await omise.customers.update('cust_test_...', {
card: 'tokn_test_...'
});

console.log('เพิ่มบัตรแล้ว:', customer.cards.data[0].id);

3. ใช้บัตรที่บันทึกไว้

ชาร์จบัตรเริ่มต้นของลูกค้า:

const charge = await omise.charges.create({
amount: 100000,
currency: 'thb',
customer: 'cust_test_...'
});

หรือระบุบัตรเฉพาะ:

const charge = await omise.charges.create({
amount: 100000,
currency: 'thb',
customer: 'cust_test_...',
card: 'card_test_...'
});

โครงสร้างออบเจ็กต์ Card

{
"object": "card",
"id": "card_test_5xuy4w91xqz7d1w9u0t",
"livemode": false,
"location": "/customers/cust_test_.../cards/card_test_...",
"country": "th",
"city": "Bangkok",
"postal_code": "10320",
"financing": "",
"bank": "Bank of Ayudhya",
"brand": "Visa",
"fingerprint": "XK2FJbz+kQFvd/kLLRm1BVXR1kbwJpQp+lkFZyqP0u8=",
"last_digits": "4242",
"name": "JOHN DOE",
"expiration_month": 12,
"expiration_year": 2025,
"security_code_check": true,
"created_at": "2025-02-07T00:00:00Z"
}

ความปลอดภัยและการปฏิบัติตาม PCI

✅ วิธีที่ปลอดภัย

  • อย่าส่งข้อมูลบัตรดิบ - อย่าส่งไปยังเซิร์ฟเวอร์
  • โทเค็นไนซ์เสมอ - ใช้ Omise.js (public key)
  • บันทึกเฉพาะโทเค็นหรือ card ID
  • อย่าบันทึกหมายเลขบัตรหรือรหัส CVV ในล็อก
  • ใช้ HTTPS สำหรับคำขอ API ทั้งหมด
  • ตรวจสอบที่ไคลเอนต์ - ก่อนการโทเค็นไนซ์

การจัดเก็บข้อมูลบัตร

เมื่อคุณบันทึกบัตรให้กับลูกค้า:

  • ✅ Omise จัดเก็บข้อมูลบัตรที่เข้ารหัส
  • ✅ คุณได้รับ card ID (card_test_...)
  • ✅ สามารถแสดง 4 หลักสุดท้าย, แบรนด์, วันหมดอายุ
  • ❌ คุณไม่ได้รับหมายเลขบัตรเต็ม
  • ❌ CVV ไม่ถูกเก็บบันทึก (จำเป็นเสมอสำหรับการชาร์จ)

ตัวอย่างการใช้งาน

การสมัครสมาชิกและการเรียกเก็บเงินแบบประจำ

บันทึกบัตรของลูกค้าสำหรับการชาร์จแบบประจำ:

// บันทึกบัตร
const customer = await omise.customers.create({
email: 'subscriber@example.com',
card: 'tokn_test_...'
});

// ชาร์จรายเดือน
async function chargeMonthly() {
const charge = await omise.charges.create({
amount: 99900, // การสมัครสมาชิก 999 บาท
currency: 'thb',
customer: customer.id,
description: 'การสมัครสมาชิกรายเดือน'
});
}

การชำระเงินด้วยคลิกเดียว

อนุญาตให้ลูกค้าชำระเงินโดยไม่ต้องกรอกรายละเอียดบัตรใหม่:

// ลูกค้าเลือกบัตรที่บันทึกไว้ที่หน้าชำระเงิน
const cards = await omise.customers.listCards('cust_test_...');

// แสดงบัตรให้กับลูกค้า
cards.data.forEach(card => {
console.log(`${card.brand} (4 หลักสุดท้าย: ${card.last_digits})`);
});

// ชาร์จบัตรที่เลือก
const charge = await omise.charges.create({
amount: 150000,
currency: 'thb',
customer: 'cust_test_...',
card: selectedCardId
});

อัปเดตบัตรที่หมดอายุ

อัปเดตวันหมดอายุของบัตร:

const updatedCard = await omise.customers.updateCard(
'cust_test_...',
'card_test_...',
{
expiration_month: 12,
expiration_year: 2026,
name: 'JOHN DOE'
}
);

แนวทางปฏิบัติที่ดีที่สุด

✅ คำแนะนำ

  • โทเค็นไนซ์ที่ฝั่งไคลเอนต์ - ใช้ Omise.js
  • ตั้งค่าบัตรเริ่มต้น - เพื่อความง่ายในการชาร์จ
  • อัปเดตวันหมดอายุอย่างเชิงรุก
  • ลบบัตรเก่า - เพื่อรักษาโปรไฟล์ให้สะอาด
  • ตรวจสอบบัตร - ด้วยการชาร์จอนุมัติจำนวนเล็กน้อย
  • จัดการการอัปเดตบัตรอย่างเหมาะสม - ใน UI ของคุณ

❌ สิ่งที่ควรหลีกเลี่ยง

  • อย่าส่งข้อมูลบัตรดิบ - ไปยังเซิร์ฟเวอร์
  • อย่าบันทึกรหัส CVV - ผิดกฎหมายและไม่จำเป็น
  • อย่าชาร์จบัตรที่ถูกลบ - ตรวจสอบว่าบัตรมีอยู่ก่อน
  • อย่าละเลยวันหมดอายุ - ตรวจสอบก่อนการชาร์จ
  • อย่าแชร์บัตรระหว่างลูกค้า

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

ดูเพิ่มเติม


พร้อมที่จะเริ่มจัดการบัตรแล้วหรือยัง? เริ่มต้นด้วย แสดงรายการบัตร หรือเรียนรู้เพิ่มเติมเกี่ยวกับ การสร้างลูกค้า