全部文章

自建收银台还是用平台收银台?一个下午能做完的决定

CNIXPay 的两种接入方式差别只在创建订单时传不传 paymentOptions。这篇讲清楚各自适合谁、各自要做什么,以及怎么从一种平滑切到另一种。

  • 接入
  • 收银台
  • 最佳实践

接入 CNIXPay 时第一个要做的决定,就是支付页面由谁来渲染。两种方式在 API 层面只差一个字段,但对你的开发量和控制力影响很大。

两种方式,一个字段

方式 A · 自建收银台:创建订单(POST /orders)时传 paymentOptions,告诉平台你接受哪些「网络 × 币种」。响应里的 paymentOptions 会带上每个收款方式的地址和应付数量,你拿去渲染自己的支付页。

// 请求
{
  "merchantOrderNo": "ORDER_001",
  "amount": "100.00",
  "paymentOptions": [
    { "chain": "tron", "token": "USDT" },
    { "chain": "bsc",  "token": "USDC" }
  ]
}

// 响应(节选)
{
  "paymentOptions": [
    { "chain": "tron", "token": "USDT", "address": "TR7NHq...", "amount": "100.00" },
    { "chain": "bsc",  "token": "USDC", "address": "0x55d3...", "amount": "100.00" }
  ]
}

方式 B · 平台收银台:创建订单时不传 paymentOptions。此时不预分配地址(响应里 paymentOptions 为空),只返回 cashierUrl,你把用户跳过去就行。选网络、展示地址和二维码、倒计时、支付结果页,全部由平台页面处理;支付完成跳回你传的 returnUrl。

// 请求
{
  "merchantOrderNo": "ORDER_002",
  "amount": "50.00",
  "returnUrl": "https://shop.example.com/orders/ORDER_002"
}

// 响应(节选)
{
  "cashierUrl": "https://pay.example.com/pay/20261017...",
  "paymentOptions": []
}

回调、签名、订单状态、查询接口,两种方式完全一样。

各自适合谁

自建收银台 平台收银台
开发量 需要做支付页:地址、二维码、倒计时、状态轮询 零,只需跳转
品牌与体验 完全自定义,用户不离开你的域名 平台页面,可跳回你的站
网络选择 你决定给用户哪些选项 用户在平台页面自选
适合 已有成熟结算页的产品、App 内嵌支付、对体验要求高 快速上线、MVP、运营活动页、没有前端资源
上线时间 一到两天 一个下午

一个常被忽略的点:自建收银台里,用户看到的收款方式是你下单时决定的。如果用户到了支付页才说“我只有 Polygon 上的 USDC”,你可以调追加收款方式接口(POST /orders/{orderNo}/payment-options)把它加进去,不用关单重建。

自建收银台要做对的几件事

如果选方式 A,支付页至少要处理这些:

  1. 每个收款方式一张卡片:网络名、币种、地址、二维码、应付数量。不同网络的应付数量可能不同(paymentOptions[].amount),要用各自的值。
  2. 地址完整展示 + 一键复制。链上地址大小写敏感(TRON、Solana),不要做任何“美化”。
  3. 倒计时用 expireTime(Unix 秒)算,不要用本地时间加固定时长。
  4. 状态轮询:用户停留在支付页时,每 5–10 秒调一次你自己的后端,后端再查询订单或读回调落库的状态。不要让前端直接调 CNIXPay。
  5. “我已付款”按钮:点击后立即触发一次查询,给用户即时反馈。

这些事情平台收银台已经替你做了——这也是它“一个下午”的原因。

从平台收银台切到自建

很多团队的路径是:先用平台收银台上线验证业务,跑顺了再自建。切换成本很低,因为后端逻辑不变:

  1. 创建订单时加上 paymentOptions;
  2. 用响应的 paymentOptions 渲染页面;
  3. 回调处理器一行不改。

甚至可以按订单混用:某些渠道传 paymentOptions 走自建,某些渠道不传走平台收银台,都在同一个应用下。

建议

  • 先上线再优化。 没有特殊体验要求的话,从平台收银台开始,用真实小额订单把回调、幂等、对账跑通。
  • 有 App 或对品牌一致性有要求,直接自建。 一到两天的开发量换来完全可控的体验,值得。
  • 无论哪种,回调处理器都一样写。 验签、幂等、只在 paid 履约、超时主动查询——见 回调验签与幂等。

字段细节见 接入指南 · 创建订单。