การสร้าง Refunds
Refunds ช่วยให้คุณคืนเงินให้กับลูกค้าสำหรับธุรกรรมที่ charge สำเร็จแล้ว คู่มือนี้ครอบคลุมวิธีการสร้าง refunds เต็มจำนวนผ่านทั้ง API และ Dashboard
ภาพรวม
Refunds เป็นสิ่งจำเป็นสำหรับการจัดการการคืนสินค้า การยกเลิก ข้อพิพาทของลูกค้า และสถานการณ์อื่นๆ ที่คุณต้องการกลับรายการการชำระเงิน เมื่อคุณสร้าง refund:
- จำนวน charge เต็มจำนวนจะถูกคืนให้กับวิธีการชำระเงินของลูกค้า
- เงินทุนมักจะถูกคืนภายใน 5-10 วันทำการ (แตกต่างกันตามผู้ออกบัตร)
- สถานะ refund สามารถติดตามได้ตลอดกระบวนการ
- ค่าธรรมเนียมธุรกรรมเดิมจะไม่ถูกคืนตามค่าเริ่มต้น
- Charge จะยังคงอยู่ในประวัติธุรกรรมของคุณด้วยสถานะ refunded
คุณสมบัติหลัก
- การประมวลผลทันที: Refunds ถูกประมวลผลทันทีผ่าน API
- วิธีการชำระเงินหลายแบบ: รองรับ refunds บัตรและวิธีการชำระเงินทางเลือก
- การติดตามสถานะ: การอัปเดตสถานะ refund แบบเรียลไทม์
- การแจ้งเ ตือนอัตโนมัติ: การแจ้งเตือนลูกค้า (ถ้ามีการกำหนดค่า)
- รองรับ Metadata: เพิ่ม metadata แบบกำหนดเองเพื่อติดตามเหตุผลของ refund
- Webhook Events: รับการแจ้งเตือนเมื่อสถานะ refund เปลี่ยนแปลง
เมื่อใดควรใช้ Refunds
สถานการณ์ทั่วไปสำหรับการสร้าง refunds:
- การคืนสินค้า: ลูกค้าคืนสินค้า
- การยกเลิกบริการ: ลูกค้ายกเลิกบริการหรือการสมัครสมาชิก
- Charges ซ้ำซ้อน: การ charge ซ้ำโดยไม่ตั้งใจ
- ข้อพิพาทของลูกค้า: แก้ไขข้อร้องเรียนของลูกค้า
- สินค้าที่มีข้อบกพร่อง: รายการที่ไม่ตรงตามมาตรฐานคุณภาพ
- สินค้าหมด: ไม่สามารถดำเนินการตามคำสั่งซื้อได้
- การปรับราคา: แก้ไขข้อผิดพลาดในการเรียกเก็บเงิน
การสร้าง Refunds ผ่าน API
Refund เต็มจำนวน
สร้าง refund เต็มจำนวนโดยไม่ระบุจำนวน:
- Node.js
- Python
- PHP
const omise = require('omise')({
secretKey: 'skey_test_123456789',
});
// Create a full refund
async function createFullRefund() {
try {
const refund = await omise.charges.createRefund('chrg_test_123456789', {
metadata: {
reason: 'Customer requested refund',
order_id: 'ORD-12345',
refund_type: 'product_return'
}
});
console.log('Refund created:', refund.id);
console.log('Amount refunded:', refund.amount);
console.log('Status:', refund.status);
console.log('Created at:', new Date(refund.created * 1000));
return refund;
} catch (error) {
console.error('Refund failed:', error.message);
throw error;
}
}
createFullRefund();
import omise
from datetime import datetime
omise.api_secret = 'skey_test_123456789'
def create_full_refund(charge_id):
"""Create a full refund for a charge"""
try:
refund = omise.Charge.retrieve(charge_id).refund(
metadata={
'reason': 'Customer requested refund',
'order_id': 'ORD-12345',
'refund_type': 'product_return'
}
)
print(f"Refund created: {refund.id}")
print(f"Amount refunded: {refund.amount}")
print(f"Status: {refund.status}")
return refund
except omise.errors.BaseError as e:
print(f"Refund failed: {str(e)}")
raise
create_full_refund('chrg_test_123456789')
<?php
require_once 'vendor/autoload.php';
define('OMISE_SECRET_KEY', 'skey_test_123456789');
function createFullRefund($chargeId) {
try {
$charge = OmiseCharge::retrieve($chargeId);
$refund = $charge->refund([
'metadata' => [
'reason' => 'Customer requested refund',
'order_id' => 'ORD-12345',
'refund_type' => 'product_return'
]
]);
echo "Refund created: {$refund['id']}\n";
echo "Amount refunded: {$refund['amount']}\n";
echo "Status: {$refund['status']}\n";
return $refund;
} catch (Exception $e) {
echo "Refund failed: {$e->getMessage()}\n";
throw $e;
}
}
createFullRefund('chrg_test_123456789');
?>