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

Refunds API

ภาพรวม

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

การคืนเงินคืออะไร

การคืนเงินคือออบเจ็กต์ที่แสดงถึงจำนวนเงินที่คืนให้กับลูกค้า:

  • การคืนเงินเต็มจำนวน - คืนเงินทั้งหมดของการเรียกเก็บเงิน
  • การคืนเงินบางส่วน - คืนเงินบางส่วนของการเรียกเก็บเงิน
  • การคืนเงินหลายครั้ง - ออกการคืนเงินบางส่วนหลายครั้งจนถึงจำนวนเงินเดิม
  • การประมวลผลอัตโนมัติ - คืนเงินเข้าบัตรของลูกค้าโดยอัตโนมัติ

ฟีเจอร์หลัก

ตัวเลือกการคืนเงินที่ยืดหยุ่น

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

การจัดการที่ง่ายดาย

  • แสดงรายการการคืนเงิน - ดูการคืนเงินทั้งหมดสำหรับการเรียกเก็บเงิน
  • ติดตามสถานะ - ตรวจสอบการประมวลผลการคืนเงิน
  • ค้นหาการคืนเงิน - ค้นหาธุรกรรมการคืนเงินที่ระบุ
  • บันทึกตรวจสอบ - ประวัติการคืนเงินที่สมบูรณ์

การจัดการอัตโนมัติ

  • ตรงไปยังบัตร - คืนเงินเข้าบัตรเดิมของลูกค้า
  • ไม่ต้องให้ลูกค้าดำเนินการ - ประมวลผลอัตโนมัติ
  • การจัดการค่าธรรมเนียม - จัดการค่าธรรมเนียมธุรกรรมตามนโยบาย
  • สกุลเงินตรงกัน - สกุลเงินเดียวกับการเรียกเก็บเงินเดิม

การคืนเงินทำงานอย่างไร

ขั้นตอนมาตรฐาน

┌─────────┐         ┌─────────┐         ┌─────────┐
│ Your │ │ Omise │ │ Customer│
│ Server │ │ API │ │ Bank │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
│ 1. Create refund │ │
├──────────────────>│ │
│ │ │
│ 2. Return refund │ │
│<──────────────────┤ │
│ │ │
│ │ 3. Process refund │
│ ├──────────────────>│
│ │ │
│ │ 4. Funds returned │
│ │<──────────────────┤
│ │ │
│ 5. Webhook notify │ │
│<──────────────────┤ │
│ │ │

ไทม์ไลน์การคืนเงิน

  1. ทันที: สร้างการคืนเงินในระบบ Omise
  2. กำลังประมวลผล: ส่งไปยังเครือข่ายบัตร (ทันที)
  3. ลูกค้าเห็น: โดยปกติ 5-10 วันทำการ
  4. ส่ง Webhook: เมื่อการคืนเงินเสร็จสมบูรณ์

API Endpoints

เมธอดEndpointคำอธิบาย
POST/charges/:id/refundsสร้างการคืนเงินสำหรับการเรียกเก็บเงิน
GET/refunds/:idดึงข้อมูลรายละเอียดการคืนเงิน
GET/charges/:id/refundsแสดงรายการการคืนเงินทั้งหมดสำหรับการเรียกเก็บเงิน

เริ่มต้นอย่างรวดเร็ว

การคืนเงินเต็มจำนวน

// Refund entire charge
const refund = await omise.charges.refund('chrg_test_5xuy4w91xqz7d1w9u0t');

console.log('Refund created:', refund.id);
console.log('Amount:', refund.amount);
console.log('Status:', refund.status);

การคืนเงินบางส่วน

// Refund portion of charge
const refund = await omise.charges.refund('chrg_test_5xuy4w91xqz7d1w9u0t', {
amount: 50000 // Refund ฿500 of ฿1000 charge
});

console.log('Refunded:', refund.amount);
console.log('Original:', refund.charge.amount);

การคืนเงินบางส่วนหลายครั้ง

// Issue multiple refunds for same charge
const refund1 = await omise.charges.refund(chargeId, { amount: 30000 });
const refund2 = await omise.charges.refund(chargeId, { amount: 20000 });

// Check total refunded
const charge = await omise.charges.retrieve(chargeId);
console.log('Total refunded:', charge.refunded_amount);
console.log('Remaining:', charge.amount - charge.refunded_amount);

กรณีการใช้งานทั่วไป

การคืนสินค้า

// Customer returns product
const refund = await omise.charges.refund(chargeId, {
amount: productPrice,
metadata: {
reason: 'product_return',
order_id: 'ORDER-123',
return_tracking: 'TRACK-456'
}
});

การยกเลิกคำสั่งซื้อ

