Transactions API
ภาพรวม
Transactions API ให้การเข้าถึงประวัติธุรกรรมที่สมบูรณ์ รวมถึงการเรียกเก็บเงิน การคืนเงิน การโอน การปรับปรุง และค่าธรรมเนียม ใช้ API นี้สำหรับการบัญชี การกระทบยอด และการสร้างรายงานทางการเงินโดยละเอียด
Endpoints ที่พร้อมใช้งาน
- แสดงรายการ Transactions - GET /transactions
- ดึงข้อมูล Transaction - GET /transactions/:id
สิ่งที่คุณสามารถทำได้
- ดูประวัติธุรกรรม - เข้าถึงบันทึกที่สมบูรณ์ของกิจกรรมบัญชีทั้งหมด
- กรองตามวันที่ - ดึงธุรกรรมสำหรับช่วงเวลาที่เฉพาะเจาะจง
- กรองตามประเภท - แสดงเฉพาะการเรียกเก็บเงิน การคืนเงิน การโอน หรือค่าธรรมเนียม
- กระทบยอดบัญชี - จับคู่ธุรกรรมกับใบแจ้งยอดธนาคาร
- สร้างรายงาน - ส่งออกข้อมูลธุรกรรมสำหรับการบัญชี
- ติดตามการเปลี่ยนแปลงยอดคงเหลือ - ดูว่าธุรกรรมแต่ละรายการส่งผลต่อยอดคงเหลืออย่างไร
ประเภทของธุรกรรม
ธุรกรรมเครดิต (เงินรับ)
- การเรียกเก็บเงิน - การชำระเงินที่สำเร็จจากลูกค้า
- การยกเลิกข้อพิพาท - การคืนเงินจากข้อพิพาทที่ชนะ
- การยกเลิกการคืนเงิน - การคืนเงินที่ถูกยกเลิก
ธุรกรรมเดบิต (เงินจ่าย)
- การคืนเงิน - การคืนเงินให้ลูกค้า
- การโอน - การจ่ายเงินไปยังบัญชีธนาคาร
- ค่าธรรมเนียม - ค่าธรรมเนียมธุรกรรมและบริการ
- ข้อพิพาท - Chargeback และจำนวนเงินที่โต้แย้ง
- การปรับปรุง - การแก้ไขบัญชี
โครงสร้างของออบเจ็กต์ Transaction
{
"object": "transaction",
"id": "trxn_test_5xuy4w91xqz7d1w9u0t",
"type": "credit",
"amount": 100000,
"currency": "thb",
"direction": "credit",
"source": {
"object": "charge",
"id": "chrg_test_5xuy4w91xqz7d1w9u0t"
},
"created_at": "2025-02-07T12:00:00Z"
}
กรณีการใช้งาน
การบัญชีและการกระทบยอด
กระทบยอดธุรกรรม Omise กับใบแจ้งยอดธนาคารและบันทึกภายใน:
// Get all transactions for a specific day
const transactions = await omise.transactions.list({
from: '2025-02-07T00:00:00Z',
to: '2025-02-07T23:59:59Z',
limit: 100
});
// Calculate daily totals
let credits = 0;
let debits = 0;
transactions.data.forEach(txn => {
if (txn.direction === 'credit') {
credits += txn.amount;
} else {
debits += txn.amount;
}
});
console.log(`Credits: ${credits}, Debits: ${debits}, Net: ${credits - debits}`);
การสร้า งรายงานทางการเงิน
สร้างรายงานรายเดือนสำหรับการบัญชี:
// Get monthly transaction summary
const monthlyTransactions = await omise.transactions.list({
from: '2025-02-01T00:00:00Z',
to: '2025-02-28T23:59:59Z',
limit: 100
});
// Group by type
const summary = {
charges: 0,
refunds: 0,
transfers: 0,
fees: 0
};
monthlyTransactions.data.forEach(txn => {
const sourceType = txn.source?.object;
if (sourceType === 'charge') summary.charges += txn.amount;
if (sourceType === 'refund') summary.refunds += txn.amount;
if (sourceType === 'transfer') summary.transfers += txn.amount;
// Add more types as needed
});
การตรวจสอบยอดคงเหลือ
ตรวจสอบการคำนวณยอดคงเหลือ:
// Calculate expected balance from transactions
const allTransactions = await getAllTransactions(); // Your pagination logic
let calculatedBalance = 0;
allTransactions.forEach(txn => {
if (txn.direction === 'credit') {
calculatedBalance += txn.amount;
} else {
calculatedBalance -= txn.amount;
}
});
const currentBalance = await omise.balance.retrieve();
console.log(`Calculated: ${calculatedBalance}, Actual: ${currentBalance.available}`);
การกรองและการแบ่งหน้า
การกรองช่วงวันที่
GET /transactions?from=2025-01-01T00:00:00Z&to=2025-01-31T23:59:59Z
การแบ่งหน้า
GET /transactions?limit=100&offset=0
ตัวกรองแบบผสมผสาน
GET /transactions?from=2025-02-01T00:00:00Z&limit=50&offset=0
แนวทางปฏิบัติที่ดีที่สุด
✅ สิ่งที่แนะนำ
- ใช้ช่วงวันที่ - กรองตามช่วงเวลาที่เฉพาะเจาะจงเพื่อประสิทธิภาพที่ดีขึ้น
- แบ่งหน้าผลลัพธ์ - ใช้ขนาดหน้าที่เหมาะสม (50-100)
- แคชข้อมูลธุรกรรม - ธุรกรรมไม่เปลี่ยนแปลง จึงสามารถแคชได้เป็นเวลานาน
- จัดการเขตเวลา - ไทม์สแตมป์ทั้งหมดเป็น UTC (เขตเวลา Z)
- เก็บ ID ธุรกรรม - เก็บ ID ไว้สำหรับการกระทบยอดและการตรวจสอบ
- ส่งออกเป็นประจำ - ส่งออกรายเดือนสำหรับบันทึกการบัญชี
❌ สิ่งที่ควรหลีกเลี่ยง
- อย่าดึงธุรกรรมทั้งหมด - ใช้ต ัวกรองวันที่เสมอ
- อย่า poll บ่อยเกินไป - ธุรกรรมไม่เปลี่ยนแปลงหลังจากสร้างแล้ว
- อย่าเพิกเฉยการแบ่งหน้า - จัดการชุดผลลัพธ์ขนาดใหญ่อย่างเหมาะสม
- อย่าสันนิษฐานลำดับ - ระบุพารามิเตอร์การเรียงลำดับอย่างชัดเจน
- อย่าข้ามการกระทบยอด - การตรวจสอบเป็นประจำช่วยป้องกันปัญหาทางการบัญชี
คำถามที่พบบ่อย
ความแตกต่างระหว่าง Transactions กับ Balance คือ?
- Balance - ยอดคงเหลือในบัญชีปัจจุบัน (จุดเวลาเดียว)
- Transactions - บัน ทึกประวัติของกิจกรรมทั้งหมด (เมื่อเวลาผ่านไป)
ธุรกรรมถูกเก็บไว้นานแค่ไหน?
ธุรกรรมทั้งหมดถูกเก็บไว้ถาวรและสามารถเข้าถึงได้ผ่าน API
ฉันสามารถลบธุรกรรมได้หรือไม่?
ไม่ได้ ธุรกรรมเป็นบันทึกการตรวจสอบที่ไม่เปลี่ยนแปลงและไม่สามารถลบหรือแก้ไขได้