Transactions API
ภาพรวม
Transactions API ให้การเข้าถึงประวัติธุรกรรมทั้งหมดของคุณ รวมถึงการเรียกเก็บเงิน การคืนเงิน การโอนเงิน การปรับปรุง และค่าธรรมเนียม ใช้ API นี้สำหรับการบัญชี การกระทบยอด และการรายงานทางการเงินโดยละเอียด
Endpoints ที่ใช้ได้
- รายการธุรกรรม - GET /transactions
- ดึงข้อมูลธุรกรรม - GET /transactions/:id
สิ่งที่คุณทำได้
- ดูประวัติธุรกรรม - เข้าถึงบ ันทึกกิจกรรมบัญชีทั้งหมด
- กรองตามวันที่ - ดึงข้อมูลธุรกรรมสำหรับช่วงเวลาที่ระบุ
- กรองตามประเภท - ดูเฉพาะการเรียกเก็บเงิน การคืนเงิน การโอนเงิน หรือค่าธรรมเนียม
- กระทบยอดบัญชี - จับคู่ธุรกรรมกับใบแจ้งยอดธนาคาร
- สร้างรายงาน - ส่งออกข้อมูลธุรกรรมสำหรับการบัญชี
- ติดตามการเปลี่ยนแปลงยอดคงเหลือ - ดูว่าแต่ละธุรกรรมส่งผลต่อยอดคงเหลือของคุณอย่างไร
ประเภทธุรกรรม
ธุรกรรมเครดิต (เงินเข้า)
- Charges - การชำระเงินที่ส ำเร็จจากลูกค้า
- Dispute Reversals - ข้อพิพาทที่ชนะซึ่งคืนเงินกลับ
- Refund Reversals - การคืนเงินที่ถูกยกเลิก
ธุรกรรมเดบิต (เงินออก)
- Refunds - เงินที่คืนให้ลูกค้า
- Transfers - การจ่ายเงินไปยังบัญชีธนาคาร
- Fees - ค่าธรรมเนียมธุรกรรมและบริการ
- Disputes - การเรียกคืนเงินและจำนวนเงินที่ถูกโต้แย้ง
- Adjustments - การแก้ไขบัญชี
โครงสร้าง Transaction Object
{
"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 กับใบแจ้งยอดธนาคารและบันทึกภายในของคุณ:
// ดึงธุรกรรมทั้งหมดสำหรับวันที่ระบุ
const transactions = await omise.transactions.list({
from: '2025-02-07T00:00:00Z',
to: '2025-02-07T23:59:59Z',
limit: 100
});
// คำนวณยอดรวมรายวัน
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}`);
การรายงานทางการเงิน
สร้างรายงานรายเดือนสำหรับการบัญชี:
// ดึงสรุปธุรกรรมรายเดือน
const monthlyTransactions = await omise.transactions.list({
from: '2025-02-01T00:00:00Z',
to: '2025-02-28T23:59:59Z',
limit: 100
});
// จัดกลุ่มตามประเภท
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;
// เพิ่มประเภทอื่นๆ ตามต้องการ
});
การตรวจสอบยอดคงเหลือ
ตรวจสอบการคำนวณยอดคงเหลือของคุณ:
// คำนวณยอดคงเหลือที่คาดหวังจากธุรกรรม
const allTransactions = await getAllTransactions(); // ลอจิก pagination ของคุณ
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)
- แคชข้อมูลธุรกรรม - ธุรกรรมไม่เปลี่ยนแปลง แคชได้นาน
- จัดการเขตเวลา - timestamps ทั้งหมดเป็น UTC (เขตเวลา Z)
- เก็บ transaction IDs - เก็บ IDs สำหรับการกระทบยอดและการตรวจสอบ
- ส่งออกเป็นประจำ - ส่งออกรายเดือนสำหรับบันทึกบัญชี
ไม่ควรทำ
- อย่าดึงธุรกรรมทั้งหมด - ใช้ตัวกรองวันที่เสมอ
- อย่า poll บ่อย - ธุรกรรมไม่เปลี่ยนแปลงเมื่อสร้างแล้ว
- อย่าละเลยการแบ่งหน้า - จัดการชุดผลลัพธ์ขนาดใหญ่อย่างเหมาะสม
- อย่าสันนิษฐานลำดับ - ระบุพารามิเตอร์ order อย่างชัดเจน
- อย่าข้ามการกระทบยอด - การตรวจสอบเป็นประจำป้องกันปัญหาการ บัญชี
คำถามที่พบบ่อย
ความแตกต่างระหว่าง Transactions และ Balance คืออะไร?
- Balance - ยอดคงเหลือปัจจุบันของบัญชี (จุดเดียวในเวลา)
- Transactions - บันทึกประวัติของกิจกรรมทั้งหมด (ตลอดเวลา)
ธุรกรรมถูกเก็บไว้นานเท่าไร?
ธุรกรรมทั้งหมดถูกเก็บไว้ถาวรและสามารถเข้าถึงได้ผ่าน API