ข้ามไปยังเนื้อหาหลัก

รายงานการทำธุรกรรมและการชำระเงิน

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

ภาพรวม

คุณสมบัติการรายงานการทำธุรกรรมรวมถึง:

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

ประเภทรายงาน

1. รายงานการชำระเงิน

แสดงการชำระเงินที่สำเร็จทั้งหมด:

// Node.js - รับรายงานการชำระเงิน
const omise = require('omise')({
secretKey: 'skey_test_xxxxx'
});

async function getPaymentReport(fromDate, toDate) {
const charges = await omise.charges.list({
from: fromDate,
to: toDate,
paid: true,
limit: 100,
order: 'reverse_chronological'
});

const report = charges.data.map(charge => ({
id: charge.id,
amount: charge.amount / 100,
currency: charge.currency.toUpperCase(),
customer: charge.customer || 'Guest',
card_brand: charge.card?.brand || 'N/A',
card_last4: charge.card?.last_digits || 'N/A',
status: charge.status,
created: new Date(charge.created * 1000).toISOString(),
description: charge.description || ''
}));

return { total: charges.total, payments: report };
}

2. รายงานค่าใช้จ่าย

รวมความพยายามค่าใช้จ่ายทั้งหมด (สำเร็จและล้มเหลว):

# Python - วิเคราะห์การเรียกเก็บเงินที่ล้มเหลว
import omise
omise.api_secret = 'skey_test_xxxxx'

def analyze_failed_charges(from_date, to_date):
charges = omise.Charge.list(
from_date=from_date.isoformat(),
to_date=to_date.isoformat(),
limit=100
)

failed_charges = [c for c in charges.data if not c.paid]

failure_reasons = {}
for charge in failed_charges:
reason = charge.failure_code or 'unknown'
if reason not in failure_reasons:
failure_reasons[reason] = {'count': 0, 'amount': 0}
failure_reasons[reason]['count'] += 1
failure_reasons[reason]['amount'] += charge.amount

return {
'total_failed': len(failed_charges),
'total_attempted': charges.total,
'failure_rate': f"{(len(failed_charges) / charges.total * 100):.2f}%",
'failure_reasons': failure_reasons
}

3. รายงานการคืนเงิน

ติดตามการทำธุรกรรมการคืนเงินทั้งหมด:

# Ruby - สร้างรายงานการคืนเงิน
require 'omise'
Omise.api_key = 'skey_test_xxxxx'

def generate_refund_report(from_date, to_date)
charges = Omise::Charge.list({
from: from_date.iso8601,
to: to_date.iso8601,
limit: 100
})

refund_stats = {
'total_refunds': 0,
'total_amount': 0,
'full_refunds': 0,
'partial_refunds': 0
}

charges.data.each do |charge|
if charge.refunded_amount > 0
refunds = Omise::Refund.list(charge_id: charge.id)
refunds.data.each do |refund|
refund_stats['total_refunds'] += 1
refund_stats['total_amount'] += refund.amount

if refund.amount == charge.amount
refund_stats['full_refunds'] += 1
else
refund_stats['partial_refunds'] += 1
end
end
end
end

refund_stats
end

ตัวเลือกตัวกรอง

ตัวกรองที่พร้อมใช้งาน

  1. ช่วงวันที่: วันที่เฉพาะ ช่วงสัมพัทธ์ ช่วงกำหนดเอง
  2. สถานะ: สำเร็จ ล้มเหลว รอดำเนินการ ย้อนกลับ หมดอายุ
  3. จำนวน: จำนวนต่ำสุด จำนวนสูงสุด จำนวนที่แน่นอน ช่วง
  4. วิธีการชำระเงิน: บัตรเครดิต/เดบิต ธนาคารอินเทอร์เน็ต ธนาคารมือถือ ที่เก็บอิเล็กทรอนิกส์ QR ตัดการสนับสนุน
  5. สกุลเงิน: THB SGD JPY USD และอื่นๆ
  6. ลูกค้า: ID ลูกค้า อีเมล ชื่อ
  7. ข้อมูลเมตา: ช่องข้อมูลเมตาเฉพาะ ID ตามลำดับ หมายเลขอ้างอิง

