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

Alipay

รับชำระเงินจาก Alipay กระเป๋าเงินดิจิทัลที่ใหญ่ที่สุดของจีน มีผู้ใช้มากกว่า 1 พันล้านคนทั่วโลก ช่วยให้การทำธุรกรรมอีคอมเมิร์ซข้ามพรมแดนเป็นไปอย่างราบรื่น

ขั้นตอนการชำระเงิน

Alipay Payment Flow Step 1

Alipay Payment Flow Step 2

ภาพด้านบนแสดงกระบวนการ redirect และขั้นตอนการอนุมัติของลูกค้าในขั้นตอนการชำระเงิน Alipay

ภาพรวม

Alipay เป็นแพลตฟอร์มการชำระเงินออนไลน์และมือถือของบุคคลที่สาม ดำเนินการโดย Ant Group (เดิมชื่อ Ant Financial) บริษัทในเครือของ Alibaba Group ด้วยผู้ใช้งานมากกว่า 1 พันล้านคนส่วนใหญ่ในจีน Alipay ได้กลายเป็นแพลตฟอร์มการชำระเงินผ่านมือถือที่ใหญ่ที่สุดในโลก และเป็นวิธีการชำระเงินที่สำคัญสำหรับผู้ค้าที่กำหนดเป้าหมายผู้บริโภคชาวจีน

คุณสมบัติหลัก:

  • ผู้ใช้ 1 พันล้านคน+ - หนึ่งในแพลตฟอร์มการชำระเงินผ่านมือถือที่ใหญ่ที่สุดในโลก
  • พร้อมสำหรับการข้ามพรมแดน - สร้างขึ้นสำหรับอีคอมเมิร์ซระหว่างประเทศ
  • การเข้าถึงตลาดจีน - จำเป็นสำหรับธุรกิจที่มุ่งเน้นจีน
  • การยืนยันทันที - การประมวลผลการชำระเงินแบบเรียลไทม์
  • มือถือเป็นหลัก - ปรับแต่งสำหรับผู้ใช้สมาร์ทโฟน
  • แบรนด์ที่เชื่อถือได้ - เป็นส่วนหนึ่งของระบบนิเวศ Alibaba/Ant Group

ภูมิภาคที่รองรับ

ภูมิภาคสกุลเงินจำนวนเงินขั้นต่ำจำนวนเงินสูงสุดวงเงินต่อวัน
ไทยTHB฿20.00฿150,000แตกต่างกัน
สิงคโปร์SGD$1.00$20,000แตกต่างกัน
มาเลเซียMYRRM1.00RM30,000แตกต่างกัน
ญี่ปุ่นJPY¥100¥6,000,000แตกต่างกัน

*ข้อจำกัดแตกต่างกันตามระดับการยืนยันตัวตนบัญชี Alipay ของลูกค้า

วิธีการทำงาน

ประสบการณ์ลูกค้า:

  1. ลูกค้าเลือก "Alipay" ที่หน้าชำระเงิน
  2. ถูก redirect ไปยังหน้าอนุมัติ Alipay
  3. เปิดแอป Alipay (มือถือ) หรือสแกน QR code (เดสก์ท็อป)
  4. ยืนยันตัวตนด้วยรหัสผ่าน/ลายนิ้วมือ/Face ID
  5. ตรวจสอบและยืนยันการชำระเงิน
  6. กลับไปยังเว็บไซต์ผู้ค้า

เวลาในการทำรายการโดยทั่วไป: 30 วินาที - 2 นาที

การใช้งาน

ขั้นตอนที่ 1: สร้าง Alipay Source

curl https://api.omise.co/sources \
-u skey_test_YOUR_SECRET_KEY: \
-d "type=alipay" \
-d "amount=50000" \
-d "currency=THB"

ผลลัพธ์:

{
"object": "source",
"id": "src_test_5rt6s9vah5lkvi1rh9c",
"type": "alipay",
"flow": "redirect",
"amount": 50000,
"currency": "THB"
}

