Boost
รับชำระเงินจากผู้ใช้ Boost กว่า 9 ล้านคนในมาเลเซีย กระเป๋าเงินดิจิทัลที่เกิดในประเทศชั้นนำที่มีการแทรกซึมของร้านค้าอย่างลึกและการรับรู้แบรนด์ในท้องถิ่นที่แข็งแกร่ง
ภาพรวม
Boost เป็นกระเป๋าเงินดิจิทัลที่เกิดในมาเลเซียที่ใหญ่ที่สุดด้วยผู้ใช้มากกว่า 9 ล้านคนและจุดสัมผัสร้านค้ามากกว่า 180,000 แห่ง ก่อตั้งเป็นกิจการร่วมค้าระห ว่าง Axiata Group และ RHB ธนาคาร Boost ได้กลายเป็น e-wallet ที่ได้รับการยอมรับอย่างแพร่หลายที่สุดในมาเลเซีย โดยเฉพาะอย่างยิ่งที่แข็งแกร่งในหมู่วัยทำงานและผู้บริโภคในเมือง
คุณสมบัติหลัก:
- ✅ ผู้ใช้ 9+ ล้านคน - e-wallet ในประเทศที่ได้รับความนิยมมากที่สุดของมาเลเซีย
- ✅ ร้านค้า 180,000+ แห่ง - เครือข่ายการยอมรับที่กว้างที่สุดในมาเลเซีย
- ✅ ยืนยันทันที - ประมวลผลการชำระเงินแบบเรียลไทม์
- ✅ การชำระเงิน QR และแอป - รองรับวิธีการชำระเงินหลายแบบ
- ✅ โปรแกรมรางวัล - คืนเงินและคะแนนสะสม
- ✅ พร้อมใช้งาน 24/7 - ทำงานได้ทุกเวลารวมถึงวันหยุด
ภูมิภาคที่รองรับ
| Region | Currency | Min Amount | Max Amount | API Version |
|---|---|---|---|---|
| Malaysia | MYR | RM1.00 | RM4,999.00 | 2017-11-02 |
ระดับการยืนยันตัวตน
| ระดับ | วงเงินรายวัน | วงเงินรายเดือน | ข้อกำหนด |
|---|---|---|---|
| พื้นฐาน (ไม่ยืนยัน) | RM1,500 | RM3,000 | เฉพาะหมายเลขโทรศัพท์ |
| ยืนยันแล้ว | RM30,000 | RM100,000 | การยืนยันบัตรประชาชน/พาสปอร์ต |
วิธีการทำงาน
ประสบการณ์ของลูกค้า:
- ลูกค้าเลือก "Boost" ที่หน้าชำระเงิน
- เปลี่ยนเส้นทางไปยังหน้าชำระเงิน Boost
- เปิดแอป Boost (deep link บนมือถือ)
- ตรวจสอบรายละเอียดธุรกรรม
- ยืนยันตัวตนด้วย PIN 6 หลักหรือไบโอเมตริกส์
- ยืนยันการชำระเงิน
- ได้รับคืนเงิน/รางวัล (หากมีสิทธิ์)
- กลับสู่เว็บไซต์ร้านค้า
เวลาในการทำรายการโดยเฉลี่ย: 1-2 นาที
ตัวอย่างขั้นตอนการชำระเงิน
ขั้นตอนการชำระเงินบนมือถือ - แอป Boost:

เมื่อลูกค้าเข้าสู่ระบบแอป Boost อยู่แล้ว:
- ❶ เลือก Boost - ลูกค้าเลือก Boost ที่หน้าชำระเงิน
- ❷ เปลี่ยนเส้นทางไปยัง Boost - deep link เปิดแอป Boost โดยอัตโนมัติ
- ❸ ตรวจสอบการชำระเงิน - รายละเอียดธุรกรรมแสดงในแอป
- ❹ ตรวจสอบร้านค้า - แสดงชื่อร้านค้าและจำนวนเงิน
- ❺ ยืนยันตัวตน - ใส่ PIN 6 หลักหรือใช้ไบโอเมตริกส์ (ลายนิ้วมือ/Face ID)
- ❻ เสร็จสิ้น - ประมวลผลการชำระเงิน รับคืนเงิน/รางวัล กลับสู่ร้านค้า
ขั้นตอนการชำระเงินบนมือถือ - วิธีการลงชื่อเข้าใช้:

