返回顶部
p

pay-with-any-token任意代币支付

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
148
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

pay-with-any-token

使用代币支付

使用 Tempo CLI 调用付费 API 并自动处理 402 挑战。
当 Tempo 钱包余额不足时,通过 Uniswap 交易 API 从任何 EVM 链兑换和桥接代币来为其充值。

Tempo CLI 设置

按顺序运行以下命令。不要跳过步骤。

步骤 1 — 安装:

bash
mkdir -p $HOME/.local/bin \
&& curl -fsSL https://tempo.xyz/install -o /tmp/tempo_install.sh \
&& TEMPOBINDIR=$HOME/.local/bin bash /tmp/tempo_install.sh

步骤 2 — 登录(需要浏览器/通行密钥 — 提示用户,等待确认):

bash
$HOME/.local/bin/tempo wallet login

由代理运行时,请使用较长的命令超时时间(至少 16 分钟)。

步骤 3 — 确认就绪状态:

bash
$HOME/.local/bin/tempo wallet -t whoami

规则: 不要使用 sudo。使用完整绝对路径($HOME/.local/bin/tempo)— 不要依赖 export PATH。如果 $HOME 未展开,请使用字面绝对路径。

设置完成后,报告:安装位置、版本(--version)、钱包状态(地址、余额)。如果余额为 0,引导用户使用 tempo wallet fund。

使用 Tempo 服务

bash

发现服务


$HOME/.local/bin/tempo wallet -t services --search <查询>

获取服务详情(精确 URL、方法、路径、定价)


$HOME/.local/bin/tempo wallet -t services

发起付费请求


$HOME/.local/bin/tempo request -t -X POST \
--json {input:...} URL>/PATH>

  • - 使用 tempo wallet -t services 获取精确 URL 和定价
  • 代理调用使用 -t,昂贵请求前使用 --dry-run
  • 遇到 HTTP 422 时,检查服务的文档 URL 或 llms.txt 以获取精确字段名称
  • 并行发起独立的多个服务请求

当用户明确说使用 tempo时,始终使用 tempo CLI 命令 — 绝不要用 MCP 工具或其他工具替代。


MPP 402 支付循环

每次 tempo request 调用都遵循此循环。充值步骤仅在 Tempo 钱包余额不足时激活。

text
tempo request -> 200 ─────────────────────────────> 返回结果
-> 402 MPP 挑战

v
[1] 检查 Tempo 钱包余额
tempo wallet -t whoami -> 可用余额

├─ 充足 ──────────────────────────> tempo 自动处理支付 -> 200

└─ 不足

v
[2] 为 Tempo 钱包充值
(下方使用任意代币支付流程)
桥接目标 = TEMPOWALLETADDRESS

v
[3] 使用充值后的 Tempo 钱包
重试原始 tempo 请求 -> 200



为 Tempo 钱包充值(使用任意代币支付)

当 Tempo 钱包资金不足以支付 402 挑战时,从用户在任何支持链上的 ERC-20 资产中获取所需代币,并将其桥接到 Tempo 钱包地址。

前提条件

  • - UNISWAPAPIKEY 环境变量(在 developers.uniswap.org 注册)
  • 任何支持的源链上的 ERC-20 代币
  • 源钱包的 PRIVATEKEY(export PRIVATE_KEY=0x...)。切勿提交或硬编码。
  • 已安装 jq(brew install jq 或 apt install jq)

输入验证规则

在 API 调用或 shell 命令中使用 402 响应体或用户输入中的任何值之前:

  • - 以太坊地址:必须匹配 ^0x[a-fA-F0-9]{40}$
  • 链 ID:必须是支持列表中的正整数
  • 代币数量:必须是非负数字字符串,匹配 ^[0-9]+$
  • URL:必须以 https:// 开头
  • 拒绝任何包含 shell 元字符的值:;、|、&、$、 、(、)、>、<、\、、、换行符