// Cancel order, full refund
const refund = await omise.charges.refund(chargeId, {
metadata: {
reason: 'order_cancelled',
cancelled_by: 'customer'
}
});

การคืนเงินบางส่วน (สินค้าชำรุด)

// Refund portion for damaged item
const refund = await omise.charges.refund(chargeId, {
amount: damageCompensation, // e.g., 30% of original
metadata: {
reason: 'partial_damage',
compensation_rate: 0.3
}
});

กฎการคืนเงิน

เวลา

  • สามารถคืนเงินได้: ได้ตลอดเวลาหลังจากการเรียกเก็บเงินสำเร็จ
  • ไม่สามารถคืนเงินได้: การเรียกเก็บเงินที่ล้มเหลวหรืออยู่ระหว่างดำเนินการ
  • ระยะเวลา: ไม่มีข้อจำกัด (สามารถคืนเงินได้แม้หลายปีต่อมา)

จำนวนเงิน

  • ขั้นต่ำ: 1 หน่วยในสกุลเงิน (1 สตางค์สำหรับบาท)
  • สูงสุด: จำนวนเงินการเรียกเก็บเงินเดิมหักลบด้วยการคืนเงินก่อนหน้า
  • หลายครั้ง: สามารถออกการคืนเงินบางส่วนหลายครั้งได้
  • รวม: ไม่สามารถเกินจำนวนเงินการเรียกเก็บเงินเดิม

คุณสมบัติ

  • การเรียกเก็บเงินที่สำเร็จ - สามารถคืนเงินได้
  • การเรียกเก็บเงินที่รอดำเนินการ - ไม่สามารถคืนเงินได้
  • การเรียกเก็บเงินที่ล้มเหลว - ไม่สามารถคืนเงินได้
  • คืนเงินบางส่วนแล้ว - สามารถคืนเงินส่วนที่เหลือได้

ค่าธรรมเนียมธุรกรรม

การจัดการค่าธรรมเนียม

  • การคืนเงินเต็มจำนวน: ค่าธรรมเนียมธุรกรรมอาจได้รับคืน (ขึ้นอยู่กับนโยบาย)
  • การคืนเงินบางส่วน: โดยปกติค่าธรรมเนียมจะไม่ได้รับคืน
  • ตรวจสอบนโยบาย: ติดต่อฝ่ายสนับสนุนสำหรับนโยบายค่าธรรมเนียมการคืนเงินของบัญชีของคุณ

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

✅ แนะนำ

  • เพิ่ม Metadata เพื่อบันทึกเหตุผลการคืนเงิน
  • ตรวจสอบสถานะการเรียกเก็บเงิน ก่อนคืนเงิน (ต้องสำเร็จ)
  • ตรวจสอบจำนวนเงินที่สามารถคืนได้ (จำนวนเงินเดิม - จำนวนที่คืนแล้ว)
  • แจ้งให้ลูกค้าทราบ เมื่อออกการคืนเงิน
  • ติดตาม ID การคืนเงิน ในระบบของคุณ
  • ตั้งค่า Webhooks เพื่อรับการแจ้งเตือนการคืนเงิน
  • จัดการข้อผิดพลาดอย่างเหมาะสม (เงินไม่เพียงพอ ฯลฯ)

❌ ไม่แนะนำ

  • อย่าคืนเงินการเรียกเก็บเงินที่รอดำเนินการ (จะล้มเหลว)
  • อย่าเกินจำนวนเงินเดิม (จะล้มเหลว)
  • อย่าคาดหวังเครดิตทันที (ใช้เวลา 5-10 วัน)
  • อย่าคืนเงินโดยไม่มีการยืนยัน (ตรวจสอบความถูกต้อง)
  • อย่าข้ามการติดตามเหตุผล (ใช้ Metadata)

การทดสอบ

การคืนเงินในโหมดทดสอบ

// Test refunds work same as live
const refund = await omise.charges.refund('chrg_test_xxx', {
amount: 50000
});

// Check refund in test dashboard
console.log('Test refund:', refund.id);

การจัดการข้อผิดพลาด

ข้อผิดพลาดการคืนเงินทั่วไป:

รหัสข้อผิดพลาดคำอธิบายวิธีแก้ไข
not_refundableไม่สามารถคืนเงินการเรียกเก็บเงินนี้ได้ตรวจสอบสถานะการเรียกเก็บเงิน
insufficient_refundable_amountจำนวนเงินเกินยอดคงเหลือที่สามารถคืนได้ตรวจสอบ refunded_amount
invalid_amountจำนวนเงินไม่ถูกต้องตรวจสอบว่าจำนวนเงิน > 0

เอกสารอ้างอิง API

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


ต้องการความช่วยเหลือ? ดูคู่มือการคืนเงินของเรา หรือติดต่อ support@omise.co