文档 / 集成
支付页面
支付页面由我们提供。您的服务器只需通过创建账单时返回的 checkout_url 将顾客重定向过去。
顾客看到的内容
- 订单金额和账单有效期倒计时。
- 币种选择 —— 仅显示该账单当前可用的资产。
- 选择后:二维码、带「复制」按钮的精确金额、地址、网络提示以及「在钱包中打开」链接(BIP21、EIP-681、Solana Pay、TRON)。
- 状态自动更新:「已检测到付款」→「确认数 7/20」→「已收到付款」。
- 「返回商店」按钮 —— 跳转到您的
return_url。
在尚未付款之前,顾客可以更换币种。首笔付款到账后,币种即被锁定。对于波动性资产,会显示汇率倒计时(20 分钟);倒计时结束后,金额和地址将被隐藏。
页面提供俄语和英语版本,并根据设备设置自动切换浅色或深色主题。
打开方式
| 场景 | 方式 |
|---|---|
| 网站 | 在同一标签页跳转:由服务器返回 303 See Other,或使用 location.href |
| iOS | ASWebAuthenticationSession 或 SFSafariViewController |
| Android | Chrome Custom Tabs(androidx.browser) |
| Telegram 机器人 | 带 checkout_url 链接的 Inline 按钮 |
| 请勿使用 | iframe、WKWebView、WebView:没有地址栏(无法识别钓鱼页面),跳转钱包的链接也不稳定。支付页面禁止被嵌入(frame-ancestors 'none') |
移动 AppApp 不应直接调用 Coinetic API,也不应保存密钥 secret —— 从安装包中提取它只需几分钟。应由您的服务器根据 App 的请求创建账单,只把
checkout_url 返回给 App。顾客返回
- 顾客可能在付款前、确认过程中返回,也可能根本不返回。订单页面不应依赖这一点。
- 可以在
return_url中传递订单号,但状态请以您自己的数据库为准 —— 数据库由 Webhook 更新。如果订单尚未支付,请通过GET /v1/invoices/{id}复核。 - 对于 App,请传入通用链接(Universal Links / App Links):
https://shop.example/app/orders/ORDER-1001。不接受自定义 scheme(myapp://)。
常见情况
| 情况 | 处理方式 |
|---|---|
| 顾客关闭了标签页 | 在订单中提供指向 checkout_url 的「前往支付」链接 —— 账单在 expires_at 之前一直有效 |
| 账单已过期 | 使用新的 order_id(例如 ORDER-1001-2)和新的 Idempotency-Key 创建新账单 |
| 少付 | 「请向同一地址补付余款」—— 支付页面会显示剩余金额 |
| 过期后付款 | 资金已到账,由您决定:交付订单或办理退款 |
| AML 检查 | 告知顾客付款正在审核中;等待 invoice.paid |