沙箱环境
如何使用沙箱
沙箱为您提供了一个测试平台,可以模拟支付,确保其应用与 Antom 产品的无缝集成。本文将引导您有效地使用沙箱环境。
开始前
在沙箱中进行测试之前,请完成以下步骤:
- 登录 Antom Dashboard,切换到测试模式,进入 开发者 > 快速入门 > 集成资源和工具,然后选择 集成资源 以获取沙箱客户端 ID、域名和公钥。
- 下载测试支付方式应用。参考测试支付方式指南。
在沙箱中测试
在沙箱中,提供了多种接口调用模拟方式,您可以多次调用每个接口。如果您提供相应信息,接口调用之间会相互关联。例如,您首先调用 支付 接口来发起支付。然后您可以调用 退款 接口,通过指定 paymentId 来针对支付发起退款。沙箱环境会提供支付和相关退款的信息。
此外,当您在沙箱中调用 支付 或 咨询 接口时,沙箱还会模拟不同终端类型(如WEB、WAP和APP)商户端与支付方式端之间的重定向过程。
收银台支付/代扣测试
要测试收银台支付和代扣,您可以使用提供的测试指南来模拟各种支付方式的支付和绑定过程。沙箱还可以通过错误场景模拟模拟所有错误代码,包括罕见的生产环境场景。这使开发者在测试期间使用相同的系统处理逻辑。
支付方式测试
模拟错误场景
错误场景模拟提供了不同接口结果的模拟,并返回指定的响应以进行集成测试。 详情参阅错误场景模拟。
对于订阅支付
在沙箱环境中,您可以创建、更新和取消订阅计划。沙箱会自动加速订阅扣款周期以方便您的验证过程。下表说明了其工作原理。
periodRule.periodType | periodRule.periodCount | 沙箱加速间隔(分钟) | 加速频率 |
|
| 3 | 12 |
| 3 | 12 | |
| 3 | 12 | |
|
| 3 | 12 |
|
| 3 | 12 |
| 15 | 12 | |
| 30 | 12 | |
|
| 60 | 12 |
例如,创建一个订阅计划,订阅周期为 31 天。
copy
{
"subscriptionRequestId": "REQUEST_20240409141836419",
"subscriptionDescription": "Subscription test",
"paymentMethodType": "GCASH",
"env": {
"osType": "ANDROID",
"terminalType": "APP"
},
"orderInfo": {
"orderAmount": {
"currency": "PHP",
"value": "100"
}
},
"paymentAmount": {
"currency": "PHP",
"value": "100"
},
"periodRule": {
"periodCount": 31,
"periodType": "DAY"
},
"settlementStrategy": {
"settlementCurrency": "USD"
},
"subscriptionStartTime": "2024-04-09T14:18:36+08:00",
"subscriptionEndTime": "2074-04-09T14:18:36+08:00",
"subscriptionExpiryTime": "2024-04-09T14:48:36+08:00",
"subscriptionNotificationUrl": "https://www.baidu.com",
"subscriptionRedirectUrl": "https://alipay.com/subscriptionNotify",
"paymentNotificationUrl": "https://alipay.com/subscriptionPayNotify"
}
按照如何测试 Alipay+ 支付方式的说明在沙箱环境中完成绑卡流程,然后您将每 3 分钟收到一次扣款通知 。第十三次扣款后,扣款周期不再加速。加速周期内的最后一次扣款通知详见下文:
copy
{
"paymentAmount": {
"currency": "PHP",
"value": "100"
},
"paymentCreateTime": "2024-04-08T23:59:00-07:00",
"paymentId": "202404091940108001001886J0299059200",
"paymentTime": "2024-04-08T23:59:03-07:00",
"periodEndTime": "2025-05-16T23:18:36-07:00",
"periodStartTime": "2025-04-15T23:18:36-07:00",
"phaseNo": "13",
"result": {
"resultCode": "SUCCESS",
"resultMessage": "success",
"resultStatus": "S"
},
"subscriptionId": "202404091900000000000009D0000004046",
"subscriptionRequestId": "REQUEST_20240409141836419",
"subscriptionNo": "13"
}