ขั้นตอนที่ 2: สร้าง Charge

curl https://api.omise.co/charges \
-u skey_test_YOUR_SECRET_KEY: \
-d "amount=50000" \
-d "currency=THB" \
-d "source=src_test_5rt6s9vah5lkvi1rh9c" \
-d "return_uri=https://yourdomain.com/payment/callback"

ขั้นตอนที่ 3: Redirect ลูกค้า

app.post('/checkout/alipay', async (req, res) => {
try {
const { amount, currency, order_id } = req.body;

// Validate currency
const supportedCurrencies = ['THB', 'SGD', 'MYR', 'JPY'];
if (!supportedCurrencies.includes(currency)) {
return res.status(400).json({
error: 'Alipay supports THB, SGD, MYR, and JPY only'
});
}

// Validate amount by currency
const limits = {
THB: { min: 2000, max: 15000000 },
SGD: { min: 100, max: 2000000 },
MYR: { min: 100, max: 3000000 },
JPY: { min: 100, max: 600000000 }
};

const { min, max } = limits[currency];
if (amount < min || amount > max) {
return res.status(400).json({
error: `Amount must be between ${min} and ${max} ${currency}`
});
}

// Create source
const source = await omise.sources.create({
type: 'alipay',
amount: amount,
currency: currency
});

// Create charge
const charge = await omise.charges.create({
amount: amount,
currency: currency,
source: source.id,
return_uri: `${process.env.BASE_URL}/payment/callback`,
metadata: {
order_id: order_id
}
});

// Redirect to Alipay
res.redirect(charge.authorize_uri);

} catch (error) {
console.error('Alipay error:', error);
res.status(500).json({ error: error.message });
}
});

ขั้นตอนที่ 4: จัดการ Return

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 === 'alipay') {
const charge = event.data;

if (charge.status === 'successful') {
processOrder(charge.metadata.order_id);
} 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());

// Amount limits by currency
const LIMITS = {
THB: { min: 2000, max: 15000000 },
SGD: { min: 100, max: 2000000 },
MYR: { min: 100, max: 3000000 },
JPY: { min: 100, max: 600000000 }
};

app.post('/checkout/alipay', async (req, res) => {
try {
const { amount, currency, order_id } = req.body;

// Validate currency
if (!['THB', 'SGD', 'MYR', 'JPY'].includes(currency)) {
return res.status(400).json({
error: 'Alipay only supports THB, SGD, MYR, and JPY'
});
}

// Validate amount
const { min, max } = LIMITS[currency];
if (amount < min || amount > max) {
return res.status(400).json({
error: `Amount must be between ${min} and ${max} ${currency}`
});
}

// Create source
const source = await omise.sources.create({
type: 'alipay',
amount: amount,
currency: currency
});

// Create charge
const charge = await omise.charges.create({
amount: amount,
currency: currency,
source: source.id,
return_uri: `${process.env.BASE_URL}/payment/callback`,
metadata: {
order_id: order_id,
payment_method: 'alipay'
}
});

// Return authorization URL
res.json({
authorize_uri: charge.authorize_uri,
charge_id: charge.id
});

} catch (error) {
console.error('Alipay error:', error);
res.status(500).json({ error: error.message });
}
});

// Callback handler
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 handler
app.post('/webhooks/omise', (req, res) => {
const event = req.body;

if (event.key === 'charge.complete') {
const charge = event.data;

if (charge.source.type === 'alipay') {
if (charge.status === 'successful') {
updateOrderStatus(charge.metadata.order_id, 'paid');
sendConfirmation(charge.metadata.customer_email);
} else {
updateOrderStatus(charge.metadata.order_id, 'failed');
}
}
}

res.sendStatus(200);
});

app.listen(3000);

การรองรับการคืนเงิน

