支持的链与资产
InfraIO Pay 以 EVM 为先、以稳定币为先。每条支持的链都在
payment-service 的 networks.json 注册表中配置;下面的矩阵反映了
今天在测试网和主网上线运行的内容。
主网
| 链 | Chain ID | 原生币 | USDC | USDT | 确认数 | 最低订单 |
|---|---|---|---|---|---|---|
| Ethereum | 1 | ETH | ✓ (ERC-20) | ✓ (ERC-20) | 12 | $5.00 |
| Base | 8453 | ETH | ✓ (ERC-20) | — | 10 | $1.00 |
| Polygon | 137 | POL | ✓ (ERC-20) | ✓ (ERC-20) | 5 | $1.00 |
| BSC | 56 | BNB | ✓ (18 位小数) | ✓ (18 位小数) | 5 | $1.00 |
| Arbitrum | 42161 | ETH | ✓ (ERC-20) | ✓ (ERC-20) | 5 | $1.00 |
| Optimism | 10 | ETH | ✓ (ERC-20) | ✓ (ERC-20) | 5 | $1.00 |
| ZKsync Era | 324 | ETH | — | — | 5 | $1.00 |
| Mantle | 5000 | MNT | — | — | 5 | $1.00 |
BSC 上的 USDC + USDT 用 18 位小数,而不是其他链上的 6 位。如果 出于某种原因你在客户端计算金额,请考虑这点 — 否则 SDK 的金额字段 会自行处理。
“最低订单”是在 payment-intent 创建时强制的 USD 下限。当前出厂默认值
是主网 $1.00 / 测试网 $0.50,Ethereum 被提到 $5,因为 L1 gas
会把小额订单吃掉。Admin ops 可以按网络覆盖 — 低于下限的订单会被
拒绝并返回 AMOUNT_BELOW_MINIMUM(HTTP 400),details.floor_usd
携带实际配置值,方便前端展示。
测试网
| 链 | Chain ID | 原生币 | 确认数 | 最低订单 |
|---|---|---|---|---|
| Ethereum Sepolia | 11155111 | ETH | 1 | $0.50 |
| Base Sepolia | 84532 | ETH | 1 | $0.50 |
| Polygon Amoy | 80002 | POL | 1 | $0.50 |
| BNB Smart Chain Testnet | 97 | tBNB | 1 | $0.50 |
| Arbitrum Sepolia | 421614 | ETH | 1 | $0.50 |
| OP Sepolia | 11155420 | ETH | 1 | $0.50 |
| Mantle Sepolia | 5003 | MNT | 1 | $0.50 |
| ZKsync Sepolia | 300 | ETH | 1 | $0.50 |
测试模式使用真实测试网,不是模拟链。要触发一次测试支付,你 需要真实的测试网资金 — 从水龙头获取(例如 sepoliafaucet.com 、 coinbase.com/faucets )并发送 到结账页生成的存款地址。
API 中使用的货币代码
currency(顶层 + 各 line item)是 订单的显示货币 —
买家看到的金额单位。目前创建时只接受一个代码:
"USD"—payment-service中IsSupportedCurrency返回 true 的 唯一值。POST /v1/orders和POST /b2b/v1/checkout-sessions/quick都会用INVALID_INPUT(“unsupported currency”)拒绝其他值。 公开列表通过GET /v1/supported/currencies获取,确保服务端 enum 和客户端永不漂移。
买家实际结算的 链上资产(USDC、USDT 等)不是 currency 字段。
它由买家在结账页从你商户配置启用的”链 × 代币”组合中选择,然后通过
PaymentIntent 和 webhook payload 中的 settlement_token
(symbol + chain)返回给你。原生 gas 代币(ETH、BNB、POL、
MNT)只是链的元数据,不是有效的支付货币。
链本身也基于同样的理由不在创建时由 API 指定 — 买家在结账页选择组合。
确认数与最终性
上表的”确认数”列是链监听器在把 PaymentIntent 翻转到 SETTLED 并
触发 payment.settled 之前等待的区块数。默认值经过调校,在典型重组
深度下为每条链提供概率性最终性:
- 主网 Ethereum 的 12 是大多数交易所在 Merge 之后采用的值。
- L2 结算更快但最终继承 Ethereum 的最终性 — 每链的数字反映 L2 自身 的重组风险,而非 L1。
- 测试网定在 1 个确认,以保持开发循环快速;不要将其外推到开发环境的 主网级安全性。
如果你需要对特定链使用更严格(或更宽松)的确认数,该值可在商户账户 按链配置 — 联系你的客户经理。
为你的商户启用链
默认情况下,新商户在测试网上有一个宽松的链集合,在主网上有一个较窄 的集合。主网集合受以下条件门控:
- KYB 完成
- 各链上的资金钱包证明(你签名一条消息证明保管权)
从商户仪表板的 Settings → Networks 启用更多链。
确定性存款地址
EVM 存款地址是按结账确定性生成的:平台会从绑定到商户、订单、 intent 的内部参数中提前派生地址。你无需预创建或预注资 — 在 PaymentIntent 上就能拿到地址,把它交给买家即可。
- 同一商户的两个 intent 得到不同地址 — 买家之间不会冲突。
- 在任何链上设置之前,结账页就会显示送达地址,买家能立刻看到目的地。
- 买家从不支付任何设置 gas。资金直接结算到商户资金钱包,无需商户 额外跟踪清扫步骤。
对集成方的实际影响:
- PaymentIntent 上返回的
deposit_address是普通 EVM 地址 — 你可以 把它显示为二维码、扫描它、从任何钱包向它发送。客户端无需特殊支持。 - 在 intent 过期之前向地址发送会结算订单。过期后发送只能尽力 恢复 — 平台在某些情况下可以重新清扫迟到存款,但绝不要假设迟到资金 安全。
- 每个地址在每个 intent 是单次使用。如果买家需要第二次尝试,请铸造 新的结账会话 — 你会得到一个新地址。
今天不支持什么
- Tron / TRC-20。 经常有人为 USDT-TRC20 提出需求;在路线图上, 尚未上线。
- Solana / SPL。 在路线图上。
- Bitcoin / Lightning。 不在路线图上。
- Layer-1 原生稳定币(USDe、FDUSD……)。通过仪表板请求添加; 只要底层链已启用即可。