การกรองผ่าน API

// Node.js - การกรองขั้นสูง
async function getFilteredTransactions(filters) {
const params = {
limit: 100,
order: 'reverse_chronological'
};

if (filters.from) params.from = filters.from;
if (filters.to) params.to = filters.to;
if (filters.status === 'successful') params.paid = true;
if (filters.status === 'failed') params.paid = false;

const charges = await omise.charges.list(params);
let filteredCharges = charges.data;

if (filters.minAmount) {
filteredCharges = filteredCharges.filter(c => c.amount >= filters.minAmount * 100);
}

if (filters.currency) {
filteredCharges = filteredCharges.filter(c => c.currency === filters.currency.toLowerCase());
}

return { total: filteredCharges.length, data: filteredCharges };
}

ค้นหาการทำธุรกรรม

การค้นหาแดชบอร์ด

ใช้การค้นหาเพื่อค้นหาการทำธุรกรรมเฉพาะ:

  • ID การทำธุรกรรม: ID ค่าใช้จ่ายแบบสมบูรณ์หรือบางส่วน
  • อีเมลลูกค้า: ที่อยู่อีเมลของลูกค้า
  • จำนวน: จำนวนที่แน่นอนและสกุลเงิน
  • 4 หลักสุดท้ายของบัตร: 4 หลักสุดท้าย (เลือกได้ว่าจะระบุแบรนด์บัตรหรือไม่)

การค้นหาขั้นสูงผ่าน API

# Python - การค้นหาการทำธุรกรรมขั้นสูง
import omise
omise.api_secret = 'skey_test_xxxxx'

class TransactionSearch:
def search(self, criteria):
# ค้นหาด้วยพารามิเตอร์พื้นฐาน
params = {'limit': 100}
if criteria.get('from'):
params['from_date'] = criteria['from']
if criteria.get('to'):
params['to_date'] = criteria['to']

charges = omise.Charge.list(**params)
results = charges.data

# ใช้ตัวกรองเพิ่มเติม
if criteria.get('min_amount'):
results = [c for c in results if c.amount >= criteria['min_amount'] * 100]

if criteria.get('card_last4'):
results = [c for c in results if c.card and c.card.last_digits == criteria['card_last4']]

return results

# ตัวอย่างการใช้งาน
searcher = TransactionSearch()
results = searcher.search({
'from': '2024-01-01T00:00:00Z',
'to': '2024-01-31T23:59:59Z',
'card_last4': '4242',
'min_amount': 100
})

การกำหนดตารางเวลารายงาน

ตั้งค่ารายงานตามกำหนดเวลา

  1. ไปที่ รายงาน > รายงานตามกำหนดเวลา

  2. คลิก "สร้างตารางเวลา"

  3. กำหนดค่ารายงาน:

    • ประเภทรายงาน (การชำระเงิน ค่าใช้จ่าย การคืนเงิน)
    • ความถี่ (วันละ สัปดาห์ละ เดือนละ)
    • ช่วงวันที่ (24 ชั่วโมงที่ผ่านมา 7 วันที่ผ่านมา เป็นต้น)
    • ตัวกรองและเงื่อนไข
    • รูปแบบการส่งออก (CSV, PDF, Excel)
  4. ตั้งค่าผู้รับ:

    • เพิ่มที่อยู่อีเมล
    • กำหนดค่าเวลาการส่ง
    • ตั้งค่าเขตเวลา
  5. บันทึกตารางเวลา

การจัดส่งรายงานโดยอัตโนมัติ

// Node.js - การตั้งตารางเวลารายงานเฉพาะ
const omise = require('omise')({ secretKey: 'skey_test_xxxxx' });
const cron = require('node-cron');
const nodemailer = require('nodemailer');

