测试与上线准备
正式上线前,建议先用 test key 跑通完整链路:创建订单、跳转结账页、完成付款、接收 webhook、更新你的订单系统。
测试代币(测试网水龙头)
测试模式下的支付跑在公共测试网上,使用平台发行、无真实价值的测试稳定币。领取方式:在商家后台打开测试模式,进入 Developers 页面,点击 测试代币 按钮——弹窗会把所有代币一次性领到你自己的钱包。每个代币每个地址每个 UTC 日可领 1,000 枚(合约的公开 drip() 方法,也可以直接在区块浏览器上调用)。
| 网络 | 代币 | 合约地址 | 精度 |
|---|---|---|---|
| Arbitrum Sepolia (421614) | USDC | 0xf9Af82ce89B3A8031fc70Ae5999Ba5386c0f6249 | 6 |
| Arbitrum Sepolia (421614) | USDT | 0xd8675B730215142358444f3b496CF590E7E8a5e7 | 6 |
| Arbitrum Sepolia (421614) | EURC | 0x64C9Cc17Ea6e7709F95E5E0B76A1D2D2d71c6c41 | 6 |
| Base Sepolia (84532) | USDC | 0x4e620E21B229fe0319E0E49055b85BcdcDC1Ab3f | 18 |
| Base Sepolia (84532) | USDT | 0xD699ea57770CF7286FbecEccA4c9a7006Efb0bE2 | 18 |
说明:
- 把这些地址导入钱包,才能看到测试币余额。
- Arbitrum Sepolia 对应主网 Base/Arbitrum 的形态(6 位精度;USDC/EURC 走 EIP-3009 免 gas 支付)。Base Sepolia 对应主网 BNB 智能链的形态(18 位精度;approve + 签名流程)。
- 领取和支付仍需要少量测试网 gas——请从任意公共 faucet 领取对应网络的 Sepolia ETH。
测试目标
你需要确认:
- 服务端可以成功创建 payment intent。
- Hosted Checkout 前端能拿到
checkoutUrl并跳转。 - 如果使用 Checkout Button,按钮能从你的服务端拿到
checkoutUrl并打开 hosted checkout。 - 如果使用 Checkout Panel,前端能拿到
paymentId,并能正常加载面板、切换链和币种。 - 买家完成付款后,你的 webhook 能收到事件。
- 你的订单系统能按
paymentId或orderId幂等更新。 - 失败、取消、过期和重复事件不会导致错误履约。
推荐测试顺序
- 在商家后台 Developers 创建 test API key。
- 创建 webhook endpoint,并保存 signing secret。
- 用服务端创建一笔小额测试订单。
- 前端跳转到 Taria Pay 结账页。
- 如果使用 Checkout Button,确认按钮打开 hosted checkout;如果使用 Checkout Panel,确认面板能连接钱包并完成支付。
- 完成付款或模拟失败路径。
- 在 Delivery Logs 查看 webhook 投递结果。
- 在你的系统确认订单状态。
测试直接转账付款
在支持的网络上,结账页除了钱包支付还提供直接转账(展示订单专属收款地址和二维码)。建议至少验证一次:
- 创建一笔小额测试订单并打开结账页。
- 展开直接转账,核对页面展示的网络、币种、金额和收款地址。
- 从任意钱包(不需要连接)按展示的金额转账。
- 留在页面等待自动确认,或点击"我已转账"手动触发检查。
- 确认你的 webhook 收到与钱包支付完全一致的
payment_intent.confirmed事件,订单系统正常落账。
注意:直接转账按网络开通,测试时以结账页实际展示为准;不要向历史订单的收款地址重复转账——除非你为该已验证客户启用了固定收款地址,否则每笔订单地址唯一(即使是固定地址,也只有订单开着期间转入的资金才计入订单)。
本地 Taria Pay 栈
本地付款 不会自己确认。需要同时跑:
bash
npm run dev:backend # API :3003
npm run dev:checkout # checkout :3004
./scripts/dev-backfill-loop.sh # 必跑,否则 intent 停在 processing,也不会发 webhook商家应用把 TARIAPAY_API_BASE 设为 http://127.0.0.1:3003(只写 origin)。
本地 webhook
如果你的服务端还在本地开发,需要让 Taria Pay 能访问你的 webhook endpoint。常见做法是使用公网转发工具,把本地地址临时暴露为 HTTPS URL,再到后台 Developers → Webhooks 注册,并把 signing secret 写入 TARIAPAY_WEBHOOK_SECRET。
不要用 successUrl 当本地捷径去履约。暂时没法打隧道时,在服务端轮询 GET /v1/payment-intents/:paymentId。
上线前请把 webhook URL 换成正式域名。
测试清单
- API key 没有暴露在前端代码。
orderId在你的系统里稳定且唯一。successUrl和cancelUrl都能正常打开。- 如果用 Checkout Button,前端只拿到
checkoutUrl,没有暴露 API key。 - 如果用 Checkout Panel,前端只持有
paymentId,没有暴露 API key。 - webhook handler 会先验签。
- webhook 处理逻辑是幂等的。
confirmed后才触发发货、开通权益或记账。- 客服或运营知道如何用
paymentId、orderId、txHash排查问题。
下一步
- 准备正式发布:上线检查
- 支付按钮或 Checkout Panel:Checkout Button 与 Checkout Panel
- 排查问题:排查支付问题