Alipay รองรับการคืนเงินเต็มจำนวนและบางส่วน ภายใน 90 วัน:

// Full refund
const fullRefund = await omise.charges.refund('chrg_test_...', {
amount: 50000
});

// Partial refund
const partialRefund = await omise.charges.refund('chrg_test_...', {
amount: 25000 // Half refund
});
ระยะเวลาการคืนเงิน

การคืนเงินรองรับภายใน 90 วันหลังจากทำรายการเดิม อนุญาตทั้งการคืนเงินเต็มจำนวนและบางส่วน

นโยบายการคืนเงิน

ระยะเวลาและนโยบายการคืนเงินอาจมีการเปลี่ยนแปลง ตรวจสอบความสามารถในการคืนเงินปัจจุบันผ่านเอกสาร Omise API หรือแดชบอร์ดผู้ค้าของคุณเสมอ

ปัญหาทั่วไปและการแก้ไข

ปัญหา: ลูกค้าไม่มีแอป Alipay

สาเหตุ: ลูกค้าเลือก Alipay แต่ไม่มีแอป (ส่วนใหญ่เป็นลูกค้าชาวจีน)

วิธีแก้:

  • ระบุอย่างชัดเจนว่า Alipay เป็นสำหรับลูกค้าชาวจีน
  • จัดหาลิงก์ดาวน์โหลดแอป
  • แสดงตัวเลือก QR code สำหรับผู้ใช้เดสก์ท็อป
function checkAlipayAvailability() {
// Detect if user is likely from China
const userLocale = navigator.language;
const isChineseLocale = /^zh/i.test(userLocale);

if (!isChineseLocale) {
showWarning('Alipay is primarily for customers in China. Do you have an Alipay account?');
}
}

ปัญหา: ความสับสนเรื่องการแปลงสกุลเงิน

สาเหตุ: ลูกค้าเห็นจำนวนเงินที่ต่างกันในแอป Alipay ของพวกเขา

วิธีแก้:

// Display amount in customer's currency
function displayAlipayAmount(amount, currency) {
return `
<div class="payment-amount">
<p>คุณจะจ่าย: ${amount / 100} ${currency}</p>
<p class="note">จำนวนเงินจะถูกแปลงเป็น CNY ในแอป Alipay ที่อัตราแลกเปลี่ยนปัจจุบัน</p>
</div>
`;
}

ปัญหา: หมดเวลาการชำระเงิน

วิธีแก้:

const TIMEOUT = 15 * 60 * 1000; // 15 minutes

setTimeout(() => {
if (!paymentConfirmed) {
showTimeoutMessage();
allowRetry();
}
}, TIMEOUT);

แนวทางปฏิบัติที่ดีที่สุด

1. กำหนดเป้าหมายลูกค้าชาวจีน

<div class="alipay-info">
<h3>ชำระเงินด้วย Alipay (支付宝)</h3>
<p>Alipay เป็นกระเป๋าเงินดิจิทัลที่ได้รับความนิยมในจีน มีผู้ใช้มากกว่า 1 พันล้านคน</p>
<p><strong>ความต้องการ:</strong></p>
<ul>
<li>บัญชี Alipay (โดยทั่วไปต้องการหมายเลขโทรศัพท์จีน)</li>
<li>ติดตั้งแอป Alipay หรือเข้าถึงผ่านเบราว์เซอร์เดสก์ท็อป</li>
<li>ยอดเงินเพียงพอหรือวิธีการชำระเงินที่เชื่อมโยง</li>
</ul>
<p class="chinese">支付宝是中国领先的数字钱包,拥有超过10亿用户。</p>
</div>

2. แสดงภาษาจีน (ตัวเลือก)

const ALIPAY_LABELS = {
en: {
title: 'Pay with Alipay',
button: 'Continue to Alipay'
},
zh: {
title: '使用支付宝支付',
button: '前往支付宝'
}
};