// การกำหนดค่าอีเมล
const transporter = nodemailer.createTransport({
host: 'smtp.example.com',
port: 587,
auth: { user: 'reports@example.com', pass: 'password' }
});

async function generateAndEmailReport() {
try {
const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000);
const today = new Date();

const charges = await omise.charges.list({
from: yesterday.toISOString(),
to: today.toISOString(),
paid: true,
limit: 100
});

const reportData = charges.data.map(charge => ({
'Transaction ID': charge.id,
'Amount': charge.amount / 100,
'Currency': charge.currency.toUpperCase(),
'Card Brand': charge.card?.brand || 'N/A',
'Status': charge.status,
'Created': new Date(charge.created * 1000).toISOString()
}));

// แปลงเป็น CSV
const json2csv = require('json2csv');
const csv = json2csv.parse(reportData);

// บันทึกลงไฟล์และส่ง
await transporter.sendMail({
from: '"Omise Reports" <reports@example.com>',
to: 'accounting@example.com',
subject: `Daily Payment Report - ${yesterday.toISOString().split('T')[0]}`,
text: `Total Transactions: ${charges.total}`,
attachments: [{ filename: 'report.csv', content: csv }]
});

console.log('Report sent successfully');
} catch (error) {
console.error('Error generating report:', error);
}
}

// ทำงานทุกวันเวลา 8:00 น.
cron.schedule('0 8 * * *', generateAndEmailReport);

ตัวเลือกการส่งออก

รูปแบบการส่งออก

  1. CSV: ดีที่สุดสำหรับ Excel, Google Sheets, การวิเคราะห์ข้อมูล
  2. Excel (XLSX): สำหรับคุณสมบัติ Excel ขั้นสูง การจัดรูปแบบ
  3. PDF: สำหรับการพิมพ์ การแชร์ การเก็บถาวร

ส่งออกจากแดชบอร์ด

  1. ไปที่รายงานที่ต้องการ
  2. ใช้ตัวกรองและช่วงวันที่
  3. คลิกปุ่ม ส่งออก
  4. เลือกรูปแบบ (CSV, Excel, PDF)
  5. ดาวน์โหลดเริ่มต้นโดยอัตโนมัติ

คำถามที่พบบ่อย

รายงานการทำธุรกรรมถูกเก็บไว้นานแค่ไหน?

Omise จะเก็บข้อมูลการทำธุรกรรมไว้ได้นาน 7 ปี คุณสามารถเข้าถึงและส่งออกข้อมูลจากจุดใดก็ได้ภายในระยะเวลานี้

ฉันสามารถสร้างรายงานสำหรับวิธีการชำระเงินเฉพาะได้หรือไม่?

ใช่ คุณสามารถกรองรายงานตามวิธีการชำระเงิน รวมถึงบัตรเครดิต (ตามแบรนด์) ธนาคารอินเทอร์เน็ต ธนาคารมือถือ ที่เก็บอิเล็กทรอนิกส์ และการชำระเงิน QR

ความแตกต่างระหว่างวันที่การทำธุรกรรมและวันที่การตัดบัญชีคืออะไร?

วันที่การทำธุรกรรมคือเวลาที่จัดการการชำระเงิน วันที่การตัดบัญชีคือเมื่อโอนเงินไปยังบัญชีธนาคารของคุณ (โดยทั่วไปจาก 3-7 วันธุรกิจขึ้นอยู่กับข้อตกลงของคุณ)

ฉันสามารถปรับแต่งรายงานได้หรือไม่?

ไดซเบิลดอร์ดมีเทมเพลตมาตรฐาน แต่คุณสามารถสร้างรายงานเฉพาะโดยใช้ API ส่งออกข้อมูลโดยการเขียนโปรแกรมและจัดรูปแบบตามความต้องการเฉพาะของคุณ

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