跳转至

wallet-cli x402 roundtrip

启动本地付费墙、付一次款,然后退出。

用法

wallet-cli x402 roundtrip --pay-to <address> [--amount <n> | --raw-amount <n>] [--token <symbol> | --asset <address> [--decimals <n>]]
                          [--scheme <exact|exact_gasfree>] [--valid-for-seconds <n>] [--port <n>] [--facilitator-url <url>]
                          [--gasfree-relay <official|gasfree|url>] [--max-gasfree-fee <n> | --max-gasfree-fee-raw <n>]
                          [--password-stdin] [options]

说明

一步完成 x402 serve 和 x402 pay:启动同样的本地端点,用当前账户(或 --account)向它付一次款,然后关闭服务器。用它可以端到端地验证整条 x402 流程——支付要求、签名、facilitator 结算。

这是一笔真实付款,金额为设定的价格,收款方是 --pay-to;而且 pay 只接受服务器启动时设定的那条路由,因此不可能付到别处去。

服务器始终绑定到 127.0.0.1。价格、token、方案、端口和 facilitator 相关选项的校验规则与 x402 serve 完全相同。需要一个账户,以及通过 --password-stdin 提供的 master password。

选项

选项 说明
--pay-to <address> 必填。 所选网络上的收款地址
--amount <n> 价格,以 token 为单位(可含小数),小数位不得超过该 token 的精度(默认 0.0001);与 --raw-amount 互斥
--raw-amount <n> 价格,以该 token 的最小单位计
--token <symbol> 地址簿在该网络上已知的支付 token(默认 USDT);与 --asset 互斥
--asset <address> 用合约地址而非符号指定支付 token;若该合约不在地址簿中,还需给出 --decimals
--decimals <n> --asset 所指 token 的精度,0–18;必须与 --asset 同用
--scheme <exact\|exact_gasfree> 支付方案(默认 exact);exact_gasfree 仅限 TRON
--valid-for-seconds <n> 支付授权的有效时长,1–86400(默认 300)
--port <n> 端口,1–65535(默认 4020)
--facilitator-url <url> HTTPS facilitator(默认 https://facilitator.bankofai.io)
--gasfree-relay <official\|gasfree\|url> exact_gasfree 下 GasFree 账户数据的来源;见 x402 pay
--max-gasfree-fee <n> / --max-gasfree-fee-raw <n> GasFree 服务费上限;两者互斥
--password-stdin 从 stdin 读取 master password

此外还有全局选项。

示例

在 Nile 上通过本地付费墙向 TMSgJxtPw29AFEHMXsjGo4kWV7UwbCToHJ 支付 0.0001 USDT。$PW 是你的 master password(来自环境变量、密码管理器等),通过 --password-stdin 从 stdin 传入:

printf '%s' "$PW" | wallet-cli x402 roundtrip --pay-to TMSgJxtPw29AFEHMXsjGo4kWV7UwbCToHJ --network nile --password-stdin
✅ Payment settled
  Network      nile
  Scheme       exact
  Amount       0.0001 USDT
  From         TWer2Ygk5TEheHp3TPuYeqxmB6SsGZmaL6
  To           TMSgJxtPw29AFEHMXsjGo4kWV7UwbCToHJ
  Transaction  d6e0bb3015dce28ac9813f4d90be442d0f1ef61a6d4268cb023c5e8cfc09ef36
  Delivery     Delivered
printf '%s' "$PW" | wallet-cli x402 roundtrip --pay-to TMSgJxtPw29AFEHMXsjGo4kWV7UwbCToHJ --network nile --password-stdin -o json
{"schema":"wallet-cli.result.v1","success":true,"command":"x402.roundtrip","data":{"serve":{"payUrl":"http://127.0.0.1:4020/pay","network":"tron:3448148188","scheme":"exact","token":"USDT","asset":"TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf","decimals":6,"validForSeconds":300,"resourceUrl":"http://127.0.0.1:4020/pay","rawAmount":"100","payTo":"TMSgJxtPw29AFEHMXsjGo4kWV7UwbCToHJ"},"pay":{"url":"http://127.0.0.1:4020/pay","status":200,"delivered":true,"settled":true,"payer":{"address":"TWer2Ygk5TEheHp3TPuYeqxmB6SsGZmaL6"},"paymentResponse":{"success":true,"transaction":"1ca932a4cda16fe9485689d6b7daa38ca34c601bbd970f609fb1c5a56b375438","network":"tron:0xcd8690dc","payer":"0xe2e1a54926527fbb4e4420de4c6bab82beaee24d"},"response":{"success":true,"network":"tron:3448148188","scheme":"exact","transaction":"1ca932a4cda16fe9485689d6b7daa38ca34c601bbd970f609fb1c5a56b375438"}}},"meta":{"durationMs":7594,"warnings":[]},"chain":{"family":"tron","network":"tron:3448148188","chainId":"3448148188"}}

Payment settled 加上 Delivery Delivered,表示这笔付款已在链上完成,且付费墙返回了它的响应。From 是付款账户,Transaction 是该笔付款的交易 ID。在 JSON 中,serve 是付费墙所收取的内容(rawAmount 以该 token 的最小单位计),pay 则是付款结果:paymentResponse 是 facilitator 的回执,其中的 payer 是你的地址的 hex 形式,response 是付款之后付费墙返回的内容。

输出

字段 类型 含义
serve object 服务器所提供的内容——字段与 x402 serve 相同
pay object 付款结果——字段与 x402 pay 相同

退出码

0 已付款 · 1 执行失败(x402 pay 的各项付款错误;auth_required——未给出 --password-stdin;missing_wallet_address;port_in_use) · 2 用法错误(x402 serve 的各项用法错误;invalid_option——同时给了两个互斥选项(--amount / --raw-amount、--token / --asset、两个 GasFree 费用上限)、--decimals 没有配 --asset,或使用了本命令不接受的 --wait / --wait-timeout;gasfree_credentials_missing)。

另请参见

x402 serve · x402 pay