agent-1yuan-purchase-skill/SKILL.md
2026-06-25 03:37:08 +08:00

136 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 是否已安装)
**检查命令:**
```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 '<trade_no>' -r '<resource_url>' -m POST` 每 5 秒轮询一次,最多等待 3 分钟。若返回 `success=true`,进入 Step 5。
### Step 5验证与交付
1. **构造 Payment-Proof**
```python
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)
```
2. **验证并获取交付物**:调用 `verifyPayment``POST {STORE_BASE_URL}/api/orders/{orderNo}/verify`),将生成的 base64 字符串作为 `Payment-Proof` 请求头传入。接口验证成功后,将返回包含网盘交付物信息的 `downloadUrl`(以及可能包含的提取码)。
3. **履约回执**
```bash
alipay-bot 402-buyer-fulfillment-ack -t '<trade_no>'
```
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` | 常见问题与解决方案 |