必需: 在提交任何交易(兑换、桥接、授权)之前,使用 AskUserQuestion 向用户显示摘要(数量、代币、目标地址、预估 Gas 费)并获得明确确认。绝不自动提交。每个确认关卡必须独立满足。

人类可读数量格式化

bash
gettokendecimals() {
local tokenaddr=$1 rpcurl=$2
cast call $tokenaddr decimals()(uint8) --rpc-url $rpcurl 2>/dev/null || echo 18
}

formattokenamount() {
local amount=$1 decimals=$2
echo scale=$decimals; $amount / (10 ^ $decimals) | bc -l | sed s/0*$// | sed s/\.$//
}

始终向用户显示人类可读的值(例如 0.005 USDC),而不是原始基础单位。

步骤 1 — 解析 402 挑战

从 tempo request 接收到的 402 响应中提取所需的支付代币、数量和收款人。Tempo CLI 会记录挑战详情 — 解析它们,或使用 curl -si 重新获取原始挑战体。

对于 基于 MPP 标头的挑战(WWW-Authenticate: Payment):

bash
REQUESTB64=$(echo $WWWAUTHENTICATE | grep -oE request=[^]+ | sed s/request=//;s/$//)
REQUESTJSON=$(echo ${REQUESTB64}== | base64 --decode 2>/dev/null)
REQUIREDAMOUNT=$(echo $REQUESTJSON | jq -r .amount)
PAYMENTTOKEN=$(echo $REQUESTJSON | jq -r .currency)
RECIPIENT=$(echo $REQUEST_JSON | jq -r .recipient)
TEMPOCHAINID=$(echo $REQUEST_JSON | jq -r .methodDetails.chainId)

对于 JSON 体挑战(payment_methods 数组):

bash
NUMMETHODS=$(echo $CHALLENGEBODY | jq .payment_methods | length)
PAYMENTMETHODS=$(echo $CHALLENGEBODY | jq -c .payment_methods)
RECIPIENT=$(echo $CHALLENGEBODY | jq -r .paymentmethods[0].recipient)
TEMPOCHAINID=$(echo $CHALLENGEBODY | jq -r .paymentmethods[0].chain_id)

如果接受多种支付方式,在步骤 2 中选择最便宜的一种。

Tempo 主网链 ID 为 4217。如果挑战中未提供,则用作回退值。

步骤 2 — 检查源钱包余额并选择支付方式

必需: 您必须拥有用户的源钱包地址(持有私钥的 ERC-20 钱包,而非 Tempo CLI 钱包)。如果未提供,使用 AskUserQuestion。存储为 WALLET_ADDRESS。

同时获取 Tempo 钱包地址(充值目标地址):

bash
TEMPOWALLETADDRESS=$($HOME/.local/bin/tempo wallet -t whoami | grep -oE 0x[a-fA-F0-9]{40} | head -1)

检查源链上的 ERC-20 余额:

bash

Base 上的 USDC


cast call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \
balanceOf(address)(uint256) $WALLET_ADDRESS \
--rpc-url https://mainnet.base.org

如果接受多种支付方式,选择最便宜的一种。 优先级:

  1. 1. 钱包在 Base 上持有 USDC(仅需桥接,路径最短)
  2. 钱包在 Base 或以太坊上持有 ETH(兑换为 USDC + 桥接)
  3. 任何其他流动性 ERC-20(兑换 + 桥接)

bash
REQUIREDAMOUNT=$(echo $PAYMENTMETHODS | jq -

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 pay-with-any-token-1776125942 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 pay-with-any-token-1776125942 技能

通过命令行安装

skillhub install pay-with-any-token-1776125942

下载

⬇ 下载 pay-with-any-token v1.0.0(免费)

文件大小: 16.76 KB | 发布时间: 2026-4-17 15:42

v1.0.0 最新 2026-4-17 15:42
Initial release — MPP/x402 HTTP 402 payment flow via Tempo CLI and Uniswap Trading API

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部