function getAlipayLabel(locale = 'en') {
return ALIPAY_LABELS[locale] || ALIPAY_LABELS.en;
}

3. จัดการมือถือกับเดสก์ท็อป

function openAlipay(authorizeUri) {
const isMobile = /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);

if (isMobile) {
// Mobile: Try to open app
window.location = authorizeUri;
} else {
// Desktop: Show QR code
showQRCode(authorizeUri);
}
}

4. ตรวจสอบสกุลเงิน

function validateAlipayPayment(amount, currency) {
const limits = {
THB: { min: 2000, max: 15000000, symbol: '฿' },
SGD: { min: 100, max: 2000000, symbol: '$' },
MYR: { min: 100, max: 3000000, symbol: 'RM' },
JPY: { min: 100, max: 600000000, symbol: '¥' }
};

if (!limits[currency]) {
return { valid: false, error: 'Currency not supported' };
}

const { min, max, symbol } = limits[currency];

if (amount < min || amount > max) {
return {
valid: false,
error: `Amount must be between ${symbol}${min / 100} and ${symbol}${max / 100}`
};
}

return { valid: true };
}

5. การพิจารณาข้ามพรมแดน

// For international merchants targeting Chinese customers
const CROSS_BORDER_CONFIG = {
displayChineseInterface: true,
showExchangeRate: true,
supportCNYDisplay: true,
provideChineseSupport: true
};

// Show exchange rate estimate
async function displayExchangeRate(amount, currency) {
// Note: Actual rate determined by Alipay
const estimatedRate = await getEstimatedExchangeRate(currency, 'CNY');
const cnyAmount = (amount / 100) * estimatedRate;

return `
ประมาณ ¥${cnyAmount.toFixed(2)} CNY
(อัตราแลกเปลี่ยนกำหนดโดย Alipay ณ เวลาชำระเงิน)
`;
}

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

Alipay คืออะไร?

Alipay เป็นกระเป๋าเงินดิจิทัลที่ใหญ่ที่สุดของจีน มีผู้ใช้มากกว่า 1 พันล้านคนทั่วโลก ดำเนินการโดย Ant Group (บริษัทในเครือ Alibaba) และเป็นวิธีการชำระเงินหลักสำหรับผู้บริโภคชาวจีนที่ช้อปปิ้งออนไลน์

ลูกค้าต้องอยู่ในจีนหรือไม่?

ไม่ แต่พวกเขาต้องมีบัญชี Alipay ผู้ใช้ Alipay ส่วนใหญ่เป็นชาวจีนหรือผู้มีถิ่นพำนัก เนื่องจากการลงทะเบียนโดยทั่วไปต้องการหมายเลขโทรศัพท์จีนและการยืนยันตัวตน ID

Alipay รองรับสกุลเงินอะไรบ้าง?

ผ่าน Omise, Alipay รองรับ:

  • THB (บาทไทย)
  • SGD (ดอลลาร์สิงคโปร์)
  • MYR (ริงกิตมาเลเซีย)
  • JPY (เยนญี่ปุ่น)

จำนวนเงินจะถูกแปลงเป็น CNY (หยวนจีน) ภายใน Alipay ด้วยอัตราแลกเปลี่ยนของพวกเขา

การชำระบัญชีใช้เวลานานเท่าไร?

การชำระบัญชี Alipay โดยทั่วไปเกิดขึ้นภายใน 1-3 วันทำการ ตรวจสอบแดชบอร์ด Omise ของคุณสำหรับกำหนดการชำระบัญชี

สามารถคืนเงินการชำระเงิน Alipay ได้หรือไม่?

ได้ Alipay รองรับทั้งการคืนเงินเต็มจำนวนและบางส่วนภายใน 90 วันหลังจากทำรายการเดิม

Alipay เหมาะสำหรับลูกค้าที่ไม่ใช่ชาวจีนหรือไม่?