ขั้นตอนทางเลือกสำหรับลูกค้าที่ไม่ได้เข้าสู่ระบบแอป Boost:
- ❶ เลือก Boost - ลูกค้าเริ่มการชำระเงิน Boost
- ❷ ใส่หมายเลขมือถือ - ป้อนหมายเลขโทรศัพท์ที่ลงทะเบียน Boost
- ❸ ส่ง OTP - รับรหัสยืนยัน 6 หลักทาง SMS
- ❹ ใส่ OTP - ลูกค้าใส่ OTP เพื่อยืนยันตัวตน
- ❺ ตรวจสอบ & ยืนยัน - แสดงรายละเอียดการชำระเงิน ยืนยันตั วตนด้วย PIN
- ❻ การชำระเงินสำเร็จ - ธุรกรรมเสร็จสิ้น เครดิตรางวัล
ขั้นตอนการชำระเงินบนเดสก์ท็อป:

ขั้นตอน QR code สำหรับเบราว์เซอร์เดสก์ท็อป:
- ❶ เริ่มการชำระเงิน - ลูกค้าคลิก "ชำระด้วย Boost"
- ❷ สร้าง QR - ระบบสร้าง QR code ของ Boost ที่ไม่ซ้ำกัน
- ❸ แสดง QR - QR code แสดงบนหน้าจอเดสก์ท็อป
- ❹ เปิดแอป Boost - ลูกค้าเปิด Boost บนอุปกรณ์มือถือ
- ❺ สแกน QR - ใช้เครื่องสแกนในแอปเพื่อแคปเจอร์ QR code
- ❻ ตรวจสอบรายละเอียด - ข้อมูลการชำระเงินแสดงในแอป
- ❼ ยืนยัน & เสร็จสิ้น - ยืนยันตัวตนด้วย PIN/ไบโอเมตริกส์ ประมวลผลการชำระเงิน
การนำไปใช้
ขั้นตอนที่ 1: สร้าง Source ของ Boost
- cURL
- Node.js
- PHP
- Python
- Ruby
- Go
- Java
- C#
curl https://api.omise.co/sources \
-u skey_test_YOUR_SECRET_KEY: \
-d "type=boost" \
-d "amount=10000" \
-d "currency=MYR"
const omise = require('omise')({
secretKey: 'skey_test_YOUR_SECRET_KEY'
});
const source = await omise.sources.create({
type: 'boost',
amount: 10000, // MYR 100.00
currency: 'MYR'
});
<?php
$source = OmiseSource::create(array(
'type' => 'boost',
'amount' => 10000,
'currency' => 'MYR'
));
?>
import omise
omise.api_secret = 'skey_test_YOUR_SECRET_KEY'
source = omise.Source.create(
type='boost',
amount=10000,
currency='MYR'
)
require 'omise'
Omise.api_key = 'skey_test_YOUR_SECRET_KEY'
source = Omise::Source.create({
type: 'boost',
amount: 10000,
currency: 'MYR'
})
source, err := client.Sources().Create(&operations.CreateSource{
Type: "boost",
Amount: 10000,
Currency: "MYR",
})
Source source = client.sources().create(new Source.CreateParams()
.type("boost")
.amount(10000L)
.currency("MYR"));
var source = await client.Sources.Create(new CreateSourceRequest
{
Type = "boost",
Amount = 10000,
Currency = "MYR"
});
การตอบกลับ:
{
"object": "source",
"id": "src_test_5rt6s9vah5lkvi1rh9c",
"type": "boost",
"flow": "redirect",
"amount": 10000,
"currency": "MYR"
}
ขั้นตอนที่ 2: สร้าง Charge
curl https://api.omise.co/charges \
-u skey_test_YOUR_SECRET_KEY: \
-d "amount=10000" \
-d "currency=MYR" \
-d "source=src_test_5rt6s9vah5lkvi1rh9c" \
-d "return_uri=https://yourdomain.com/payment/callback"
ขั้นตอนที่ 3: เปลี่ยนเส้นทางลูกค้า
app.post('/checkout/boost', async (req, res) => {
try {
const { amount, order_id, customer_email } = req.body;
// ตรวจสอบจำนวนเงิน (RM1 - RM10,000)
if (amount < 100 || amount > 1000000) {
return res.status(400).json({
error: 'Amount must be between RM1 and RM10,000'
});
}
// สร้าง source
const source = await omise.sources.create({
type: 'boost',
amount: amount,
currency: 'MYR'
});
// สร้าง charge
const charge = await omise.charges.create({
amount: amount,
currency: 'MYR',
source: source.id,
return_uri: `${process.env.BASE_URL}/payment/callback`,
metadata: {
order_id: order_id,
customer_email: customer_email
}
});
// เปลี่ยนเส้นทางไปยัง Boost
res.redirect(charge.authorize_uri);
} catch (error) {
console.error('Boost error:', error);
res.status(500).json({ error: error.message });
}
});
ขั้นตอนที่ 4: จัดการการกลับมา
app.get('/payment/callback', async (req, res) => {
try {
const chargeId = req.query.charge_id;
const charge = await omise.charges.retrieve(chargeId);
if (charge.status === 'successful') {
await processOrder(charge.metadata.order_id);
res.redirect('/payment-success');
} else if (charge.status === 'failed') {
res.redirect('/payment-failed?reason=' + charge.failure_message);
} else {
res.redirect('/payment-pending');
}
} catch (error) {
res.redirect('/payment-error');
}
});
ขั้นตอนที่ 5: จัดการ Webhook
app.post('/webhooks/omise', (req, res) => {
const event = req.body;
if (event.key === 'charge.complete' && event.data.source.type === 'boost') {
const charge = event.data;
if (charge.status === 'successful') {
processOrder(charge.metadata.order_id);
sendConfirmationEmail(charge.metadata.customer_email);
} else if (charge.status === 'failed') {
handleFailedPayment(charge.metadata.order_id);
}
}
res.sendStatus(200);
});
ตัวอย่างการนำไปใช้แบบสมบูรณ์
// Express.js server
const express = require('express');
const omise = require('omise')({
secretKey: process.env.OMISE_SECRET_KEY
});
const app = express();
app.use(express.json());
app.post('/checkout/boost', async (req, res) => {
try {
const { amount, order_id, customer_email, customer_phone } = req.body;
// ตรวจสอบจำนวนเงิน (RM1 - RM10,000)
if (amount < 100 || amount > 1000000) {
return res.status(400).json({
error: 'Amount must be between RM1 and RM10,000'
});
}
// คำนวณคืนเงินโดยประมาณ (หากร้านค้าเสนอ)
const estimatedCashback = calculateCashback(amount);
// สร้าง source
const source = await omise.sources.create({
type: 'boost',
amount: amount,
currency: 'MYR'
});
// สร้าง charge
const charge = await omise.charges.create({
amount: amount,
currency: 'MYR',
source: source.id,
return_uri: `${process.env.BASE_URL}/payment/callback`,
metadata: {
order_id: order_id,
customer_email: customer_email,
customer_phone: customer_phone,
payment_method: 'boost',
estimated_cashback: estimatedCashback
}
});
// ส่งคืน URL การอนุญาต
res.json({
authorize_uri: charge.authorize_uri,
charge_id: charge.id,
estimated_cashback: estimatedCashback
});
} catch (error) {
console.error('Boost error:', error);
res.status(500).json({ error: error.message });
}
});
// คำนวณคืนเงิน (ตัวอย่างการนำไปใช้)
function calculateCashback(amount) {
// ตัวอย่าง: คืนเงิน 1% สูงสุด RM10
const cashbackRate = 0.01;
const cashback = amount * cashbackRate;
return Math.min(cashback, 1000); // คืนเงินสูงสุด RM10
}
// ตัวจัดการ callback
app.get('/payment/callback', async (req, res) => {
try {
const chargeId = req.query.charge_id;
const charge = await omise.charges.retrieve(chargeId);
if (charge.status === 'successful') {
res.redirect(`/order-success?order=${charge.metadata.order_id}`);
} else {
res.redirect(`/payment-failed?charge=${chargeId}`);
}
} catch (error) {
res.redirect('/payment-error');
}
});
// ตัวจัดการ Webhook
app.post('/webhooks/omise', (req, res) => {
const event = req.body;
if (event.key === 'charge.complete') {
const charge = event.data;
if (charge.source.type === 'boost') {
if (charge.status === 'successful') {
updateOrderStatus(charge.metadata.order_id, 'paid');
sendConfirmation(charge.metadata.customer_email);
// บันทึกการชำระเงินสำเร็จ
console.log(`Boost payment successful: ${charge.id}`);
} else {
updateOrderStatus(charge.metadata.order_id, 'failed');
console.log(`Boost payment failed: ${charge.id}`);
}
}
}
res.sendStatus(200);
});
// ฟังก์ชันช่วยเหลือ
async function updateOrderStatus(orderId, status) {
await db.orders.update({ id: orderId }, { status: status });
}
async function sendConfirmation(email) {
// ส่งการยืนยันทางอีเมล
}
app.listen(3000);
การรองรับการคืนเงิน
Boost รองรับการคืนเงินเต็มจำนวนเท่านั้นภายใ น 30 วัน:
// คืนเงินเต็มจำนวนเท่านั้น (ไม่คืนบางส่วน)
const refund = await omise.charges.refund('chrg_test_...', {
amount: 10000 // ต้องเป็นจำนวนเต็ม
});
- คืนเงินเต็มจำนวนเท่านั้น - ไม่รองรับการคืนเงินบางส่วน
- ช่วง 30 วัน - ต้องเริ่มการคืนเงินภายใน 30 วัน
- การยกเลิกคืนเงิน - คืนเงินที่ได้รับจะถูกยกเลิก