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

Transactions API

ภาพรวม

Transactions API ให้การเข้าถึงประวัติธุรกรรมที่สมบูรณ์ รวมถึงการเรียกเก็บเงิน การคืนเงิน การโอน การปรับปรุง และค่าธรรมเนียม ใช้ API นี้สำหรับการบัญชี การกระทบยอด และการสร้างรายงานทางการเงินโดยละเอียด

Endpoints ที่พร้อมใช้งาน

สิ่งที่คุณสามารถทำได้

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

ประเภทของธุรกรรม

ธุรกรรมเครดิต (เงินรับ)

  • การเรียกเก็บเงิน - การชำระเงินที่สำเร็จจากลูกค้า
  • การยกเลิกข้อพิพาท - การคืนเงินจากข้อพิพาทที่ชนะ
  • การยกเลิกการคืนเงิน - การคืนเงินที่ถูกยกเลิก

ธุรกรรมเดบิต (เงินจ่าย)

  • การคืนเงิน - การคืนเงินให้ลูกค้า
  • การโอน - การจ่ายเงินไปยังบัญชีธนาคาร
  • ค่าธรรมเนียม - ค่าธรรมเนียมธุรกรรมและบริการ
  • ข้อพิพาท - 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

ฉันสามารถลบธุรกรรมได้หรือไม่?

ไม่ได้ ธุรกรรมเป็นบันทึกการตรวจสอบที่ไม่เปลี่ยนแปลงและไม่สามารถลบหรือแก้ไขได้

จะส่งออกสำหรับซอฟต์แวร์การบัญชีได้อย่างไร?

ใช้ List Transactions API พร้อมตัวกรองวันที่ จากนั้นจัดรูปแบบข้อมูลสำหรับระบบบัญชีของคุณ (QuickBooks, Xero ฯลฯ)

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

ดูเพิ่มเติม


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