沙盒测试( T)
沙盒与生产是同一个平台,运行相同的代码,有支付供应商 替换为模拟器。 使用它来构建和测试您的整合; 没有货币移动 。
沙盒对生产
| 沙盒 | 生产 | |
|---|---|---|
| 基础 URL | https://sandbox.4pay.online/api/v1 | https://4pay.online/api/v1 |
| 付款页 | https://pay.sandbox.4pay.online | https://pay.4pay.online |
| 凭据 | 单独钥匙和组织编号 | 单独钥匙和组织编号 |
| 实际费用 | 永远不要 | 实金 |
| Webhook 通知 | ✅ 已发送到您终端的 notify_url | ✅ 已发送到您终端的 notify_url |
环境是 ** 在单独主机名上单独部署**,且证书不包含 交叉: 沙盒密钥在生产上毫无意义, 反之亦然。 密钥没有前缀 。 以便他们分道扬镳。
在一个主机内, env 在请求正文中选择交易本身的环境,它
is 所需经费. A ?env=test 查询参数只搜索范围:只包含
生成一个 生产 交易。见 交易.
获取沙盒证书
询问您的平台操作员。 他们在沙盒组织里为您创建了合伙人账户 。 将两个价值观交到一起—— API 键和组织编号。 请求。
进行测试交易
curl -X POST https://sandbox.4pay.online/api/v1/transactions \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_SANDBOX_KEY" \
-H "x-organization-id: YOUR_SANDBOX_ORGANIZATION_ID" \
-d '{
"params": {
"type": "payment",
"amount": "1000",
"currency": "USD",
"txid": "sandbox-test-001",
"env": "test",
"hosted": true,
"returnUrl": "https://yoursite.com/success",
"failUrl": "https://yoursite.com/fail"
}
}'
你回来 widget_url打开浏览器查看主机支付表,并使用
下方的一张牌
测试卡
模拟器不按卡片分类 BIN 与公共网关相比
整个TUPL 数字, CVV、持卡人和过期者——对照固定名单。
拒绝差异与 unexpected card.
| 牌号 | CVV | 持卡人 | 过期 | 结果 |
|---|---|---|---|---|
2201382000000013 | 283 | IVAN IVANOV | 12 / 20 | 解决 - charging,则 charged 大约一分钟之内 |
2201382000000021 | 749 | IVAN IVANOV | 12 / 20 | ❌ rejected 由提供者提供 |
2201382000000047 | 480 | IVAN IVANOV | 12 / 20 | 解决,然后退款 |
2201382000000039 | 572 | IVAN IVANOV | 12 / 20 | ❌ failed |
2201382000000054 | 111 | IVAN IVANOV | 12 / 20 | ⏸ 出款停留在 payout_suspended |
其他一切——包括签证和万事达卡测试号——作为结束
rejected 与 unexpected card.
"money_storage": {
"cardnumber": "2201382000000013",
"cvv": "PROVIDER_TEST_CVV",
"cardholder": "IVAN IVANOV",
"exp_year": "20",
"exp_month": "12"
}
说明 exp_year 是两位数字,而持卡人为大写。
SDK 以常数导出这些常数( E) :sandbox.CARD_CHARGE 朋友们,所以你
不要重打它们。
付款
| 外地 | 数值 | 结果 |
|---|---|---|
bank_id | 200000000001 | 支付结算 |
bank_id | 200000000002 | 拒绝付款 |
customer (SBP) | John Doe | 和解; 拒绝任何其他名称 |
无需浏览器充电
自动测试时, 跳过付费页面, 并收取卡片服务器到服务器的费用 :
curl -X POST https://sandbox.4pay.online/api/v1/transactions \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_SANDBOX_KEY" \
-H "x-organization-id: YOUR_SANDBOX_ORGANIZATION_ID" \
-d '{
"params": {
"type": "payment",
"amount": "1000",
"currency": "USD",
"txid": "sandbox-test-002",
"env": "test",
"show_widget": false,
"money_storage": {
"cardnumber": "2201382000000013",
"cvv": "PROVIDER_TEST_CVV",
"cardholder": "IVAN IVANOV",
"exp_year": "20",
"exp_month": "12"
},
"returnUrl": "https://yoursite.com/success",
"failUrl": "https://yoursite.com/fail"
}
}'
它回来了 charging 并达到 charged 在大约一分钟内自行完成 。 二者都重定向 URL
这里需要——没有服务器到服务器的付款被创建并立即拒绝.
通过自己的服务器传递一个真实的卡片号码意味着卡片数据环境是您的 在沙盒中,这是测试的方便;在生产中,使用主机。 流动,除非你已经持有 PCI DSS 证明书。
测试网点
用隧道曝光您的本地服务器 :
ngrok http 3000
# → Forwarding: https://abc123.ngrok.io → localhost:3000
请您的操作员设置 https://abc123.ngrok.io/webhooks/payment 作为 notify_url 在你身边
沙盒终端, 带着一个网球秘诀 - 没有了一个平台,没有签名,你
无法从伪造的邮件中分辨真实的交货。 Webhook 通知.
什么不是模拟的
| 提供人特有的行为 | 模拟器代表每个供应商。 铁路特异性突变—— 3DS 变种、 本地钱包重定向、 银行截断时间—— 只在生产中出现 。 |
| 结算时间 | Sandbox 支付数秒后结算; 真正的铁路需要数分钟到数天 |
| 收费 | 收费计算运行,但无论费率如何 沙盒组织已经配置 |
活下来了
- 从您的操作员那里获取生产证书——一个新的密钥和组织代号.
- 将主机更改为
https://4pay.online. - 变动
env请求中"prod". - 点
notify_url在你的生产终点, 与它自己的秘密。 - 运行一个真正的支付 小额,并退款。
步骤 2 和 3 由主机决定您要与哪个平台交谈; env
决定交易的平台所在位置 。
错误,产生"测试" 支付在运行的铁路。