文档 / 集成

支付页面

支付页面由我们提供。您的服务器只需通过创建账单时返回的 checkout_url 将顾客重定向过去。

顾客看到的内容

  1. 订单金额和账单有效期倒计时。
  2. 币种选择 —— 仅显示该账单当前可用的资产。
  3. 选择后:二维码、带「复制」按钮的精确金额、地址、网络提示以及「在钱包中打开」链接(BIP21、EIP-681、Solana Pay、TRON)。
  4. 状态自动更新:「已检测到付款」→「确认数 7/20」→「已收到付款」。
  5. 「返回商店」按钮 —— 跳转到您的 return_url。

在尚未付款之前,顾客可以更换币种。首笔付款到账后,币种即被锁定。对于波动性资产,会显示汇率倒计时(20 分钟);倒计时结束后,金额和地址将被隐藏。

页面提供俄语和英语版本,并根据设备设置自动切换浅色或深色主题。

打开方式

场景方式
网站在同一标签页跳转:由服务器返回 303 See Other,或使用 location.href
iOSASWebAuthenticationSession 或 SFSafariViewController
AndroidChrome 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