中东支付通道沙箱测试流程
1. 准备工作
- 注册沙箱账户:在目标支付平台(如PayTabs、Telr、Checkout.com等)官网申请开发者/商户沙箱账户
- 获取API凭证:获得沙箱环境的API密钥、商户ID等认证信息
- 配置环境:
- 确保网络可以访问中东地区IP(部分平台有区域限制)
- 安装必要的SDK或库文件
2. API集成测试
a. 基础功能测试
-
支付请求
POST /payment
- Headers: Authorization, Content-Type: application/json
- Body: {amount, currency(AED/SAR), order_id, customer_info}
-
回调验证
- Webhook URL配置验证(需公网可访问URL)
- IP白名单设置(部分平台要求)
-
查询接口
GET /payment/{transaction_id}
- Verify response structure and status mapping
b. Middle East特定功能测试
- Mada卡bin范围验证(Saudi专用借记卡网络)
- Apple Pay/Google Pay本地化集成检查(Arabic界面支持)
- Installment分期付款流程模拟
c. Edge Case场景覆盖(重点)
Scenario | Test Data | Expected Result |
---|---|---|
Amount<minimum | AED5 | Error: MIN_AMOUNT |
Unsupported currency | CNY | Error: CURRENCY_NOT_SUPPORTED |
Expired card | Past expiry date | Decline with code "54" |
d.Postman自动化脚本示例(关键部分)
{
"description": "MADA Card Success Payment",
"request": {
"method": "POST",
"header": [
{"key":"Authorization","value":"Bearer SANDBOX_XXXXXX"},
{"key":"Content-Type","value":"application/json"}
],
"body": {
"mode":"raw",
"raw":"{\"card_number\":\"4464040000000000\",\"expiry\":\"12/25\",...}"
}
},
"_test_script": [
pm.test("Status code is 200", function() {...}),
pm.test("Response contains mada_indicator", function() {...})
]
}
需要特别注意的合规要求:
1️⃣ STCPay强制PCI DSS Level1认证(沙特)
2️⃣ UAE需通过NOC从中央银行获取
中东支付通道沙箱测试流程(续)
3. 合规性专项验证
a. 沙特SAMA规范检查清单
- 字段加密:持卡人姓名必须RSA加密(最小2048位)
- 日志脱敏:CVV需显示为
<redacted>
格式 - 错误代码映射:
# SAMA标准错误码示例
ERROR_MAPPING = {
'10057': 'STC_PAY_TIMEOUT',
'20033': 'MADA_INSUFFICIENT_FUNDS'
}
b. UAE中央银行要求
-
AML检查模拟:
- AED100,000+交易自动触发EDD流程
- 测试账号后缀加
_AML
可强制触发风控(如[email protected]
)
-
本地清算周期验证:
工作日14:00前交易→T+1结算
周五/假日交易→下一个银行工作日结算
4. 本地支付方式专项测试
a. Mada卡全场景覆盖(沙特)
graph TD;
A[Start] --> B{Card Type};
B -->|MADA| C[Check BIN范围588845-588848];
B -->|Non-MADA| D[正常处理];
C --> E[添加mada_indicator=Y];
b. STC Pay特殊处理(沙特电信钱包)
- QR码生成验证:
# STC沙箱专用QR参数格式示例
stcpay://payment?amount=100¤cy=SAR&merchantId=SBX9876×tamp=20240620T154530Z&hmac=SHA256(...)
2.分期付款测试矩阵
分期数 | APR | Minimum Amount(SAR)
——-|—–|——————
3 |0% |500
6 |2% |2000
5.性能与稳定性测试
a.斋月流量模拟
// JMeter脚本片段 - simulate Eid购物高峰
ThreadGroup.schedule = {
start_time: "18:00", // Iftar后时段
ramp_up: "30min",
loop_count: Infinity,
spawn_rate: "+50用户/分钟"
}
b.网络延迟基准(对比Dubai vs Riyadh节点)
Location | Avg Latency(ms) | Packet Loss(%)
------------------|---------------:|--------------:
AWS巴林 | 89 │ 0.02
阿里云迪拜 │ 112 │ 0.15
6.最终验收清单
✅所有errorCode完成阿拉伯语/英语双语映射
✅VAT计算符合GCC统一5%税率规则(金额×1。05)
✅已通过PCI SAQ A—EP自评估问卷
中东支付通道沙箱测试流程(最终部分)
7. 本地化深度验证
a. RTL(从右到左)界面测试
- UI元素镜像检查:
/* Arabic样式强制RTL布局 */
body[lang="ar"] {
direction: rtl;
text-align: right;
left-padding: →自动转为right-padding
}
- 日期格式兼容性:
伊斯兰历(Hijri)与公历转换需同时显示,如:
1445/10/15 ↔ 2024/05/25 (使用moment-hijri库)
b. IBAN校验规则
// UAE特有IBAN验证逻辑
function validateUAEIban(iban) {
const pattern = /^AE\d{2}[A-Z]{4}\d{3}[\dA-Z]{16}$/;
// AE + check digits + bank code + account number
8.宗教合规专项
a.斋月模式开关
// API请求头增加宗教标识(沙特必需)
{
"X-Ramadan-Mode": "true", //启用以下特殊规则:
"allow_night_refunds": true, //允许23:00-3:00退款处理
"disable_sound_effects": true //禁止支付成功音效
}
b.禁忌商品拦截
| Category | Block Code | Example Trigger Keywords |
|———-|————|————————–|
| Alcohol | HARAM_01 | ["wine", "whisky"…] |
| Pork | HARAM_02 | ["bacon", "ham"…] |
9.生产环境预检清单
-
证书切换验证
- SSL证书从中东CA机构获取(如Saudi NCA)
- SHA-256指纹与沙箱不同需重新备案
-
清算对账测试
模拟生成ZAKAT(天课)扣除报表:总金额:SAR100,000 → Zakat(2.5%):SAR2,500 → Net:SAR97,500
3.终极压力测试场景
# Locust负载脚本片段 - Hajj朝觐期间峰值模拟
@task(weight=3)
def stc_pay_flood(self):
for _ in range(random.randint(50,70)): #模仿麦加商户并发量
self.client.post("/pay", json={
"amount": random.choice([100,200]),
"geo_hash": "<21°25'N39°49'E>" #圣城坐标触发特殊路由
})
10.上线后监控要点
⚠️ 重点指标报警阈值设置建议
Metric | Warning Threshold | Critical Threshold |
---|---|---|
Mada失败率 | >15% | >25% |
分期付款转化率(Saudi) | <18% |