5.9 KiB
5.9 KiB
AI 软件购买 Skill
一站式AI驱动的软件购买体验:环境检查 → 发现商品 → 下单 → 自动支付 → 获取网盘交付链接。
触发词
"帮我买xxx"、"购买xxx"、"下载xxx"、"逛商城"、"看看有什么软件"
环境变量与配置
- STORE_BASE_URL:
https://store.bushrose.cn(注:投产时仅需修改此处这一处地址即可) - 所有的 OpenAPI 接口调用及页面访问请以
STORE_BASE_URL作为基础地址。
执行流程总览
用户发起购买请求
↓
Step 0:前置检查(alipay-bot 是否已安装)
├─ 已安装 → 进入 Step 1
└─ 未安装 → 引导安装 alipay-bot → 进入 Step 1
↓
Step 1:环境检查(check-wallet)
├─ 已授权 → 进入 Step 2
├─ 未授权/未开通 → 引导用户完成支付宝钱包绑定/授权 → 进入 Step 2
└─ 检查失败 → 提示网络问题,终止
↓
Step 2:产品发现与下单
├─ 调用 getSoftwareList 接口搜索商品
└─ 用户确认后,调用 createOrder 接口创建订单,获取 orderNo
↓
Step 3:获取支付参数
└─ 调用 getPaymentNeeded 接口,提取返回的 Payment-Needed 头信息并保存
↓
Step 4:发起支付与自动轮询
├─ 使用 alipay-bot 402-buyer-pay 提交支付
└─ 自动轮询 alipay-bot 402-query-payment-status 等待支付成功
↓
Step 5:验证与交付
├─ 支付成功后,提取交易号生成 Payment-Proof
├─ 调用 verifyPayment 接口验证并获取网盘交付链接
├─ 发送履约回执(alipay-bot 402-buyer-fulfillment-ack)
└─ 将网盘链接和提取码优雅地展示给用户
详细执行步骤
Step 0:前置检查(alipay-bot 是否已安装)
检查命令:
alipay-bot --version 2>&1
- 返回版本号(如
alipay-bot-cli 0.3.19)→ 已安装 → 进入 Step 1 - 返回
command not found或错误 → 未安装 → 请引导用户安装:"我当前未配置支付能力,无法完成付款。请安装并授权支付宝官方 npm 包:
npm install @alipay/agent-payment@1.0.12 && npx @alipay/agent-payment@1.0.12 install-cli,然后再重新尝试购买。"
Windows 环境注意:
alipay-bot可能安装在~/.openclaw-autoclaw/alipay-bot-cli/bin/alipay-bot.cmd- 如果
alipay-bot命令不可用,尝试使用完整路径
Step 1:环境检查
执行命令:
alipay-bot check-wallet
- 若 JSON 返回
code: 200且不包含"等待授权" → 已授权,进入 Step 2。 - 若提示"等待授权"或未开通 → 提示用户:"首次使用需要绑定支付宝钱包,请先调用相关技能完成钱包授权。" 等待用户授权完成后再继续。
Step 2:产品发现与下单
- 搜索商品:调用
getSoftwareList查询商品(GET {STORE_BASE_URL}/api/software)。向用户展示结果并确认购买意向。 - 创建订单:调用
createOrder(POST {STORE_BASE_URL}/api/orders),传入softwareId。接口返回成功后,提取orderNo。
Step 3:获取支付参数
- 获取参数:调用
getPaymentNeeded(POST {STORE_BASE_URL}/api/orders/{orderNo}/payment-needed)。 - 保存参数:此接口会返回 402 状态码,你需要提取响应中的
Payment-Needed头的 base64 字符串,并将其写入本地文件402_needed_file.txt中。
# 示例:从402响应中提取 Payment-Needed 头并保存
curl -s -D - -X POST "{STORE_BASE_URL}/api/orders/{orderNo}/payment-needed" \
-H "Accept: application/json" \
| grep -i "^Payment-Needed:" \
| sed "s/^[Pp]ayment-[Nn]eeded: //" \
| tr -d "\r\n" \
> 402_needed_file.txt
Step 4:发起支付与自动轮询
- 提交支付:
alipay-bot 402-buyer-pay \
--session-id "<你的会话ID>" \
-f "402_needed_file.txt" \
-r "{STORE_BASE_URL}/api/orders/{orderNo}/payment-needed" \
--intent-summary "原始请求:用户购买软件订单:{orderNo}" \
-m POST
注意:session-id 需为 UUID 格式。将 {STORE_BASE_URL} 和 {orderNo} 替换为实际值。若输出包含 ✓ 支付待确认 及二维码,请向用户展示二维码。
- 自动轮询等待支付:
使用
alipay-bot 402-query-payment-status -t '<trade_no>' -r '<resource_url>' -m POST每 5 秒轮询一次,最多等待 3 分钟。若返回success=true,进入 Step 5。
Step 5:验证与交付
- 构造 Payment-Proof:
import json, base64
proof = {
'protocol': {'payment_proof': 'verified', 'trade_no': '<trade_no>'},
'method': {'client_session': base64.b64encode(b'agent-session').decode()},
}
proof_b64 = base64.urlsafe_b64encode(json.dumps(proof).encode()).decode()
print(proof_b64)
- 验证并获取交付物:调用
verifyPayment(POST {STORE_BASE_URL}/api/orders/{orderNo}/verify),将生成的 base64 字符串作为Payment-Proof请求头传入。接口验证成功后,将返回包含网盘交付物信息的downloadUrl(以及可能包含的提取码)。 - 履约回执:
alipay-bot 402-buyer-fulfillment-ack -t '<trade_no>'
- 通知用户:告知用户支付成功,输出交易号,并直接将获取到的
downloadUrl(网盘链接)展示给用户,提醒用户注意下载次数与有效期限制。不需要在本地下载任何文件。
安全与约束
- 必须按顺序严格执行。
- 禁止伪造
trade_no或跳过轮询直接验证。 - 交付物是网盘链接,禁止尝试使用 curl 去下载该链接的内容。
- 如果中途遇到任何命令失败或接口返回报错,需原样告知用户并停止流程。
参考文件
| 文件 | 内容 |
|---|---|
references/openapi.yaml |
商城 API 接口定义(OpenAPI 3.1) |
references/cli-setup.md |
alipay-bot 安装与完整性校验 |
references/payment-flow.md |
支付+轮询+交付详细流程 |
references/troubleshooting.md |
常见问题与解决方案 |