文档 / 入门

沙盒

一个不连接真实区块链网络的独立 Coinetic 实例。API、签名、支付页面、状态以及带重试的 Webhook 与生产环境完全一致 —— 只是付款为模拟。

项目地址
APIhttps://sandbox.coinetic.money
后台https://sandbox.coinetic.money/merchant

沙盒密钥与生产密钥相互独立。沙盒密钥在生产环境中无效,反之亦然。

通过按钮模拟付款

在沙盒支付页面中,选择币种后会出现「沙盒:测试支付」区块:

按钮效果
精确支付全额付款:立即变为 detected,约 3 秒后变为 paid
少付 10%支付 90% 金额 → underpaid
补付余款(少付之后)支付剩余部分 → paid
多付 10%支付 110% → overpaid
支付一半支付 50%;再点一次 —— 第二个一半 → paid

在自动化测试中模拟付款

同样的场景,通过请求触发。令牌是 checkout_url 中 #t= 之后的部分。必须先选好币种(在页面上选择,或使用同一令牌调用 POST /v1/invoices/{id}/select)。

HTTP
POST /sandbox/v1/invoices/{id}/pay
Authorization: Bearer <checkout_url 中 #t= 之后的令牌>
Content-Type: application/json

{"scenario": "exact"}

scenario 的取值:exact、underpay、overpay、half、rest。

沙盒中的退款只需一条命令即可执行 —— POST /v1/refunds/{id}/simulate(详见「退款」一节)。

与生产环境的区别

  • 账单和 Webhook 中 livemode: false。生产环境的商店必须拒绝此类账单和事件 —— 这样即使误接了沙盒,也不会发出商品。
  • Webhook 和 return_url 可以指向 http://localhost 和 http://127.0.0.1。公网地址则与生产环境一样,只允许 https:// 和 443 端口。
  • AML 检查结果始终为“通过”。
  • 波动性资产的汇率为来自交易所的真实汇率。

上线前需要跑通的场景

  • 精确支付、少付后补付、多付、分两次各付一半。
  • 账单过期:为同一订单创建新账单。
  • 伪造和过期的 Webhook 会被拒绝;重复的 Webhook 不会导致重复交付。
  • 在不停机的情况下轮换 Webhook 签名密钥并更换 API 密钥。