泰国原生支付API集成指南
主要支付方式概述
泰国市场主要有以下几种原生支付方式需要集成:
- PromptPay – 泰国国家电子支付系统
- TrueMoney Wallet – 流行的电子钱包
- Rabbit LINE Pay – LINE应用内支付
- ShopeePay – Shopee旗下的移动支付
- 银行转账/网银(Internet Banking) – 各大银行的直接转账
API集成步骤
1. 选择支付服务提供商
推荐考虑以下平台:
- Omise (支持多种泰国本地支付)
- Stripe (部分地区支持PromptPay)
- AsiaBill (专注亚洲市场)
- Direct integration with local providers (如TrueMoney官方API)
2. PromptPay API集成要点
// Omise PromptPay示例代码
const omise = require('omise')({
'secretKey': 'skey_test_...'
});
omise.sources.create({
amount: "150000", // satang单位(1THB=100satang)
currency: "thb",
type: "promptpay",
}, function(err, resp) {
// QR码生成和回调处理逻辑...
});
3. TrueMoney Wallet集成关键点
需要:
- TrueMoney商户账户注册
- OAuth认证流程实现
- Webhook设置用于交易状态更新
# TrueMoney基本请求示例(Python)
import requests
headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
}
response = requests.post(
'https://api.truemoney.com/v1/payments',
headers=headers,
json={
"amount": "1000",
"recipient_mobile": "+66891234567"
# ...其他参数...
}
)
Sandbox测试环境建议
所有主要提供商都提供沙盒环境,务必在真实交易前完成:
- Omise沙盒: https://dashboard-sandbox-api-staging-v2.gomo.co/
- TrueMoney测试账号可通过开发者门户申请
Go Live注意事项
1.合规要求
泰国原生支付API集成指南(续)
Go Live注意事项
1. 合规要求
- BOI认证:外国公司在泰国开展支付业务需向泰国投资委员会(BOI)申请
- 电子交易法:遵守《2001年电子交易法》和《2019年数字支付法令》
- 数据本地化:部分用户数据可能需要在泰国境内存储
- PCI DSS认证:处理信用卡/借记卡需要符合支付卡行业安全标准
2. KYC/AML流程
graph TD;
A[用户注册] --> B[手机号验证];
B --> C{金额>50,000THB?};
C -- Yes --> D[身份证扫描+活体检测];
C -- No --> E[基础信息收集];
3. API限流与性能考量
提供商 | QPS限制 | 建议超时设置 |
---|---|---|
Omise | 100 | <5秒 |
TrueMoney API | 50 | <8秒 |
PromptPay直连 | 30 | <10秒 |
Webhook实现最佳实践
// Express.js示例 - Webhook验证中间件
const crypto = require('crypto');
function verifyWebhook(req, res, next) {
const signature = req.headers['x-signature'];
const payload = JSON.stringify(req.body);
const hmac = crypto.createHmac('sha256', process.env.WEBHOOK_SECRET);
const digest = hmac.update(payload).digest('hex');
if (signature !== digest) return res.status(403).send();
next(); // 验证通过继续处理逻辑...
}
QR Code支付特殊处理
针对PromptPay的QR码生成:
- 静态QR码 – 适用于固定金额场景(便利店等)
- 动态QR码 – eCommerce推荐使用,包含:
- Transaction ID
- Amount信息
- Expiry时间(通常5分钟)
# Python动态QR生成示例(qrcode库)
import qrcode
def generate_promptpay_qr(mobile, amount):
payload = f"00020101021129370016A00000067701011101130066{mobile}5802TH530376454{amount:.2f}6304"
# CRC16校验计算...
crc = calculate_crc16(payload.encode())
full_payload = f"{payload}{crc:04X}"
return qrcode.make(full_payload)
Troubleshooting常见问题
-
错误代码表
CODE_40: PromptPay限额超出(单笔上限200,000THB)
TM_108: TrueMoney钱包余额不足
OMISE_ERR_CURRENCY: THB货币格式错误(必须使用satang单位)
2.重试策略建议
{
"retry_policy": {
"max_attempts":3,
"backoff_factor": [0.5,1,2], //等待秒数
},
}
需要我继续深入哪个具体环节?例如:
• TrueMoney OAuth授权流程细节
• Bank Transfer通知对账方案
• PCI合规的具体实施步骤