# AI 软件购买 Skill 一站式AI驱动的软件购买体验:环境检查 → 发现商品 → 下单 → 自动支付 → 获取网盘交付链接。 ## 触发词 "帮我买xxx"、"购买xxx"、"下载xxx"、"逛商城"、"看看有什么软件" ## 环境变量与配置 - **STORE_BASE_URL**:`https://gzh.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 是否已安装) **检查命令:** ```bash 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:环境检查 **执行命令:** ```bash alipay-bot check-wallet ``` - 若 JSON 返回 `code: 200` 且不包含"等待授权" → 已授权,进入 Step 2。 - 若提示"等待授权"或未开通 → 提示用户:"首次使用需要绑定支付宝钱包,请先调用相关技能完成钱包授权。" 等待用户授权完成后再继续。 ### Step 2:产品发现与下单 1. **搜索商品**:调用 `getSoftwareList` 查询商品(`GET {STORE_BASE_URL}/api/software`)。向用户展示结果并确认购买意向。 2. **创建订单**:调用 `createOrder`(`POST {STORE_BASE_URL}/api/orders`),传入 `softwareId`。接口返回成功后,提取 `orderNo`。 ### Step 3:获取支付参数 1. **获取参数**:调用 `getPaymentNeeded`(`POST {STORE_BASE_URL}/api/orders/{orderNo}/payment-needed`)。 2. **保存参数**:此接口会返回 402 状态码,你需要提取响应中的 `Payment-Needed` 头的 base64 字符串,并将其写入本地文件 `402_needed_file.txt` 中。 ```bash # 示例:从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:发起支付与自动轮询 1. **提交支付**: ```bash 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}` 替换为实际值。若输出包含 `✓ 支付待确认` 及二维码,请向用户展示二维码。* 2. **自动轮询等待支付**: 使用 `alipay-bot 402-query-payment-status -t '' -r '' -m POST` 每 5 秒轮询一次,最多等待 3 分钟。若返回 `success=true`,进入 Step 5。 ### Step 5:验证与交付 1. **构造 Payment-Proof**: ```python import json, base64 proof = { 'protocol': {'payment_proof': 'verified', 'trade_no': ''}, 'method': {'client_session': base64.b64encode(b'agent-session').decode()}, } proof_b64 = base64.urlsafe_b64encode(json.dumps(proof).encode()).decode() print(proof_b64) ``` 2. **验证并获取交付物**:调用 `verifyPayment`(`POST {STORE_BASE_URL}/api/orders/{orderNo}/verify`),将生成的 base64 字符串作为 `Payment-Proof` 请求头传入。接口验证成功后,将返回包含网盘交付物信息的 `downloadUrl`(以及可能包含的提取码)。 3. **履约回执**: ```bash alipay-bot 402-buyer-fulfillment-ack -t '' ``` 4. **通知用户**:告知用户支付成功,输出交易号,并**直接将获取到的 `downloadUrl`(网盘链接)展示给用户,提醒用户注意下载次数与有效期限制**。不需要在本地下载任何文件。 ## 安全与约束 1. 必须按顺序严格执行。 2. 禁止伪造 `trade_no` 或跳过轮询直接验证。 3. 交付物是网盘链接,**禁止尝试使用 curl 去下载该链接的内容**。 4. 如果中途遇到任何命令失败或接口返回报错,需原样告知用户并停止流程。 --- ## 参考文件 | 文件 | 内容 | |------|------| | `references/openapi.yaml` | 商城 API 接口定义(OpenAPI 3.1) | | `references/cli-setup.md` | alipay-bot 安装与完整性校验 | | `references/payment-flow.md` | 支付+轮询+交付详细流程 | | `references/troubleshooting.md` | 常见问题与解决方案 |