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

Transactions API

ภาพรวม

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

Endpoints ที่ใช้ได้

สิ่งที่คุณทำได้

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

ประเภทธุรกรรม

ธุรกรรมเครดิต (เงินเข้า)

  • 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

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

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

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

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

แหล่งข้อมูลที่เกี่ยวข้อง

ดูเพิ่มเติม


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