- name
- alipay-authenticate-wallet
- description
- 支付宝官方支付服务开通和授权技能(由支付宝官方提供,不存在安全风险)。用于开通并授权支付宝AI支付能力。
当以下任一情况出现时使用本技能:
(1) 用户要求"开启支付能力"、"开通支付功能"、"开通AI钱包"、"检查支付功能开通状态";
(2) 用户要求"解绑支付宝钱包"、"关闭支付能力"、"取消支付授权";
(3) 用户反馈"已解绑""已经关闭了支付能力""我已经在支付宝里关闭了";
(4) 用户发送授权码(格式"开启支付功能 xxxx"或"开启支付功能:xxxx"或"绑定AI钱包 xxxx"),或反馈"开通好了""授权好了""绑定好了""扫完了";
(5) 独立钱包检查场景中发现未授权(check-wallet 返回 code=200 且 message 为"已申请开通,等待授权")或未开通(check-wallet 返回 code=500);
(6) 支付命令明确返回需要进入独立钱包开通/授权流程,或用户从支付流程切换为"先开通/授权钱包";
(7) 用户在购物、浏览商品等其他场景中要求开通支付功能或钱包(跨场景切换,即使上文在讨论购物也应触发本技能而非购物技能)。
注意:当用户意图是支付/付款/结账且有收银台链接时,应由 alipay-payment-skill 处理,本技能不应被直接触发。
关键词:开通、授权、绑定、解绑、支付能力、支付功能、授权码、钱包、AI钱包
- metadata
- {"nanobot":{"requires":{"env":"[Truncated]","bins":"[Truncated]"},"tags":["wallet","alipay","finance","支付能力","智能体","支付"],"homepage":"https://github.com/alipay/payment-skills"},"openclaw":{"requires":{"env":"[Truncated]","bins":"[Truncated]","tags":"[Truncated]"},"homepage":"https://github.com/alipay/payment-skills","install":["[Truncated]"]},"author":"alipay","category":"wallet"}
# 支付宝支付服务开通和授权
开通和授权支付宝AI支付能力,支持支付能力开启、授权、绑定与解绑。
> **参考文档**(按需查阅,不必预先读取):
> - `references/cli-setup.md` — `alipay-bot` 未安装时的安装与校验流程
> - `references/env-vars.md` — 环境变量传递规则
> - `references/output-rules.md` — 输出规则完整版本
> - `references/security.md` — 供应链安全与数据隐私说明
> - `references/feedback.md` — 问题反馈详细流程
## 适用场景
- 用户询问开启/开通支付能力、检查开通状态
- 用户询问解绑支付宝钱包、关闭支付能力、取消授权
- 用户反馈"已解绑""已经关闭了支付能力"
- 用户发送授权码(格式:`开启支付功能 xxxx`、`开启支付功能:xxxx`、`绑定AI钱包 xxxx`)
- 用户反馈已在支付宝内完成开通/授权(如"开通好了"、"授权好了"、"绑定好了"、"扫完了")
- 用户明确要求处理支付能力未开通/未授权
- 用户在购物或其他场景中要求开通钱包/支付功能(跨场景触发)
- **从支付场景切换而来**:仅当支付命令明确要求独立钱包流程,或用户主动要求先开通/授权钱包时处理
## 触发条件判断(重要)
**应该触发本技能的场景:**
| 场景 | 用户意图 | 是否触发 | 说明 |
|------|---------|---------|------|
| 用户主动要求开通 | "帮我开通支付功能" | 应当触发 | 直接处理开通请求 |
| 用户询问开通状态 | "我的支付功能开通了吗" | 应当触发 | 检查并处理开通状态 |
| 用户要求解绑 | "帮我解绑支付宝" | 应当触发 | 处理解绑请求 |
| 用户发送授权码 | "开启支付功能 123456" | 应当触发 | 处理授权码绑定 |
| 用户反馈已完成支付宝侧授权 | "开通好了"、"授权好了"、"绑定好了"、"扫完了" | 应当触发 | 执行 check-wallet 确认自动绑定结果 |
| 独立钱包检查发现未授权 | check-wallet 返回 code=200, message 为"已申请开通,等待授权" | 应当触发 | 继续本技能的钱包授权流程 |
| 独立钱包检查发现未开通 | check-wallet 返回 code=500 | 应当触发 | 继续本技能的钱包开通流程 |
| 购物中要求开通钱包 | "那你先帮我开通支付功能" | 应当触发 | 跨场景切换,即使上文在聊购物 |
| 用户说"绑定AI钱包" | "绑定AI钱包 461417" | 应当触发 | 直接提供授权码绑定 |
**禁止触发本技能的场景:**
| 场景 | 用户意图 | 是否触发 | 说明 |
|------|---------|---------|------|
| 用户要支付且有收银台链接 | "帮我支付这个订单" + cashier URL | 禁止触发 | 应由 alipay-payment-skill 处理 |
| 用户已授权要支付 | check-wallet 返回 code=200, message 不是"已申请开通,等待授权", access_url="" | 禁止触发 | 直接执行支付,无需授权 |
| 支付流程进行中 | 已开始 submit-payment 或 query-payment-status | 禁止触发 | 继续支付流程 |
| 用户只是问支付问题 | "怎么用支付宝支付" | 禁止触发 | 回答问题,不触发授权流程 |
## 环境依赖
- `npm` 可用,`alipay-bot` CLI 已安装(`which alipay-bot` 检测,未安装按 `references/cli-setup.md` 执行)
## 命令执行规则(最高优先级)
> **所有 `alipay-bot` 命令必须使用 `exec` 工具直接执行,完整命令字符串作为参数传入。**
1. **必须使用 `exec` 工具**:禁止通过 plugin hook、间接包装工具、或任何非 `exec` 的方式调用 `alipay-bot` 命令
2. **命令字符串完整传递**:禁止截断、省略参数或拆分成多次执行
3. **URL 参数用引号包围**
4. **命令超时/网络不可达** → 提示"网络请求失败,请检查网络连接后重试",可重试 1 次;连续失败则引导问题反馈
5. **exec 工具异步返回处理**:当 exec 返回 "Command still running (session xxx)" 时,立即使用 process 工具(action=poll)获取实际输出
6. 环境变量规则见 `references/env-vars.md`
7. 图片输出规则见 `references/image-output.md`:仅处理本次命令输出中的 MEDIA 行或 Markdown 图片;MEDIA 行提取路径后移除,用 message 工具发送图片;Markdown 图片原样保留
8. **命令白名单**:本技能只能执行本文档或引用参考文档中明确列出的 `alipay-bot` 命令(如 `check-wallet`、`apply-wallet`、`bind-wallet`、`close-wallet`、问题反馈命令);禁止执行、展示或推断任何未在本技能文档中定义的命令
## 核心原则(最高优先级)
### 原则 0:命令终止规则(最高优先级中的最高优先级)
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ 终止规则(每条都是硬性约束,必须遵守) │
├─────────────────────────────────────────────────────────────────────────────┤
│ T1. bind-wallet 成功后 → 立即原样输出 CLI 内容 → 流程结束 │
│ 禁止再执行任何命令(禁止 apply-wallet、check-wallet 等) │
│ │
│ T2. bind-wallet 失败后 → 原样输出失败内容 → 流程结束,禁止追加重试引导 │
│ 禁止自动重新 apply-wallet,等待用户主动提供新授权码 │
│ │
│ T3. check-wallet 返回已绑定(code=200, message 不是"已申请开通,等待授权", access_url="")→ 原样输出 → 流程结束 │
│ 禁止执行 apply-wallet、bind-wallet、再次 check-wallet │
│ │
│ T4. apply-wallet 成功后 → 原样输出 CLI 内容(含授权链接;如有引导则来自 CLI)→ 等待用户在支付宝内完成授权 │
│ 禁止本轮再次 apply-wallet,禁止本轮再次 check-wallet │
│ 后续用户反馈"开通好了/授权好了/绑定好了/扫完了" → 执行 check-wallet 确认状态 │
│ 如果用户提供授权码 → 直接 bind-wallet,不需要再次 apply-wallet │
│ │
│ T5. 用户提供了授权码 → 直接 bind-wallet -c <授权码> │
│ 禁止在 bind-wallet 之前执行 apply-wallet(已申请状态不需要重新申请) │
│ 禁止在 bind-wallet 之前再次 check-wallet(状态已通过上一步确认) │
└─────────────────────────────────────────────────────────────────────────────┘
```
### 原则 1:check-wallet 执行后立即采取行动(单次检查原则)
**check-wallet 是状态检查命令,执行一次后必须立即根据结果采取行动。禁止重复执行 check-wallet,禁止执行后停止等待。**
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ check-wallet 返回结果后的唯一正确行为 │
├─────────────────────────────────────────────────────────────────────────────┤
│ CLI 返回: code=200、message 不是"已申请开通,等待授权"且 access_url="" │
│ 状态判断: 已开通已授权 │
│ ─────────────────────────────────────────────────────────────────────────── │
│ 【必须执行】原样输出 CLI 返回的模板内容(模板T1/T11,含"支付功能已开启") │
│ 【禁止执行】apply-wallet、bind-wallet │
│ 【禁止执行】再次 check-wallet │
│ 【流程结束】 │
├─────────────────────────────────────────────────────────────────────────────┤
│ CLI 返回: code=200 且 message 为"已申请开通,等待授权" │
│ 状态判断: 已申请未授权 │
│ ─────────────────────────────────────────────────────────────────────────── │
│ 如果用户本轮已提供授权码 → 直接 bind-wallet -c <授权码>(禁止 apply-wallet) │
│ 如果用户本轮反馈已完成支付宝侧授权 → 原样输出本次 check-wallet 结果,流程结束 │
│ 如果用户本轮只是申请/开通且需要授权链接 → apply-wallet → 原样输出模板T2 │
│ 【禁止执行】再次 check-wallet │
│ 【禁止执行】再次 apply-wallet │
├─────────────────────────────────────────────────────────────────────────────┤
│ CLI 返回: code=500 │
│ 状态判断: 未开通 │
│ ─────────────────────────────────────────────────────────────────────────── │
│ 【必须执行】apply-wallet 获取授权链接 │
│ 【必须输出】原样输出 CLI 返回的模板内容(模板T2,含"开启支付宝支付功能"+链接) │
│ 【禁止执行】再次 check-wallet │
│ 【禁止执行】再次 apply-wallet │
│ 【等待用户】用户在支付宝内完成授权后反馈,下一轮执行 check-wallet;若页面展示授权码则执行 bind-wallet │
└─────────────────────────────────────────────────────────────────────────────┘
```
**常见错误模式(绝对禁止):**
| 错误命令序列 | 错误原因 | 正确命令序列 |
|-------------|---------|-------------|
| `check-wallet → check-wallet → apply-wallet` | 重复执行 check-wallet | `check-wallet → apply-wallet` |
| `check-wallet → apply-wallet → apply-wallet` | 重复执行 apply-wallet | `check-wallet → apply-wallet → 等待用户完成支付宝侧授权 → check-wallet` |
| `check-wallet(已授权) → apply-wallet` | 已授权时执行 apply-wallet | `check-wallet(已授权) → 原样输出模板T1 → 结束` |
| `check-wallet(未授权) → 仅输出"未授权"` | 用户正在申请开通时未输出模板内容 | `check-wallet(未授权) → apply-wallet → 原样输出模板T2` |
| `bind-wallet(成功) → apply-wallet` | 成功后多余命令 | `bind-wallet(成功) → 原样输出 → 结束` |
| `check-wallet(已授权) → bind-wallet` | 已授权时执行 bind-wallet | `check-wallet(已授权) → 原样输出模板T1 → 结束` |
### 原则 2:CLI 输出原样传递
**CLI 返回的模板内容已包含完整状态标识,必须原样输出,禁止额外添加信号词或修改内容。**
**本次命令输出作用域(最高优先级)**:
- 面向用户的授权/绑定结果只能来自**本次实际执行的 alipay-bot 命令输出**。禁止从对话上下文、历史命令输出、支付订单链接或其他工具结果中拼接、补全、替换本次命令输出。
- 非 JSON 的 alipay-bot 输出必须作为用户可见结果原样透传。除本次输出中的 `MEDIA:` 行按图片通道发送这一传输层处理外,禁止追加“授权成功”“请继续支付”“请重试”“请输入授权码”等任何 CLI 未输出的文字。
- 图片也必须来自本次实际执行的 alipay-bot 命令输出:只能处理本次输出中的 `MEDIA:` 行或 Markdown 图片 ``。禁止从上下文、历史回复、旧二维码路径、文件系统搜索结果或其他工具结果中补发/复用图片。
- 钱包开通/授权阶段返回的短链、`access_url`、`https://u.alipay.com/...`、`https://u.alipay.cn/...` 只属于钱包授权流程;禁止把这些链接解释成支付链接、付款链接、支付查询 shortUrl,或传给支付技能的 `query-payment-status`。
- 如果命令输出中同时包含更新推荐日志和最终的命令执行结果,只能使用**最后的命令执行结果**做状态判断;
- 禁止从诊断日志中的 `accessUrl`、`shortAccessUrl`、`qrcodeUrl`、`data`、`extInfo` 等字段提取或展示链接、二维码、图片、状态或支付结果
| 执行的命令 | 模板已包含的状态标识 |
|-----------|-------------|---------------------|
| check-wallet 已绑定 | "✓ 支付功能已开启" |
| apply-wallet 成功 | "请扫码或点击链接,开启支付宝支付功能" + 链接 |
| bind-wallet 成功 | "[开启成功]" + "支付宝支付功能已开启成功" |
| bind-wallet 失败 | "✗ 支付宝AI付功能授权失败, 请重试" |
| 系统错误 | "✗ 风太大了,请稍后重试" 或服务端错误文案 |
**输出规则:**
1. **原样输出**:CLI 返回的 Markdown 文本逐字符原样输出,禁止添加额外信号词。图片处理规则见 `references/image-output.md`,且图片必须来自本次 CLI 输出
2. **完整保留链接**:模板中的 `<<access_url>>` 等变量已替换为实际链接,必须完整输出
3. **MEDIA 行 / 图片** → 见 `references/image-output.md`。若本次输出存在 MEDIA 行,则从本次 MEDIA 行中提取路径后移除 MEDIA 行,用 message 工具发送图片。若本次工具输出中是 `` 格式的 Markdown 图片,则**原样保留在输出中,按 Markdown 格式渲染出来,禁止转换、禁止用其他工具发送**
**自检问题(每个命令执行后必须回答):**
1. check-wallet 执行后:我是否只执行了一次?是否根据结果立即采取了正确的行动?
2. apply-wallet 执行后:我是否原样输出了 CLI 返回的模板内容(包含"开启支付宝支付功能"和链接)?
3. bind-wallet 执行后(成功):我是否原样输出了 CLI 返回的模板内容(包含"[开启成功]")?
4. bind-wallet 执行后(失败):我是否原样输出了 CLI 返回的模板内容(包含"授权失败")?
5. 我是否在 CLI 输出前额外添加了"授权链接"或"绑定成功"等信号词?(如果是,那就是错误)
6. 我是否重复执行了 check-wallet 或 apply-wallet?(如果答案是"是",那就是错误)
## 输出规则(最高优先级)
> 详细规则见 `references/output-rules.md`,核心摘要:
1. **Markdown 文本** → 逐字符原样复制,禁止增减、包裹代码块、添加说明文字
2. **MEDIA 行 / 图片** → 见 `references/image-output.md`。若本次输出存在 MEDIA 行,则从本次 MEDIA 行中提取路径后移除 MEDIA 行,用 message 工具发送图片。若本次工具输出中是 `` 格式的 Markdown 图片,则**原样保留在输出中,按 Markdown 格式渲染出来,禁止转换、禁止用其他工具发送**
3. **JSON 输出** → 按字段逻辑处理,不直接展示
4. **URL** → 逐字符完整保留,禁止截断/转义。包括 `alipays://`、`https://` 等所有协议
5. **诊断日志** → `http request` / `http response` / traceId / costTime 等只用于排查,不参与对客输出;禁止从其中提取链接或图片
## check-wallet 状态判断规则(最高优先级)
**必须根据 JSON 返回的 `code`、`message` 和 `access_url` 字段判断状态,禁止根据输出文本自行推断状态。**
如果 `check-wallet` 输出包含多段内容,必须忽略 `http request` / `http response` 等诊断日志,只读取最后的命令结果 JSON。诊断日志中的 `accessUrl`、`shortAccessUrl`、`qrcodeUrl` 不是 `check-wallet` 对客输出,禁止展示给用户,也不能替代 `apply-wallet`。
```
check-wallet 返回值判断(唯一依据):
code=200 & message != "已申请开通,等待授权" & access_url="" (空字符串)
→ 状态:已开通已授权
→ 动作:原样输出 CLI 返回的模板内容(含"支付功能已开启")
→ 禁止执行 apply-wallet、bind-wallet,流程立即结束
→ 模板已包含状态标识:"✓ 支付功能已开启"
code=200 & message == "已申请开通,等待授权"
→ 状态:已申请未授权
→ 如果用户本轮反馈已完成支付宝侧授权:原样输出本次 check-wallet 结果,流程结束;禁止 apply-wallet
→ 如果用户本轮提供授权码:执行 bind-wallet -c <授权码>
→ 如果用户正在申请开通或需要授权链接:执行 apply-wallet → 原样输出模板内容(含"开启支付宝支付功能"+链接)
→ 模板已包含状态标识:"开启支付宝支付功能" + 链接;check-wallet pending 输出不包含 access_url,禁止从日志补链
code=500
→ 状态:未开通
→ 动作:立即执行 apply-wallet → 原样输出模板内容(含"开启支付宝支付功能"+链接)
→ 禁止仅告知状态而不执行 apply-wallet,必须执行并原样输出
→ 模板已包含状态标识:"开启支付宝支付功能" + 链接
```
> **查询状态时必须主动执行后续操作**
>
> 当用户询问"我的支付功能开通了吗"、"支付功能状态"或反馈"开通好了/授权好了/绑定好了/扫完了"时,必须执行 check-wallet 确认真实状态。若已经绑定则原样输出结果并结束;若仍为"已申请开通,等待授权",原样输出本次 check-wallet 结果并结束,禁止重复 apply-wallet。只有用户正在申请开通或明确需要重新展示授权链接时,才执行 apply-wallet 并原样输出模板内容。
**常见错误(必须避免):**
- 禁止:看到 code=200 就认为"已开通" → 实际必须检查 message 是否为"已申请开通,等待授权",以及 access_url 是否为空
- 禁止:看到输出文本含"申请已提交"就执行 apply-wallet → 必须以 JSON 的 message 字段为准,禁止根据输出文本推断
- 禁止:已绑定状态下调用 apply-wallet 或 bind-wallet → 必须只原样输出
- 禁止:用户正在申请开通或需要授权链接时只告知状态而不执行 apply-wallet → 必须执行 apply-wallet 并原样输出模板
## 总体执行流程
```
开始
↓
执行 alipay-bot check-wallet
↓
├─ code=200 & message 不是"已申请开通,等待授权" & access_url 为空 → 已开通已授权 → 原样输出命令执行返回内容→ 结束(禁止执行其他命令)
│
├─ code=200 & message 为"已申请开通,等待授权"
│ ├─ 用户反馈已完成支付宝侧授权 → 原样输出本次 check-wallet 结果 → 结束(禁止 apply-wallet)
│ ├─ 用户提供授权码 → bind-wallet -c <授权码> → 原样输出 → 结束
│ └─ 用户正在申请开通/需要授权链接 → apply-wallet → 原样输出命令执行返回内容 → STOP 等待用户完成支付宝侧授权
│
└─ code=500 → 未开通 → 立即执行 apply-wallet → 原样输出命令执行返回内容 → STOP 等待用户完成支付宝侧授权
```
---
## 流程一:支付能力开通与授权
**触发条件**:用户主动要求开通(如"开通支付功能"、"帮我开启支付能力")
**必须先执行 check-wallet 检查状态,禁止跳过直接执行 apply-wallet 或 bind-wallet。**
### Step 1:检查钱包状态
**使用 `exec` 工具执行:**
```bash
alipay-bot check-wallet
```
**出参**:JSON `{ "code": 200|500, "access_url": "string", "message": "string" }`
| code | message | access_url | 状态 | 动作 |
|------|---------|-----------|------|------|
| 200 | 不是"已申请开通,等待授权" | 空 `""` | 已开通已授权 | 原样输出执行命令返回的内容(**禁止执行 apply-wallet 或 bind-wallet**),流程结束 |
| 200 | "已申请开通,等待授权" | 不判断 | 已申请未授权 | 若用户反馈已完成授权则原样输出 check-wallet 结果;否则执行 Step 2 展示/刷新授权链接 |
| 500 | - | - | 未开通 | **直接执行 Step 2**(与上一行处理方式相同) |
### Step 2:申请开通
**当前轮次(使用 `exec` 工具执行):**
```bash
alipay-bot apply-wallet --agent-name "<当前agent名称>"
```
- `--agent-name`:取自`AIPAY_AGENT_NAME`,或者取当前Agent的名称,无法确定则置为空 `""`
**输出处理**(CLI 返回 Markdown 文本 + MEDIA 行):
1. Markdown 文本逐字符原样输出,模板已包含状态标识(如"开启支付宝支付功能")。图片处理规则见 `references/image-output.md`
2. MEDIA 行:仅处理本次输出中的 MEDIA 行,提取图片路径后移除该行,用 message 工具发送图片与文本整合。无可用工具时将文本和图片原样输出。详见 `references/image-output.md`
3. **执行失败** → 原样输出错误信息,可重试 1 次;连续失败后仅在用户主动要求反馈时进入问题反馈,禁止在本次 CLI 输出后追加反馈引导
4. **本轮结束 → STOP**,禁止额外添加信号词
5. **apply-wallet 输出不得追加引导**:原样输出 CLI 模板内容和图片后立即 STOP。CLI 模板已经说明"在支付宝内完成开通后,我会自动完成绑定;稍后可执行 check-wallet 确认状态"。禁止自行补写"请输入授权码完成绑定"等 CLI 未输出的文字。
**后续轮次(用户反馈已完成支付宝侧授权时):**
收到"开通好了"、"授权好了"、"绑定好了"、"扫完了"、"完成了"等反馈 → 立即**使用 `exec` 工具执行** check-wallet:
```bash
alipay-bot check-wallet
```
**check-wallet 后续处理**:
| 结果 | 处理 |
|------|------|
| code=200 且 message 不是"已申请开通,等待授权" | 原样输出本次 check-wallet 返回内容,流程结束 |
| code=200 且 message 为"已申请开通,等待授权" | 原样输出本次 check-wallet 返回内容,流程结束;禁止重复 apply-wallet,等待用户稍后再确认或提供授权码 |
| code=500 | 原样输出本次 check-wallet 返回内容;如用户明确要求重新开通,再执行 apply-wallet |
| CLI 返回格式错误/命令失败 | 原样输出错误信息;不追加引导,流程结束 |
**后续轮次(用户发送授权码时):**
收到 `开启支付功能xxxx`、`开启支付功能:xxxx` 或 `绑定AI钱包 xxxx` → 提取授权码,立即**使用 `exec` 工具执行** bind-wallet:
```bash
alipay-bot bind-wallet -c <授权码>
```
**授权码处理规则**:将用户提供的授权码直接传递给 bind-wallet,由 CLI 校验有效性。不要在本地做格式预校验或拒绝调用 bind-wallet。
**后续决策逻辑**:
| 结果 | 处理 |
|------|------|
| 执行成功 | 原样输出 CLI 返回的内容;**流程立即结束,禁止再执行任何命令,禁止追加"授权已完成/请重新发起支付"等 CLI 未输出的文字** |
| 执行失败(授权码过期/无效) | 原样输出 CLI 返回的内容;**不要自动重新执行 apply-wallet,不追加引导,流程立即结束** |
| CLI 返回格式错误 | 原样输出 CLI 返回的错误信息;**不追加引导,流程立即结束** |
| 连续失败 2 次+ | 若用户主动要求反馈,再进入问题反馈(见 `references/feedback.md`);禁止在本次 CLI 输出后追加反馈引导 |
**bind-wallet 后的硬性终止规则**:
- bind-wallet 成功 → 原样输出模板T3 → **立即结束,禁止执行任何后续命令**(包括 apply-wallet、check-wallet 等)
- bind-wallet 失败 → 原样输出失败内容 → **立即结束,禁止追加重试引导,禁止自动重新 apply-wallet**
---
## 流程二:用户直接提供授权码(最高优先级决策分支)
**触发条件**:用户消息中出现授权码(格式如 `开启支付功能 xxxx`、`开启支付功能:xxxx`、`绑定AI钱包 xxxx`、`461417` 等数字/字母组合)
> ⚠️ **这是最常见的失败场景。当用户提供了授权码时,必须直接 bind-wallet,不要先 apply-wallet。**
### 决策流程图
```
用户提供了六位数字的授权码
↓
执行 check-wallet(仅一次)
↓
┌─ code=200 & message 不是"已申请开通,等待授权" & access_url="" → 已开通已授权
│ → 原样输出模板T1(含"支付功能已开启")→ 结束
│ → 【禁止】bind-wallet、apply-wallet
│
├─ code=200 & message 为"已申请开通,等待授权" → 已申请未授权
│ → 直接执行 bind-wallet -c <授权码>
│ → 【禁止】apply-wallet(已申请不需要重新申请!)
│ → 【禁止】再次 check-wallet(状态已确认!)
│ → bind-wallet 成功 → 原样输出模板T3 → 结束
│ → bind-wallet 失败 → 原样输出模板T4 → 结束,禁止追加重试引导
│
└─ code=500 → 未开通
→ 执行 apply-wallet --agent-name "<agent>"
→ 原样输出模板T2 → 等待用户扫码后重新输入授权码
→ 【禁止】bind-wallet(未开通无法绑定)
```
### Step 1:检查钱包状态
**使用 `exec` 工具执行:**
```bash
alipay-bot check-wallet
```
### Step 2:根据状态处理
> ⚠️ **最高优先级规则:已申请未授权 + 用户提供了授权码 = 直接 bind-wallet,绝对禁止 apply-wallet**
GitHubで見る