ไม่ Alipay เป็นหลักสำหรับลูกค้าชาวจีน สำหรับตลาดอื่นๆ พิจารณา:

  • ไทย: PromptPay, TrueMoney
  • สิงคโปร์: PayNow, GrabPay
  • มาเลเซีย: Touch 'n Go, Boost
  • ระหว่างประเทศ: บัตรเครดิต, PayPal
Alipay ทำงานบนเดสก์ท็อปหรือไม่?

ได้ ผู้ใช้เดสก์ท็อปสามารถสแกน QR code ด้วยแอป Alipay บนมือถือหรือใช้อินเทอร์เฟซเว็บของ Alipay หากมี

การทดสอบ

โหมดทดสอบ

Alipay สามารถทดสอบในโหมดทดสอบโดยใช้ API key ทดสอบของคุณ ในโหมดทดสอบ:

ข้อมูลประจำตัวสำหรับทดสอบ:

  • ใช้ API key ทดสอบ (skey_test_xxx)
  • สกุลเงินที่รองรับทั้งหมดสามารถทดสอบได้ (THB, SGD, MYR, JPY)
  • ไม่จำเป็นต้องมีบัญชี Alipay สำหรับการทดสอบ

ขั้นตอนการทดสอบ:

  1. สร้าง source และ charge โดยใช้ API key ทดสอบ
  2. คุณจะได้รับ authorize_uri สำหรับ redirect
  3. ขั้นตอนการทดสอบ redirect เปิดหน้าอนุมัติทดสอบ
  4. ในโหมดทดสอบ ใช้ Actions ของแดชบอร์ดเพื่อทำเครื่องหมาย charge เป็นสำเร็จ/ล้มเหลว
  5. ตรวจสอบว่าได้รับการแจ้งเตือน webhook

การทดสอบการใช้งาน:

// Create test Alipay charge
const source = await omise.sources.create({
type: 'alipay',
amount: 50000,
currency: 'THB'
});

const charge = await omise.charges.create({
amount: 50000,
currency: 'THB',
source: source.id,
return_uri: 'https://example.com/callback'
});

console.log('Test authorize URL:', charge.authorize_uri);

// Manually mark as successful/failed in dashboard
// Then verify webhook handling

สถานการณ์การทดสอบ:

  • การชำระเงินสำเร็จ: ทำขั้นตอน redirect ให้เสร็จสมบูรณ์ ตรวจสอบการประมวลผลคำสั่งซื้อ
  • การชำระเงินล้มเหลว: ทดสอบการจัดการข้อผิดพลาดและข้อความลูกค้า
  • การตรวจสอบสกุลเงิน: ทดสอบสกุลเงินที่รองรับทั้งหมด
  • ข้อจำกัดจำนวนเงิน: ตรวจสอบการบังคับใช้ขั้นต่ำ/สูงสุดต่อสกุลเงิน
  • การจัดการหมดเวลา: ทดสอบสถานการณ์การชำระเงินที่ถูกละทิ้ง

หมายเหตุสำคัญ:

  • โหมดทดสอบจะไม่เชื่อมต่อกับเซิร์ฟเวอร์ Alipay จริง
  • ใช้แดชบอร์ดเพื่อจำลองการเปลี่ยนแปลงสถานะการชำระเงิน
  • ทดสอบสกุลเงินที่รองรับทั้งหมดก่อนเปิดใช้งานจริง
  • ตรวจสอบการจัดการ webhook สำหรับผลลัพธ์สถานะทั้งหมด
  • ทดสอบทั้งขั้นตอนมือถือและเดสก์ท็อป

สำหรับขั้นตอนการทดสอบโดยละเอียด โปรดดูเอกสารการทดสอบ

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

ขั้นตอนถัดไป

  1. สร้าง Alipay source
  2. ใช้งาน redirect flow
  3. ตั้งค่า webhook
  4. ทดสอบการรวมระบบ
  5. เปิดใช้งานจริง