如何通过 EIP-681 链接在 Monad 上接受 USDC
使用 Cosmos Pay 时,Monad 上的支付链接就是一个指向专为该笔支付生成的充值地址的 EIP-681 请求:客户用 EVM 钱包扫描其二维码,并确认这笔 USDC 转账。充值地址只能将款项转发到您的地址,转发完成后,Cosmos Pay 即将该链接标记为已支付。每个 Monad 链接都必须填写金额。

EIP-681 链接包含什么
EIP-681 是 EVM 钱包能读取的 Ethereum 支付请求标准:一个 ethereum: 链接或其二维码,包含代币、网络和金额。Monad 主网的 chain ID 为 143,其 Testnet 为 10143。
该链接付款到专为这笔支付生成的充值地址,而不是直接付到您的地址。该地址的代码只能将收到的款项发送到您的地址,因此 Cosmos Pay 不持有任何能把资金转到别处的密钥。
充值地址如何向您付款
- Cosmos Pay 会监控充值地址。一旦其中至少持有该金额,中继就会将款项转发到您的地址,这次转发即完成该链接的支付。
- 中继可能会从付款中扣除一笔转发费用。收银台会显示这笔费用,API 也会在该笔支付的 networkFee 中列明。
- 超出金额的付款会全额转发给您。低于金额的付款无法完成该链接的支付。
- 客户的钱包以 MON 支付其自身转账的 Monad 网络费。
在 Monad 上接受您的第一笔 USDC 支付
切换到沙箱
登录控制台,在顶部选择“沙箱”。在那里创建的链接运行在 Monad Testnet 上,该网络没有预设的 USDC:请以 MON 收款,或按合约指定代币。
添加您的 Monad 地址
在组织设置中,添加将在 Monad 上收款的 EVM 地址,并签署控制台请求签署的内容,以证明该地址属于您。
创建链接
在“支付”中选择“创建支付链接”,选择 Monad,输入金额(必填)并选择资产,然后选择您的地址。
用钱包付款
打开收银台页面,在同一网络上用能读取 EIP-681 链接的 EVM 钱包扫描其二维码。确认转账后,款项一转发给您,收银台即变为“已支付”。
在服务器上确认
在控制台中添加 Webhook 端点。支付获得确认后,Cosmos Pay 会发送使用 HMAC-SHA256 签名的 PAYMENT_INTENT_SUCCEEDED。请在收到该事件时交付订单。
切换到生产环境
选择“生产环境”,并创建生产 API 密钥(以 prod_ 开头)。链接现在运行在 Monad 主网上,USDC 在那里有自己的预设。
从服务器创建链接
调用 POST /v1/payment-intents/pay,将 chain 设为 monad,以您的地址作为目标地址并填写金额;收取 USDC 时,填写资产代码,并以其合约作为发行方。也可以向 TypeScript SDK(2.2 或更高版本)中的 client.paymentIntents.createPay 传入 chain: 'monad'。响应中包含链接(其 uri 以 ethereum: 开头)及其二维码。
Monad 链接不支持消息。若要在转发到账之前确认一笔支付,请将客户的交易哈希(0x 加 64 个十六进制字符)发送到 POST /v1/payment-intents/:id/validate。
须知
- 链接的有效时间有限。之后仍到达的足额付款会被转发给您,并将该链接标记为已支付。
- 向同一充值地址的其他付款也会被转发到您的地址。
- 如果在支付上加收您自己的费用,充值地址会拆分付款:您的费用进入您的收费钱包,其余款项转给您。
- 每笔支付按您套餐的费率计费,与其他所有网络相同。
为什么链接付款到充值地址,而不是我的地址?
每笔支付都有自己的地址,因此 Cosmos Pay 无需 memo 即可区分各笔付款。该地址只能将收到的款项转发到您的地址。
在 Monad 上由谁支付费用?
客户的钱包支付其转账的网络费。中继的转发费用(如有)从付款中扣除,并显示在收银台上。
客户可以自行决定金额吗?
不可以。Monad 链接必须填写金额。如需由客户决定金额,请使用 Stellar 或 Solana 链接。
可以在 Monad 上测试吗?
可以。在沙箱中并使用测试密钥(dv_)时,链接运行在 Monad Testnet 上。那里没有预设的 USDC,因此请以 MON 收款,或按合约指定代币。
