okx-a2a-payment
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseOnchain OS A2A Payment
Onchain OS A2A 支付
Wrap the CLI surface end-to-end for both seller and buyer roles. Buyer-side trust is delegated to the upstream caller — when invoked with a , the skill fetches the on-server challenge, TEE-signs it as-is, submits the credential, and auto-polls payment status to a terminal state.
onchainos payment a2a-paypaymentId为卖方和买方角色端到端封装 CLI接口。买方侧的信任委托给上游调用方——当传入调用本技能时,它会获取服务器端的挑战内容,直接进行TEE签名,提交凭证,并自动轮询支付状态直至进入终态。
onchainos payment a2a-paypaymentIdSkill Routing
技能路由
This skill only covers internal a2a payments issued via . If the request fits one of the intents below, route to the corresponding skill instead:
onchainos payment a2a-pay| Intent | Use skill |
|---|---|
| External HTTP 402 payment-gated resource (any non-onchainos URL) | |
| Wallet balance / transfer / login | |
| Task publish / accept / deliver / verify (business layer) — payment sub-step calls back into this skill via the Workflow A contract | upstream task / agent skill (out of repo) |
Internal | this skill |
本技能仅覆盖通过发起的内部a2a支付。如果请求符合以下任一意图,请路由至对应技能:
onchainos payment a2a-pay| 意图 | 使用技能 |
|---|---|
| 外部HTTP 402支付 gated资源(任何非onchainos URL) | |
| 钱包余额/转账/登录 | |
| 任务发布/接受/交付/验证(业务层)——支付子步骤通过Workflow A合约回调至本技能 | 上游任务/Agent技能(不在本仓库内) |
内部 | 本技能 |
Triggers
触发条件
Skill activates on user intents that match any of:
- "create payment link", "create a2a payment", "generate payment", "create payment authorization"
- "pay paymentId", "pay a2a_...", "pay this link", "settle this payment"
- "payment status", "a2a payment status", "check payment status", "where is my payment"
当用户意图匹配以下任意内容时,技能激活:
- "create payment link", "create a2a payment", "generate payment", "create payment authorization"
- "pay paymentId", "pay a2a_...", "pay this link", "settle this payment"
- "payment status", "a2a payment status", "check payment status", "where is my payment"
Pre-flight Checks
预检查
Both seller () and buyer () require an authenticated wallet session. The CLI calls internally and bails on .
createpayensure_tokens_refreshednot logged inBefore invoking or :
createpaybash
onchainos wallet status- Logged in → proceed.
- Not logged in → ask the user to log in via (AK login, no email) or
onchainos wallet login(OTP login). Do NOT attempt to sign without a live session.onchainos wallet login <email>
status卖方()和买方()操作均需要已认证的钱包会话。CLI会在内部调用,若未登录则终止操作。
createpayensure_tokens_refreshed在调用或之前:
createpaybash
onchainos wallet status- 已登录 → 继续执行。
- 未登录 → 提示用户通过(AK登录,无需邮箱)或
onchainos wallet login(OTP登录)进行登录。请勿在无有效会话的情况下尝试签名。onchainos wallet login <email>
statusOperation Flow
操作流程
Seller — Create a Payment Link (a2a-pay create
)
a2a-pay create卖方——创建支付链接(a2a-pay create
)
a2a-pay createInputs:
- Required: (decimal token amount, e.g.
--amount),"0.01"(e.g.--symbol),"USDT"(0x... EVM address — seller wallet)--recipient - Optional: ,
--description,--realm(seconds, default 1800)--expires-in
Steps:
-
Run pre-flight (see above) — the CLI requires a live session.
-
Shell out:bash
onchainos payment a2a-pay create \ --amount <amount> --symbol <symbol> --recipient <recipient> \ [--description <text> --realm <domain> --expires-in <seconds>] -
Parse the response — onlyand
payment_id(optional) are present. The CLI no longer returnsdeliveries.url/amount; the skill echoes the seller's input args back for display.currency -
Display to the user:Payment link created. • paymentId:• Amount:
<id>(decimal as you submitted) • Recipient:<amount input> <symbol input>• Share with buyer:<recipient input>(if returned by the server) or<deliveries.url>paymentId=<id> -
Suggest next: poll status anytime withonce the buyer is expected to have paid.
onchainos payment a2a-pay status --payment-id <id>
输入:
- 必填:(代币小数金额,例如
--amount)、"0.01"(例如--symbol)、"USDT"(0x...格式的EVM地址——卖方钱包)--recipient - 可选:、
--description、--realm(秒数,默认1800)--expires-in
步骤:
-
执行预检查(见上文)——CLI需要有效会话。
-
执行Shell命令:bash
onchainos payment a2a-pay create \ --amount <amount> --symbol <symbol> --recipient <recipient> \ [--description <text> --realm <domain> --expires-in <seconds>] -
解析响应——仅返回和可选的
payment_id。CLI不再返回deliveries.url/amount;技能会回显卖方输入的参数用于展示。currency -
向用户展示:支付链接已创建。 • paymentId:• 金额:
<id>(与您提交的小数格式一致) • 收款方:<amount input> <symbol input>• 分享给买方:<recipient input>(若服务器返回)或<deliveries.url>paymentId=<id> -
后续建议:当预计买方已完成支付后,可随时通过查询状态。
onchainos payment a2a-pay status --payment-id <id>
Buyer — Pay a Payment Link (a2a-pay pay
)
a2a-pay pay买方——支付链接(a2a-pay pay
)
a2a-pay payRequired input: only. The CLI fetches the seller-issued challenge from the server and signs whatever amount / currency / recipient the challenge declares.
paymentIdTrust model: the buyer signs the seller's challenge as-is. Verifying that the challenge matches what the buyer agreed to pay is the upstream caller's responsibility: the user (or the upstream skill) MUST cross-check the seller's/paymentIdagainst their out-of-band agreement (chat, task spec, prior negotiation) before calling this skill. Once the skill is invoked, it will sign the on-server challenge.deliveries.url
必填输入:仅。CLI会从服务器获取卖方发起的挑战内容,并对挑战中声明的金额/币种/收款方进行签名。
paymentId信任模型:买方直接对卖方的挑战内容进行签名。验证挑战内容是否与买方约定的支付内容一致是上游调用方的责任:用户(或上游技能)必须在调用本技能之前,将卖方提供的/paymentId与线下约定(聊天、任务说明、前期协商)进行交叉核对。一旦调用本技能,它将对服务器端的挑战内容进行签名。deliveries.url
Step 1 — Sign and Submit
步骤1——签名并提交
The skill does not run its own preview / yes-no gate; trust is delegated to the upstream caller (see the trust-model note above). Shell out directly:
bash
onchainos payment a2a-pay pay --payment-id <paymentId>The CLI fetches the on-server challenge, TEE-signs the EIP-3009 authorization, and submits the credential. The successful response shape:
json
{
"payment_id": "a2a_xxx",
"status": "<status>",
"tx_hash": "<hash or null>",
"valid_after": 0,
"valid_before": 1746000000,
"signature": "0x..."
}本技能不执行预览/确认环节;信任委托给上游调用方(见上述信任模型说明)。直接执行Shell命令:
bash
onchainos payment a2a-pay pay --payment-id <paymentId>CLI会获取服务器端的挑战内容,对EIP-3009授权进行TEE签名,并提交凭证。成功响应格式如下:
json
{
"payment_id": "a2a_xxx",
"status": "<status>",
"tx_hash": "<hash or null>",
"valid_after": 0,
"valid_before": 1746000000,
"signature": "0x..."
}Step 2 — Auto-poll Status to Terminal
步骤2——自动轮询状态至终态
Status classification:
- Non-terminal (poll): ,
pendingsettling - Terminal (stop): ,
completed,failed,expiredcancelled
If is already terminal → render the result (see table below) and stop.
statusIf non-terminal → poll every 3 seconds, up to a 60-second total budget:
bash
onchainos payment a2a-pay status --payment-id <paymentId>- As soon as a terminal status is observed → render full result (status + tx_hash + block_number) and stop.
- If 60 seconds elapse and the status is still non-terminal → return the current plus the paymentId, and tell the user: "Status is still
statusafter 60s; you can run<status>again later."status
Terminal display strings:
| status | Display |
|---|---|
| "✅ Payment confirmed on-chain. tx_hash: |
| "❌ Payment failed. (include the server-provided reason if any)" |
| "⌛ Payment link expired before settlement. Ask the seller for a new one." |
| "🚫 Seller cancelled this payment." |
状态分类:
- 非终态(需轮询):、
pendingsettling - 终态(停止轮询):、
completed、failed、expiredcancelled
如果已为终态→展示结果(见下表)并停止。
status如果为非终态→每3秒轮询一次,总时长不超过60秒:
bash
onchainos payment a2a-pay status --payment-id <paymentId>- 一旦观测到终态→展示完整结果(状态+tx_hash+block_number)并停止。
- 若60秒后仍为非终态→返回当前及paymentId,并告知用户:“60秒后状态仍为
status;您可稍后再次运行<status>查询。”status
终态展示文案:
| 状态 | 展示内容 |
|---|---|
| "✅ 支付已上链确认。tx_hash: |
| "❌ 支付失败。(若服务器提供原因则包含该原因)" |
| "⌛ 支付链接在结算前已过期。请联系卖方获取新链接。" |
| "🚫 卖方已取消该支付。" |
Status — Query Payment State (a2a-pay status
)
a2a-pay status状态——查询支付状态(a2a-pay status
)
a2a-pay statusInput: .
paymentIdSteps:
-
Run:bash
onchainos payment a2a-pay status --payment-id <paymentId> -
Map the returnedto a human-readable line:
statusstatus Meaning Display pendingAwaiting buyer signature "⏳ Awaiting buyer signature." settlingCredential received, settling on-chain "🔄 Settling on-chain (credential submitted, awaiting confirmation)." completedConfirmed on-chain "✅ Confirmed on-chain. tx_hash: block:<tx_hash>fee:<block_number>"<fee_decimal> <fee_symbol>failedPayment failed "❌ Failed. (include the server-provided reason if any)" expiredExpired before settlement "⌛ Expired before settlement." cancelledSeller cancelled "🚫 Cancelled by seller." -
Rendering the fee. The CLI returnsas a top-level string in minimal units (and
fee_amountas the basis-points used). To computefee_bps, look up the token decimals in the table under "Amount Display Rules". For<fee_decimal>, reuse the<fee_symbol>the seller passed to--symbolfor the samecreate— the upstream caller (or the seller flow that issued the link) is the source of truth for the token symbol; thepaymentIdresponse itself does not echo it back. If neither is available, displaystatusminimal units as-is.fee_amount -
Suggest next:
- /
pending→ "Check again in a few moments" or wait briefly and re-runsettling.status - → recommend
completedto verify the buyer's post-payment balance delta.okx-agentic-wallet - → recommend checking buyer balance via
failed, and ifokx-agentic-walletis present, inspect it viatx_hash.okx-security tx-scan
输入:。
paymentId步骤:
-
执行命令:bash
onchainos payment a2a-pay status --payment-id <paymentId> -
将返回的映射为易读文案:
status状态 含义 展示内容 pending等待买方签名 "⏳ 等待买方签名。" settling已收到凭证,正在链上结算 "🔄 正在链上结算(凭证已提交,等待确认)。" completed已上链确认 "✅ 已上链确认。tx_hash: 区块:<tx_hash>手续费:<block_number>"<fee_decimal> <fee_symbol>failed支付失败 "❌ 支付失败。(若服务器提供原因则包含该原因)" expired结算前已过期 "⌛ 结算前已过期。" cancelled卖方已取消 "🚫 卖方已取消。" -
手续费展示。CLI返回的为顶层字符串,以最小单位表示(
fee_amount为使用的基点)。计算fee_bps时,请参考“金额展示规则”表格中的代币小数位数。<fee_decimal>复用卖方创建该<fee_symbol>时传入的paymentId——上游调用方(或发起链接的卖方流程)是代币符号的可信来源;--symbol响应本身不会回显该符号。若无法获取,则直接展示status的最小单位。fee_amount -
后续建议:
- /
pending→ "请稍后再次查询"或短暂等待后重新运行settling。status - → 推荐使用
completed验证买方支付后的余额变化。okx-agentic-wallet - → 推荐通过
failed检查买方余额;若存在okx-agentic-wallet,可通过tx_hash查看详情。okx-security tx-scan
Cross-Skill Workflows
跨技能工作流
Workflow A — Sub-skill called from an upstream agent flow (most common)
工作流A——被上游Agent流程调用的子技能(最常见)
Applicable upstream callers: any agent-to-agent task / chat / agent flow that holds the seller-issued payment information.
Contract — upstream MUST hand off (skill stops and asks the user if missing). Upstream is also responsible for confirming, before invoking this skill, that the matches the buyer's agreed terms — once invoked, the skill signs whatever the on-server challenge declares.
paymentIdpaymentId1. <upstream caller> verifies paymentId matches the buyer's agreed terms → hands off paymentId
↓
2. okx-a2a-payment (this skill) onchainos payment a2a-pay pay → auto-poll status → display terminal state
↓
3. okx-agentic-wallet optional: onchainos wallet balance to see post-payment delta适用上游调用方:任何持有卖方支付信息的Agent-to-Agent任务/聊天/Agent流程。
约定——上游必须传递(若缺失,技能将停止并询问用户)。上游还需在调用本技能之前确认与买方约定的条款一致——一旦调用,技能将对服务器端的挑战内容进行签名。
paymentIdpaymentId1. <上游调用方> 验证paymentId与买方约定条款一致 → 传递paymentId
↓
2. okx-a2a-payment(本技能) 执行onchainos payment a2a-pay pay → 自动轮询状态 → 展示终态
↓
3. okx-agentic-wallet 可选:执行onchainos wallet balance查看支付后的余额变化Workflow B — Seller manually creates a payment link
工作流B——卖方手动创建支付链接
1. okx-a2a-payment create → paymentId + deliveries.url
2. Seller shares paymentId (and optionally deliveries.url) with the buyer out-of-band (chat / QR / message)
3. Buyer cross-checks the paymentId / deliveries.url against the seller's quoted terms, then runs Workflow A starting from step 2 with the received paymentId1. okx-a2a-payment create → 返回paymentId + deliveries.url
2. 卖方向买方线下分享paymentId(可选deliveries.url)(聊天/QR码/消息)
3. 买方核对paymentId/deliveries.url与卖方报价一致后,从工作流A的步骤2开始,使用收到的paymentId执行操作Workflow C — Payment failure triage
工作流C——支付失败排查
1. okx-a2a-payment status → expired / failed / cancelled
2. Branch on terminal state:
- expired → ask seller to create a new link
- failed → check buyer balance via okx-agentic-wallet; inspect tx_hash via okx-security tx-scan if present
- cancelled → contact seller out-of-band1. okx-a2a-payment status → 返回expired/failed/cancelled
2. 根据终态分支处理:
- expired → 请卖方创建新链接
- failed → 通过okx-agentic-wallet检查买方余额;若存在tx_hash,通过okx-security tx-scan查看详情
- cancelled → 线下联系卖方Upstream Routing — Avoiding create
Loops
create上游路由——避免create
循环
createThis skill is stateless per call and has no view of the conversation. If the upstream seller agent routes by surface keywords alone (e.g. matches / / and always calls ), it will loop:
付款paypaymentcreatebuyer: "I want to pay" → seller create → returns paymentId_A
buyer pays via this skill, then sends:
buyer: "payment successful" → seller matches "payment" → create AGAIN → paymentId_B (wrong)The skill cannot break this loop — the fix lives in the upstream caller's intent router. When you wire this skill into a seller-side agent, enforce the following before calling :
create-
Detect existing paymentId in the incoming message. If the buyer's message contains anid (or a
a2a_...you previously issued), route todeliveries.urlfor that id. Do NOT callokx-a2a-payment status.create -
Disambiguate intent beyond keywords. Map upstream intents to commands:
Buyer says Intent Route to "I want to pay" / "请付款" / "怎么付" / "give me a link" request-invoice create"paid" / "payment successful" / "已付" / "已转账" / contains a paymentId or tx hash payment-receipt (or no-op if already terminal)status"cancel" / "refund" cancel/refund out of scope for this skill Plain keyword matching on/付款/payis not enough — both request-invoice and payment-receipt utterances contain those tokens.payment -
Track per-conversation order state upstream. Onceissues a paymentId for a given (buyer, order) context, the upstream agent must remember that paymentId in its own conversation / order state and mark the order as "awaiting payment". Subsequent buyer messages in that context default to
createagainst the remembered paymentId until either the payment reaches a terminal state or the user explicitly asks for a new order.status -
Idempotency on. Before issuing a new
create, the upstream agent must check its own state: if a non-terminal paymentId already exists for the same buyer / order context, reuse it instead of creating a new one.create
This guidance is advisory for upstream agent authors — this skill itself will still execute whichever command you call. Routing correctness is the upstream caller's job.
本技能每次调用都是无状态的,无法查看对话上下文。如果上游卖方Agent仅通过表面关键词路由(例如匹配//就调用),会出现循环:
付款paypaymentcreate买方: "I want to pay" → 卖方调用create → 返回paymentId_A
买方通过本技能完成支付后发送:
买方: "payment successful" → 卖方匹配到"payment" → 再次调用create → 返回paymentId_B(错误)本技能无法打破该循环——修复需在调用方的意图路由中实现。将本技能接入卖方Agent时,调用前需执行以下检查:
create-
检测消息中是否存在已有的paymentId。如果买方消息包含格式的ID(或您之前发送的
a2a_...),路由至deliveries.url查询该ID的状态。请勿调用okx-a2a-payment status。create -
除关键词外,明确区分意图。将上游意图映射至命令:
买方表述 意图 路由至 "I want to pay" / "请付款" / "怎么付" / "give me a link" 请求账单 create"paid" / "payment successful" / "已付" / "已转账" / 包含paymentId或交易哈希 支付回执 (若已为终态则无需操作)status"cancel" / "refund" 取消/退款 超出本技能范围 仅匹配/付款/pay等关键词是不够的——请求账单和支付回执的表述中都可能包含这些词汇。payment -
在上下游跟踪对话订单状态。一旦为特定(买方,订单)上下文生成paymentId,上游Agent必须在自身对话/订单状态中记录该paymentId,并将订单标记为“等待支付”。该上下文后续的买方消息默认使用记录的paymentId查询
create,直到支付进入终态或用户明确要求新订单。status -
操作的幂等性。在发起新的
create之前,上游Agent需检查自身状态:如果同一买方/订单上下文已存在非终态的paymentId,应复用该ID而非创建新的。create
以上是对上游Agent开发者的建议——本技能仍会执行您调用的任何命令。路由正确性由上游调用方负责。
Amount Display Rules
金额展示规则
When converting (or ) from minimal units to a decimal display, use the hardcoded decimals table:
amountfee_amount| Token | Decimals | "1000000" minimal renders as |
|---|---|---|
| USDC | 6 | 1.00 USDC |
| USDT | 6 | 1.00 USDT |
| USDG | 6 | 1.00 USDG |
| ETH | 18 | ( |
For any symbol not in the table: render and append the warning . Do not block the flow.
<minimal> <symbol>unknown decimals — please double-check the seller-provided amount将(或)从最小单位转换为小数展示时,请使用以下硬编码的小数位数表:
amountfee_amount| 代币 | 小数位数 | "1000000"最小单位展示为 |
|---|---|---|
| USDC | 6 | 1.00 USDC |
| USDT | 6 | 1.00 USDT |
| USDG | 6 | 1.00 USDG |
| ETH | 18 | ( |
对于表格中未列出的代币:展示并附加提示。请勿阻塞流程。
<minimal> <symbol>未知小数位数——请仔细核对卖方提供的金额Edge Cases
边缘场景
| Scenario | Handling |
|---|---|
| Prompt the user to run |
User provides no | STOP and ask the user for the seller-issued paymentId. |
CLI reports | Relay the error verbatim and surface it as a terminal failure — do NOT retry signing. |
| Relay the error and ask the user to confirm the paymentId with the seller or upstream caller. |
| Return the current status (verbatim) + paymentId; tell the user |
| Server returns a 5xx | Surface the status code and any |
| Apply the unknown-decimals fallback (see Amount Display Rules). Do not block. |
| |
| 场景 | 处理方式 |
|---|---|
| 提示用户执行 |
用户未提供 | 停止操作并询问用户获取卖方提供的paymentId。 |
CLI返回 | 直接转发错误信息并标记为终态失败——请勿重试签名。 |
| 转发错误信息并请用户与卖方或上游调用方确认paymentId。 |
| 返回当前状态(原样)+paymentId;告知用户 |
| 服务器返回5xx错误 | 展示状态码及 |
| 应用未知小数位数的 fallback(见金额展示规则)。请勿阻塞流程。 |
| |
Command Index
命令索引
| # | Command | Role | Purpose |
|---|---|---|---|
| 1 | | Seller | Create a payment link, returns paymentId + deliveries |
| 2 | | Buyer | Fetch challenge → TEE-sign EIP-3009 → submit credential |
| 3 | | Either | Query current status (pending / settling / completed / failed / expired / cancelled) |
| # | 命令 | 角色 | 用途 |
|---|---|---|---|
| 1 | | 卖方 | 创建支付链接,返回paymentId + delivery信息 |
| 2 | | 买方 | 获取挑战内容→TEE签名EIP-3009→提交凭证 |
| 3 | | 任意角色 | 查询当前状态(pending/settling/completed/failed/expired/cancelled) |
CLI Command Reference
CLI命令参考
1. onchainos payment a2a-pay create
onchainos payment a2a-pay create1. onchainos payment a2a-pay create
onchainos payment a2a-pay createbash
onchainos payment a2a-pay create \
--amount <decimal> --symbol <symbol> --recipient <address> \
[--description <text>] [--realm <domain>] [--expires-in <seconds>]| Param | Required | Default | Description |
|---|---|---|---|
| Yes | - | Decimal token amount (e.g. |
| Yes | - | ERC-20 token symbol (e.g. |
| Yes | - | Seller wallet address (= EIP-3009 |
| No | - | Human-readable description shown to the buyer |
| No | - | Seller / provider domain (e.g. |
| No | 1800 | Payment-link expiration window in seconds |
Return fields: , (object containing when issued by the server).
payment_iddeliveriesurlbash
onchainos payment a2a-pay create \
--amount <decimal> --symbol <symbol> --recipient <address> \
[--description <text>] [--realm <domain>] [--expires-in <seconds>]| 参数 | 必填 | 默认值 | 描述 |
|---|---|---|---|
| 是 | - | 代币小数金额(例如 |
| 是 | - | ERC-20代币符号(例如 |
| 是 | - | 卖方钱包地址(=EIP-3009中的 |
| 否 | - | 展示给买方的可读描述 |
| 否 | - | 卖方/服务商域名(例如 |
| 否 | 1800 | 支付链接过期时间窗口(秒) |
返回字段:、(包含服务器返回的的对象)。
payment_iddeliveriesurl2. onchainos payment a2a-pay pay
onchainos payment a2a-pay pay2. onchainos payment a2a-pay pay
onchainos payment a2a-pay paybash
onchainos payment a2a-pay pay --payment-id <id>| Param | Required | Default | Description |
|---|---|---|---|
| Yes | - | Seller-issued paymentId |
Return fields: , , (optional), , , .
payment_idstatustx_hashvalid_aftervalid_beforesignaturebash
onchainos payment a2a-pay pay --payment-id <id>| 参数 | 必填 | 默认值 | 描述 |
|---|---|---|---|
| 是 | - | 卖方提供的paymentId |
返回字段:、、(可选)、、、。
payment_idstatustx_hashvalid_aftervalid_beforesignature3. onchainos payment a2a-pay status
onchainos payment a2a-pay status3. onchainos payment a2a-pay status
onchainos payment a2a-pay statusbash
onchainos payment a2a-pay status --payment-id <id>| Param | Required | Default | Description |
|---|---|---|---|
| Yes | - | The paymentId to query |
Return fields: , , (optional), (optional), (optional), (optional, minimal units), (optional).
payment_idstatustx_hashblock_numberblock_timestampfee_amountfee_bpsbash
onchainos payment a2a-pay status --payment-id <id>| 参数 | 必填 | 默认值 | 描述 |
|---|---|---|---|
| 是 | - | 要查询的paymentId |
返回字段:、、(可选)、(可选)、(可选)、(可选,最小单位)、(可选)。
payment_idstatustx_hashblock_numberblock_timestampfee_amountfee_bpsQuickstart
快速开始
bash
undefinedbash
undefinedSeller — create a payment link
卖方——创建支付链接
onchainos payment a2a-pay create
--amount 0.01 --symbol USDT
--recipient 0xSellerWalletAddress
--amount 0.01 --symbol USDT
--recipient 0xSellerWalletAddress
onchainos payment a2a-pay create
--amount 0.01 --symbol USDT
--recipient 0xSellerWalletAddress
--amount 0.01 --symbol USDT
--recipient 0xSellerWalletAddress
→ { "payment_id": "a2a_xxx", "deliveries": { "url": "..." } }
→ { "payment_id": "a2a_xxx", "deliveries": { "url": "..." } }
Buyer — pay (signs the on-server challenge as-is; trust delegated to upstream)
买方——支付(直接对服务器端挑战内容签名;信任委托给上游)
onchainos payment a2a-pay pay --payment-id a2a_xxx
onchainos payment a2a-pay pay --payment-id a2a_xxx
Either side — query status (skill auto-polls this for ~60s after pay if non-terminal)
任意角色——查询状态(支付后若为非终态,技能会自动轮询约60秒)
onchainos payment a2a-pay status --payment-id a2a_xxx
undefinedonchainos payment a2a-pay status --payment-id a2a_xxx
undefined