Refunds
ออก refund เต็มจำนวนหรือบางส่วนให้กับลูกค้าได้อย่างรวดเร็วและง่ายดายผ่าน Omise API หรือ dashboard
ภาพรวม
Omise อนุญาตให้คุณ refund การชำระเงินที่ทำผ่านวิธีการชำระเงินส่วนใหญ่ Refunds สามารถเป็นแบบเต็มจำนวน (ทั้งหมด) หรือบางส่วน (ส่วนหนึ ่งของจำนวน) ขึ้นอยู่กับวิธีการชำระเงินที่ใช้
คุณสมบัติหลัก:
- การประมวลผล refund แบบทันที
- รองรับ refund เต็มจำนวนและบางส่วน (สำหรับวิธีที่รองรับ)
- ช่วงเวลา refund สูงสุด 365 วัน
- หักจากยอดโอนอัตโนมัติ
- การแจ้งเตือน Webhook
วิธีการชำระเงินที่รองรับ
รองรับ Refund เต็มจำนวนและบางส่วน
- ✅ Credit/Debit Cards - เต็มจำนวนและบางส่วน (สูงสุด 15 ครั้งต่อ charge)
- ✅ DuitNow - เต็มจำนวนและบางส่วนภายใน 180 วัน
- ✅ PayNow - เต็มจำนวนและบางส่วนภายใน 6 เดือน
- ✅ GrabPay - เต็มจำนวนและบางส่วนภายใน 3 เดือน
- ✅ ShopeePay - เต็มจำนวนและบางส่วนภายใน 180 วัน
Refund เต็มจำนวนเท่านั้น
- ⚠️ Installments - refund เต็มจำนวนเท่านั้น (ช่วงเวลาแตกต่างกันตามธนาคาร: 30 วันถึง 1 ปี)
- ⚠️ TrueMoney - refund เต็มจำนวนเท่านั้นภายใน 30 วัน
ไม่รองรับ Refund
- ❌ PromptPay - ไม่สามารถ refund ได้
- ❌ Mobile Banking (ไทย) - ไม่สามารถ refund ได้
- ❌ Internet Banking (ไทย) - ไม่สามารถ refund ได้
- ❌ Konbini/Pay-easy (ญี่ปุ่น) - ไม่สามารถ refund ได้
- ❌ Online Direct Debit - ไม่สามารถ refund ได้
ตรวจสอบเอกสารวิธีการชำระเงิน
ตรวจสอบนโยบาย refund ของวิธีการชำระเงินเฉพาะก่อนการใช้งานเสมอ การรองรับ refund และช่วงเวลาแตกต่างกันอย่างมาก
Refunds ทำงานอย่างไร
การสร้าง Refunds
Refund เต็มจำนวน
- cURL
- Node.js
- PHP
- Python
curl https://api.omise.co/charges/chrg_test_5rt6s9vah5lkvi1rh9c/refunds \
-u skey_test_YOUR_SECRET_KEY: \
-d "amount=10025"
const omise = require('omise')({
secretKey: 'skey_test_YOUR_SECRET_KEY'
});
// Full refund
const refund = await omise.charges.refund('chrg_test_...', {
amount: 10025
});
console.log(refund.status); // 'pending'
<?php
$charge = OmiseCharge::retrieve('chrg_test_5rt6s9vah5lkvi1rh9c');
$refund = $charge->refund(array(
'amount' => 10025
));
echo $refund['status']; // 'pending'
?>
import omise
omise.api_secret = 'skey_test_YOUR_SECRET_KEY'
charge = omise.Charge.retrieve('chrg_test_5rt6s9vah5lkvi1rh9c')
refund = charge.refund(amount=10025)
print(refund.status) # 'pending'
Refund บางส่วน
// Refund ส่วนหนึ่งของ charge (เช่น THB 50 จาก THB 100.25)
const partialRefund = await omise.charges.refund('chrg_test_...', {
amount: 5000 // THB 50.00 (ในหน่วยที่เล็กที่สุด)
});
// ลูกค้าได้รับเงินคืน THB 50
// ผู้ขายเก็บ THB 50.25
Refunds บางส่วนหลายครั้ง
// Refund บางส่วนครั้งแรก (THB 30)
await omise.charges.refund(chargeId, { amount: 3000 });
// Refund บางส่วนครั้งที่สอง (THB 20)
await omise.charges.refund(chargeId, { amount: 2000 });
// Refund บางส่วนครั้งที่สาม (THB 50)
await omise.charges.refund(chargeId, { amount: 5000 });
// รวม refund: THB 100
// สูงสุด: 15 ครั้งต่อ charge