สกุลเงินและจำนวนเงิน
เรียนรู้วิธีการระบุจำนวนเงินอย่างถูกต้อง ทำความเข้าใจหน่วยสกุลเงิน และทำงานกับธุรกรรมหลายสกุลเงินใน Omise API
ภาพรวม
เมื่อทำงานกับ Omise API จำนวนเงินทั้งหมดต้องระบุในหน่วยย่อยที่สุดของสกุลเงินนั้น ๆ เพื่อความแม่นยำและหลีกเลี่ยงข้อผิดพลาดของเลขทศนิยมที่อาจเกิดขึ้นกับค่าทศนิยม
หน่วยย่อยที่สุดของสกุลเงิน
แต่ละสกุลเงินมีหน่วยย่อยที่สุด (เรียกอีกอย่างว่าหน่วยย่อย):
| สกุลเงิน | รหัส | หน่วยย่อยที่สุด | ตำแหน่งทศนิยม | ตัวอย่าง |
|---|---|---|---|---|
| บาทไทย | THB | สตางค์ | 2 | ฿100.00 = 10000 |
| เยนญี่ปุ่น | JPY | เยน | 0 | ¥100 = 100 |
| ดอลลาร์สิงคโปร์ | SGD | เซนต์ | 2 | S$100.00 = 10000 |
| ริงกิตมาเลเซีย | MYR | เซน | 2 | RM100.00 = 10000 |
| ดอลลาร์สหรัฐ | USD | เซนต์ | 2 | $100.00 = 10000 |
| ยูโร | EUR | เซนต์ | 2 | €100.00 = 10000 |
ตัวอย่าง
// บาทไทย: ฿1,000.00 = 100,000 สตางค์
const amount = 100000;
const currency = 'thb';
// เยนญี่ปุ่น: ¥1,000 = 1,000 เยน (ไม่มีหน่วยย่อย)
const amount = 1000;
const currency = 'jpy';
// ดอลลาร์สิงคโปร์: S$50.50 = 5,050 เซนต์
const amount = 5050;
const currency = 'sgd';
ข้อผิดพลาดที่พบบ่อย
// ❌ ผิด - ใช้ค่าทศนิยม
const charge = await omise.charges.create({
amount: 1000.00, // นี่คือ ฿10.00 ไม่ใช่ ฿1,000!
currency: 'thb'
});
// ✅ ถูกต้อง - ใช้หน่วยย่อยที่สุด
const charge = await omise.charges.create({
amount: 100000, // นี่คือ ฿1,000.00
currency: 'thb'
});
การแปลงจำนวนเงิน
จำนวนเงินแสดงผลเป็นหน่วยย่อยที่สุด
function toSmallestUnit(amount, currency) {
const zeroDecimalCurrencies = ['jpy', 'krw', 'vnd'];
if (zeroDecimalCurrencies.includes(currency.toLowerCase())) {
return Math.round(amount);
}
return Math.round(amount * 100);
}
// การใช้งาน
toSmallestUnit(1000.00, 'thb'); // 100000
toSmallestUnit(1000, 'jpy'); // 1000
toSmallestUnit(99.99, 'sgd'); // 9999
หน่วยย่อยที่สุดเป็นจำนวนเงินแสดงผล
function toDisplayAmount(amount, currency) {
const zeroDecimalCurrencies = ['jpy', 'krw', 'vnd'];
if (zeroDecimalCurrencies.includes(currency.toLowerCase())) {
return amount;
}
return amount / 100;
}
// การใช้งาน
toDisplayAmount(100000, 'thb'); // 1000.00
toDisplayAmount(1000, 'jpy'); // 1000
toDisplayAmount(9999, 'sgd'); // 99.99
การจัดรูปแบบเพื่อแสดงผล
function formatCurrency(amount, currency) {
const displayAmount = toDisplayAmount(amount, currency);
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: currency.toUpperCase()
}).format(displayAmount);
}
// การใช้งาน
formatCurrency(100000, 'thb'); // "฿1,000.00"
formatCurrency(1000, 'jpy'); // "¥1,000"
formatCurrency(9999, 'sgd'); // "S$99.99"
สกุลเงินที่รองรับ
การเรียกเก็บเงิน (บัตรเครดิต/เดบิต)
สกุลเงินที่ใช้ได้สำหรับการเรียกเก็บเงินขึ้นอยู่กับประเทศที่ลงทะเบียนบัญชีของคุณ:
| ประเทศ | สกุลเงินที่รองรับ |
|---|---|
| ไทย | THB |
| ญี่ปุ่น | JPY |
| สิงคโปร์ | SGD, USD |
| มาเลเซีย | MYR |
ขีดจำกัดการเรียกเก็บเงิน
| ประเทศ | สกุลเงิน | ขั้นต่ำ | สูงสุด |
|---|---|---|---|
| ไทย | THB | ฿20 (2000) | ฿150,000 (15000000) |
| ญี่ปุ่น | JPY | ¥100 (100) | ¥6,000,000 (6000000) |
| สิงคโปร์ | SGD | S$1 (100) | S$99,999 (9999900) |