中东支付沙箱环境与测试流程解析
中东支付沙箱环境与测试流程解析
一、中东支付市场特点
-
区域特性:
- 信用卡普及率较低,现金交易仍占较大比例
- Mada卡(沙特)、Fawry(埃及)等本地支付方式主导
- 伊斯兰金融合规要求(Sharia-compliant)
-
主要国家差异:
- 沙特:Mada卡+Apple Pay/Samsung Pay
- UAE:Visa/Mastercard相对普及
- 埃及:现金预付券(Fawry)为主流
二、主流沙箱环境概览
PayPal中东沙箱
- 支持币种:AED, SAR, EGP等地区货币
- 特殊功能:
- Arab-specific错误代码模拟(如"IBAN验证失败")
Checkout.com中东测试环境
- 特色服务:
// Mada卡测试号示例
4406470000000097 (3DS v1)
5456030000006165 (3DS v2)
Telr沙箱系统(UAE重点)
- 独特设置:
curl https://uat.telr.com/gateway/order.json \
-H "Content-Type: application/json" \
-d '{
"ivp_method": "create",
"ivp_store": YOUR_STORE_ID,
"ivp_authkey": YOUR_AUTH_KEY,
"ivp_cartid": UNIQUE_ORDER_ID,
"ivp_amount": AMOUNT_IN_AED_SAR_EGP,
}'
三、核心测试流程框架
- 基础配置阶段
[网关选择] → [货币设置(AED/SAR/EGP)] → [语言包加载]
↓
[合规检查] ← [回调URL配置]
- 关键测试场景矩阵
Test Case | Saudi(MADA) | UAE(VISA) | Egypt(Fawry) |
---|---|---|---|
成功交易 | SAMPLE_MADA_CARD | VISA_TEST_411111 | FAWRY_VOUCHER_CODE |
3DS失败 | BLOCKED_BIN_MADA | VISA_3DS_DECLINE_CODE6 | N/A |
金额限制触发 | SAR_MIN=10规则校验 AED_MAX=50000规则校验 EGP_ROUNDING_ERROR |
- 特殊验证要点
def test_middle_east_specific():
assert payment_page.has_hijri_date_option() #伊斯兰历显示
assert receipt.contains_vat_number_field() #海湾国家增值税要求
if egypt_transaction:
assert has_fawry_reference_id()
- 四、常见问题排查指南
🔴 Error Code: MIDEAST-004
👉可能原因:未配置阿拉伯语错误消息资源文件
🟡 Warning ME-TAX-002
✅解决方案:确认发票包含5% VAT字段(GCC国家要求)
⚫️ Blackbox Issue
📌调试步骤:检查是否误用Gregorian日期而非Hijri日期
需要更详细的某个环节说明吗?例如特定国家的认证流程或某支付网关的深度集成细节?
# 中东支付沙箱测试深度解析(续)
四、国家/地区专项测试要点
沙特阿拉伯(MADA体系)
核心测试工具包:
“`xml
“`
必测项目清单:
1. SAMA认证的加密标准验证
2. 沙特本地化要求:
– 🇸🇦 必须显示阿拉伯语收据
– ⏰ 时区强制设置为GMT+3 (Riyadh Time)
– 📄 VAT发票编号格式校验(15位数字)
UAE(Visa/MasterCard主导)
Dubai金融科技沙箱特殊规则:
“`javascript
// Noon Pay模拟器API调用示例
const noonSandbox = require(‘noon-pay-sandbox’);
noonSandbox.configure({
merchantCode: ‘TESTAE’, // AE代表阿联酋
currencyLock: ‘AED’,
mandatoryFields: [‘TAX_INVOICE_NUMBER’, ‘PO_BOX’] // UAE特有字段
});
“`
关键差异点测试矩阵:
| Feature | UAE规范要求 | 标准国际方案 |
|———|————|————-|
|地址字段 | PO Box必填 | Street Address优先 |
|退款时效 | ≤5工作日 | ≤7工作日 |
|货币精度 | AED小数点后固定2位 | 动态小数位支持 |
Egypt(现金支付场景)
“`
FAWRY沙箱响应样本:
STATUS_CODES:
0000 – Successful payment (需验证16位reference码)
1400 – Pending (等待用户完成现金支付)
9002 – Invalid voucher code (测试用无效码:9999888877776666)
curl示例:
curl “https://sandbox.fawrypay.com/payments/status?merchantCode=TEST&paymentRefNumber=SANDBOX_REF_001”
“`
五、伊斯兰金融合规专项
Sharia-compliant交易检测流程
“`mermaid
graph TD;
A[交易发起] –> B{金额分析};
B –> C[含Riba(利息)成分?];
C –>|Yes| D[自动拦截并触发SHARIA_101错误];
C –>|No| E{合同条款审查};
E –> F[包含不确定性(Gharar)?];
F –>|Yes| G[标记为NON_HALAL交易];
F –>|No或已认证H.Halal合约模板} H[正常处理];
classDef sharia fill:#f9f,stroke:#333;
class D,G sharia;
“`
Halal支付接口设计建议
“`java
public interface HalalPaymentGateway {
@HalalCertified(provider = “AAOIFI”) //伊斯兰会计审计组织认证标识
void processPayment(PaymentRequest request) throws NonHalalTransactionException;
@FieldValidation(rule = “noCompoundInterest”)
boolean validateProfitRate(double rate);
default String getShariaComplianceCertificate() {
return “This gateway complies with Islamic Finance Standard APS-2023”;}
}
“`
六、实战调试技巧
🔧 跨网关问题诊断工具链
“`
1. Postman集合 + Alipay Middle East Sandbox插件
2. Wireshark过滤器设置:portrange(5000-5100) && http.contains(“AED”)
3. JMeter压力测试模板配置阿拉伯语字符集编码
4. Burp Suite中东专用CA证书包
“`
📌 典型故障模式库
“`
案例ME-2023-047:
现象:UAE交易成功但沙特失败
根因:未处理Mada卡的BIN号段588845-588848
修复方案:更新卡bin数据库至v4.22+
案例ME-2024-012:
现象:埃及返回模糊的「付款处理中」状态
诊断工具使用顺序:
a) Fawry状态API直接查询 → b) Check商户回调日志 → c) Traceroute到开罗数据中心节点Nile01
最终发现是EGP货币转换时的四舍五入差异导致
是否需要我展开某个具体国家的认证申请流程?或是提供完整的端到端沙箱部署checklist?