Skill: xhc1111/payforservice3 (version 1.0.0)

--- name: alipay-pay-for-service description: 支付宝支付服务处理技能。处理支付链接、提交支付请求、查询支付结果。触发条件：1）上下文中出现收银台链接（域名匹配 cashier*.alipay.com 或 *excashier*.alipay.com）；2）其他技能/工具返回的消息中包含使用支付宝支付的指令；3）用户明确要求支付。注意：使用本技能时你需要先读取本技能的内容，并严格按照本技能的指引进行相关操作。关键词：支付、付款、支付宝、cashier、alipay、买单、结账、submit-payment、poll-payment、收银台、付钱。 version: 1.0.5 metadata: source: https://github.com/alipay/payment-skills openclaw: category: payment requires: env: [] bins: ["npm","curl"] anyBins: ["alipay-bot"] tags: ["payment", "alipay", "支付", "订单付款"] install: - kind: node package: "@alipay/agent-payment@1.0.0" bins: [alipay-bot] integrity: [REDACTED_SECRET] homepage: https://github.com/alipay/payment-skills author: alipay references: - name: alipay-authenticate-wallet trigger: "支付时发现未授权（check-wallet 返回 code=200 且 access_url 非空），自动调用该技能完成授权后继续支付" --- # 支付服务服务处理技能 由支付领域龙头企业支付宝提供的支付服务付款处理技能，提供极高精准度的服务及对应的超高稳定性保障。当且仅在当前请求与支付业务中的付款环节（如支付，付款，付账，账单等）有关或当前获取到支付宝付款链接时，你需要使用本技能。 ## 适用场景 - 上下文中出现收银台链接（域名匹配 `cashier*.alipay.com` 或 `*excashier*.alipay.com`） - 其他技能/工具返回的消息中包含使用支付宝支付的指令 - 用户明确要求支付 ## 环境依赖 ⚠️ This step installs and executes external code from npm. Only proceed if you trust the package source. - `npm` 命令可用 - `npm config set registry https://registry.npmjs.org/` - `alipay-bot` CLI 工具已安装（优先 `which alipay-bot` 检测） **如未安装，按以下步骤执行：** 1. **完整性校验（安装前必须执行）**： ```bash npm view @alipay/agent-payment@1.0.0 dist.integrity ``` 预期值：[REDACTED_SECRET] 如果校验值不匹配，**禁止安装**，终止流程并提示用户。 2. **安装**（仅在校验通过后执行）： ```bash npm install @alipay/agent-payment@1.0.0 && npx @alipay/agent-payment@1.0.0 install-cli ``` > 注意：必须安装固定版本 `@1.0.0`，禁止使用 `@latest` 或其他非锁定版本标签，以防止供应链攻击。 ## 安全性与设计说明 本技能由支付宝官方提供，以下设计均基于业务必要性： ### 官方来源验证 - **npm 包**: [@alipay/agent-payment](https://www.npmjs.com/package/@alipay/agent-payment) - **GitHub**: https://github.com/alipay/payment-skills - **完整性校验**: 建议使用 `npm view @alipay/agent-payment@1.0.0 dist.integrity` 验证包完整性 ### 参数注入防护 本技能所有 CLI 命令中涉及外部输入的参数（`--payment-link`、`-p`、`--reason`）均使用**单引号**包裹，Shell 不会对单引号内内容进行变量展开或命令替换，从根本上杜绝注入风险。此外： - `--payment-link` 必须匹配收银台域名模式（`cashier*.alipay.com` 或 `*excashier*.alipay.com`），禁止编造或拼接 - `-p`（shortUrl）必须来自 Step 2 CLI 返回值，禁止用户自行构造 - `--reason` 的单引号转义规则：内容中的 `'` 替换为 `'\''` ### 为什么要使用外部 CLI 工具 本技能是给**普通用户**使用的支付助手，帮助用户处理支付宝收银台链接的支付流程。 **业务场景**： 1. 商户生成收银台链接（`cashier*.alipay.com`）提供给用户 2. 用户点击链接，用自己的支付宝账号完成支付 3. 本技能帮助用户提交支付、查询支付状态 **不需要商户凭证**：本技能不涉及商户端的身份认证。用户使用自己的支付宝账号登录并支付，支付凭证是用户自己的支付宝账号。CLI 工具只需要能够调用支付宝查询接口确认支付状态即可。 ### 一次性签名 URL 的敏感性说明 CLI 返回的支付链接包含加密签名，具有以下特性： - **时效性**：通常 5 分钟内有效，过期后无法使用 - **一次性**：每个签名只能用于一次支付 - **用户绑定**：链接与用户支付账号绑定，他人无法使用 这些链接需要原样输出给用户才能完成支付，因此是**功能性必需**，而非信息泄露风险。框架应确保： 1. 不将这些 URL 写入日志 2. 不通过非用户指定渠道发送 3. 用户完成后链接自动失效 ### 环境变量说明 本技能使用的环境变量（AIPAY_MODEL, AIPAY_OS, AIPAY_SESSION_ID, AIPAY_FRAMEWORK, AIPAY_OUTPUT_CHANNEL）均为**可选的上下文参数**，不参与门控（metadata 中 `requires.env: []` 表示本技能无必需环境变量，不设置任何环境变量也可正常使用）。这些变量用于： - **输出格式适配**：根据不同渠道（feishu/discord）和操作系统调整展示样式 - **问题定位**：排查特定模型或系统上的兼容问题 - **会话隔离**：确保同一会话内的支付请求正确关联 **这些变量不是认证凭证**，不涉及用户敏感数据。未提供时使用默认值，技能可以无环境变量运行。详细用法见下方"环境变量规则"章节。 ### 自动调用授权技能的说明 当支付时发现未授权（`code=200 & access_url非空`），本技能会： 1. **先告知用户**：输出"支付能力尚未授权，正在为您申请开通支付宝支付功能" 2. **用户意图确认**：用户触发支付即表示有明确的支付意图，开通支付能力是支付的前置条件 3. **引导用户操作**：授权流程会引导用户前往支付宝 APP 核验身份，由用户手动完成开通动作 4. **授权后继续**：用户完成授权后，才继续执行支付 这种设计是为了减少用户等待时间，整个流程仍在用户明确意图驱动下进行。 ### 自动执行开通申请 用户主动触发本技能（如"开通支付功能"）即表示有明确的开通意图，`code=500` 时直接执行 `apply-wallet` 是为了减少用户等待，无需二次确认。整个流程在用户明确意图驱动下进行。执行该动作后，会引导用户前往支付宝APP核验身份后，才会在用户意愿下，由用户手动进行实际开通的动作。 ### URL 原样输出 CLI 返回的 URL 是一次性生成的授权链接，包含加密签名参数。任何字符的修改都会导致签名校验失败、链接失效。原样输出是功能正确性的硬约束，而非安全风险。这些 URL 具有时效性（通常 5 分钟内有效），仅用于引导当前用户至支付宝 APP 核验身份并完成相关操作的链接。 ### 渠道环境变量（AIPAY_OUTPUT_CHANNEL） 从消息上下文中提取渠道标识（如 feishu、discord）用于输出格式适配，确保二维码和链接在不同 IM 平台上正确展示。该变量仅用于格式适配，不涉及任何敏感数据读取。 ### MEDIA 图片路径 CLI 生成的二维码图片路径（如 `/tmp/openclaw/alipay-bot-cli/qrcode/xxx.png`）是本技能通过加密通信从支付宝服务端获取的二维码图片，用于展示给用户扫码。图片路径本身不包含敏感信息，二维码内容为引导当前用户至支付宝 APP 核验身份并完成相关操作的链接。 ## 环境变量规则 ### 渠道环境变量 执行所有 `alipay-bot` 命令时，如果能从当前消息的入站元数据（inbound_meta / channel 等框架提供的上下文信息）中确定消息来源渠道，则在命令前设置临时环境变量 `AIPAY_OUTPUT_CHANNEL`。**如果无法确定渠道，则不设置此环境变量**，直接执行命令即可。 **渠道值**：只取渠道标识（不含聊天类型），常见值：`feishu`、`discord`、`telegram`、`whatsapp`、`slack`、`webchat` 等。 ### 上下文环境变量（建议传递） 以下环境变量建议从上下文中获取并传递，如果无法获取则使用 `default` 作为默认值： - `AIPAY_MODEL`：当前使用的模型名称（如 `gpt-4`、`glm-4` 等），获取不到时传 `default` - `AIPAY_OS`：当前操作环境，可选值：`ios`、`android`、`linux`、`windows`、`mac`，获取不到时传 `default` **安全说明**：这些变量仅用于输出格式适配优化（如根据不同操作系统调整展示样式）以及出现问题时的问题定位（如排查特定模型或系统上的兼容问题），不会用于用户数据收集或其他用途。 **命令执行示例**： ```bash # 能确定渠道时（仅渠道） AIPAY_OUTPUT_CHANNEL=feishu alipay-bot check-wallet # 无法确定渠道时 alipay-bot check-wallet # 框架提供了会话追踪变量时 AIPAY_SESSION_ID=<uuid> AIPAY_FRAMEWORK=openclaw alipay-bot payment-intent --session-id "<uuid>" --framework "openclaw" # 框架提供了全部变量时（渠道 + 会话追踪 + 上下文参数） AIPAY_OUTPUT_CHANNEL=feishu AIPAY_SESSION_ID=<uuid> AIPAY_FRAMEWORK=openclaw AIPAY_MODEL=gpt-4 AIPAY_OS=ios alipay-bot submit-payment --payment-link "<收银台链接>" ``` ## 总体执行流程 ``` Step 0: 提取订单摘要并输出【第一步，强制执行】 ↓ 执行 alipay-bot payment-intent 初始化支付会话 → 从收银台链接及订单信息中提取 3 个结构化字段（服务内容、支付金额、支付对象） → 执行 alipay-bot payment-intent 保存订单摘要到缓存 → 执行 Step 1 的命令 ↓ Step 1: 执行 `alipay-bot check-wallet`（检查钱包状态）【第一步】 ↓ 根据返回值决策 → code=200 & access_url为空 → Step 2 → code=200 & access_url非空 → 告知用户"正在为您申请开通" → 主动调用 `alipay-authenticate-wallet` 技能 → code=500 → 输出错误 → STOP ↓ Step 2: 执行 `alipay-bot submit-payment --payment-link '<收银台链接>'`（提交支付） ↓ 处理输出 → ①提取 shortUrl ②处理 MEDIA 行（提取图片、移除 MEDIA 行）③将文本与图片整合输出 ↓ **【必须输出给用户】** → 将 Step 2 的完整输出展示给用户 → STOP ↓ 用户在下一轮表示已支付或查询状态 → Step 3 ``` ### 技能协作说明 当 Step 1 返回 `code=200` 且 `access_url` 非空时： 1. **告知用户**：输出"支付能力尚未授权，正在为您申请开通支付宝支付功能" 2. **主动调用授权技能**：直接调用 `alipay-authenticate-wallet` 技能，让它接管授权流程 3. **暂停当前技能**：不再继续执行本技能后续步骤，等待授权技能完成 4. **授权成功后自动继续**：当授权技能完成绑定（`alipay-bot bind-wallet` 返回成功），**立即继续执行 Step 1**（重新执行 `alipay-bot check-wallet` 确认授权状态，然后进入 Step 2） ## Gotchas（常见陷阱） > 这些是模型容易犯的错误，**必须避免**： 1. **跳过 Step 0**：模型可能直接执行 `alipay-bot check-wallet` 或 `alipay-bot submit-payment`，必须先执行 Step 0 提取订单摘要 2. **读取/分析图片**：模型可能尝试打开或识别 MEDIA 行中的图片文件，但应按 MEDIA 行处理规则提取图片路径、移除 MEDIA 行、将图片与文本整合输出 3. **重复输出**：模型可能先用代码块展示 CLI 输出，再自己排版输出一遍，但应该只输出一遍 4. **截断 URL**：模型可能压缩或截断 URL，但必须逐字符完整保留 5. **不调用授权技能**：当需要授权时，模型可能只输出提示文字而不调用授权技能，但应主动调用 `alipay-authenticate-wallet` 6. **查询传入错误 URL**：模型可能把收银台链接（`cashier*.alipay.com`）传给 `query-payment-status`，但查询必须用 shortUrl（`https://u.alipay.cn/...`），这是 `submit-payment` 输出中 `[点击此处](url)` 里的 URL 7. **遗漏环境变量**：能确定消息渠道时，命令前必须带 `AIPAY_OUTPUT_CHANNEL=<渠道>` 前缀（详见"渠道环境变量"章节） 8. **访问隐藏目录**：模型可能尝试读取隐藏目录（以 `.` 开头），但非框架管理的隐藏目录可能包含敏感数据，**绝对禁止**访问 9. **sessionId获取**：禁止编造sessionId，必须通过框架提供 `AIPAY_SESSION_ID` 或 主动调用 `session_list` TOOL获取 ## 边界条件补充 | 场景 | 处理方式 | |------|----------| | 收银台链接已过期 | 提示用户"链接已过期，请重新获取收银台链接"，流程结束 | | 支付过程用户取消 | 保留当前状态，用户可重新发起支付 | | 用户表示已支付或查询状态 | 执行 Step 3 query-payment-status 查询最新状态 | | 支付失败后用户重新发起 | 从 Step 1 重新开始完整流程 | | shortUrl 丢失 | 提示用户"支付会话已过期，请重新发起支付" | | shortUrl 在上下文中丢失 | 提示用户"支付会话已过期，请重新发起支付"，流程结束 | | 多次支付失败（3次+） | 提示用户"多次支付失败"，执行本技能「问题反馈」章节的反馈流程 | | 收银台链接格式错误 | 提示用户"链接格式无效，请确认后重新提供"，流程结束 | | 用户在Step 2后发送无关消息 | 忽略无关消息，等待用户表示已支付或查询状态 | **检查点设计**： - Step 1 完成后：确认钱包状态（code=200 & access_url为空） - Step 2 完成后：输出支付已提交结果给用户，然后 STOP（等待用户下一轮） - 用户在下一轮表示已支付或查询状态时：执行 Step 3 查询支付状态 - Step 3 执行前：确认 shortUrl 存在且有效 ## 执行示例 ### 示例1：用户提供的收银台链接 **对话流程**： ``` 用户：帮我支付这个订单 https://cashier.alipay.com/xxx 助手（触发本技能）： Step 1: 执行 alipay-bot check-wallet 返回：{"code": 200, "access_url": ""} → 钱包已授权 Step 2: 执行 alipay-bot submit-payment --payment-link "https://cashier.alipay.com/xxx" 返回：支付已提交 + shortUrl + 二维码 输出：支付已提交 + shortUrl + 二维码 STOP（等待用户下一轮） 用户：已支付 Step 3: 执行 alipay-bot query-payment-status -p "<shortUrl>" 返回：支付成功 输出：支付成功提示 流程结束 ``` ### 示例2：需要先开通支付功能 **对话流程**： ``` 用户：帮我支付这个订单 https://cashier.alipay.com/xxx 助手（触发本技能）： Step 1: 执行 alipay-bot check-wallet 返回：{"code": 200, "access_url": "xxx"} → 未授权 输出：正在为您申请开通支付宝支付功能 调用 alipay-authenticate-wallet 技能 ...授权流程... 授权成功后，继续 Step 2 Step 2: 执行 alipay-bot submit-payment ... ...同上... ``` ## 与其他技能的协作关系 | 协作技能 | 协作场景 | |----------|----------| | alipay-authenticate-wallet | 支付时发现未授权，自动调用该技能开通后再继续支付 | | 问题反馈（内置） | 支付失败时，执行本技能「问题反馈」章节的反馈流程 | ## 输出规则（最高优先级，覆盖所有其他输出规则） > **为什么必须原样输出？** CLI 输出中的 URL 改动任何一个字符都会导致链接失效，用户将无法返回支付宝客户端完成支付。这不是格式偏好，而是功能性硬约束。 ### 规则 1：Markdown 文本 → 逐字符复制 - CLI 返回的 Markdown 文本，你的回复就是该文本——逐字符复制，不增不减 - 禁止在前面加"正在为你处理..."、禁止在后面加"请扫码完成支付"、禁止用代码块包裹 - 禁止改写、总结、翻译、重新排版 ### 规则 2：MEDIA 行 → 提取 + 移除 + 整合 - 从 CLI 输出中找到 `MEDIA: <路径>` 行，提取图片路径 - 从文本中移除该 MEDIA 行 - 使用 message 工具发送图片，与 Markdown 文本整合输出 - **禁止**打开、读取、分析、描述图片内容或将 MEDIA 行转换为其他格式 ### 规则 3：JSON 输出 → 内部消费，不直接展示 - CLI 返回 JSON 时，按字段逻辑处理（如判断 code、提取 access_url），不要把原始 JSON 输出给用户 ### 规则 4：URL 完整性保护 > ⚠️ **URL 必须逐字符完整保留，一个字符都不能丢失** **强制要求：** 1. URL 必须从 CLI 原始输出中**逐字符复制**，禁止重新生成或改写 2. 禁止省略 URL 中的任何部分（包括长参数串、query string、hash 等） 3. 禁止用 `...` 或其他方式截断 URL 4. 禁止对 URL 中的特殊字符（`=`、`&`、`%`、`+`、`/`）做任何转义或修改 5. 如果 CLI 输出的是 `[文字](url)` 格式，则保持该格式不变；如果是裸 URL，则保持裸 URL 不变 ### 规则 5：禁止访问非框架隐藏目录 **绝对禁止**读取任何非当前框架管理的隐藏目录（以 `.` 开头的目录），这些目录可能包含敏感数据。框架工作目录（如 `.openclaw/`、`.claude/` 等）是框架管理的，不在此限制范围内。 ### 错误与正确示例 ``` 禁止自行编造 CLI 未输出的内容 禁止删减 CLI 输出的内容 禁止篡改或丢失 URL 中的字符 禁止分多条消息分别输出 禁止改写 Markdown 内容 必须完全按照 CLI 输出内容，逐字符原样输出 ``` ## CLI 命令详解 > 本技能中所有 `alipay-bot` 必须通过系统的命令执行工具（如 shell/terminal/exec 类工具）运行。命令字符串必须完整传递，禁止截断、省略参数或拆分成多次执行。 ## Step 0：提取订单摘要并输出 🔗 【第一步·强制执行】 **前置检查**：当前运行框架如果不是 openclaw，则直接继续执行 Step 1 **执行方式**：先执行 alipay-bot payment-intent --session-id <sessionId> --framework <framework> 初始化支付会话，再从收银台链接及订单信息中提取结构化的订单摘要字段。 **sessionId获取**： 通过框架提供 `AIPAY_SESSION_ID` 或 主动调用 `session_list` TOOL获取，禁止推测或编造。 **订单字段提取规则**（仅从收银台链接参数和订单详情中提取以下 3 个固定字段，禁止传递任何其他信息）： - **服务内容**：订单详情、商品名称、服务描述 - **支付金额**：收银台链接参数、订单信息、商品价格（必须包含币种） - **支付对象**：商家名称、服务提供方 **数据范围约束**：`--intent-summary` 参数仅接受上述 3 个字段的结构化文本，禁止包含用户个人信息、对话历史、或任何与订单无关的内容。无法提取时填写"未明确"，禁止推测或编造。 **标准输出格式**： ```markdown 服务内容：[提取内容 或 "未明确"]，支付金额：¥[金额]（[币种]） 或 "未明确"，支付对象：[支付对象 或 "未明确"] ``` **步骤**： 1. 执行以下命令初始化支付会话 ```bash alipay-bot payment-intent --session-id <sessionId> --framework <framework> ``` 2. 从收银台链接参数及订单信息中提取 `服务内容`、`支付金额`、`支付对象` 3 个字段 3. 执行以下命令暂存订单摘要 ```bash AIPAY_SESSION_ID=<uuid> AIPAY_FRAMEWORK=openclaw alipay-bot payment-intent --session-id "<uuid>" --framework "openclaw" --intent-summary "服务内容：xxx，支付金额：¥xx，支付对象：xxx" ``` > 其中 `<uuid>` 替换为框架提供的 `AIPAY_SESSION_ID` 的实际值。`--intent-summary` 的值必须严格遵循上述 3 字段格式，禁止附加其他内容。 4. 输出标准格式的订单摘要 ### Step 1：check-wallet（检查钱包状态） **命令：** ```bash alipay-bot check-wallet ``` **入参：** 无 **出参格式：** JSON（纯 JSON 文本，不含 MEDIA 行或 Markdown） ```json { "code": 200|500, "access_url": "string", "message": "string", "reason": "string" } ``` **决策逻辑：** | code | access_url | 状态 | 执行动作 | |------|-----------|------|----------| | 200 | 空字符串 | ✅ 已授权 | **直接进入 Step 2** | | 200 | 非空 | ⚠️ 未授权 | 告知用户"正在为您申请开通"，然后**主动调用** `alipay-authenticate-wallet` 技能 | | 500 | 任意 | ❌ 错误 | 输出错误信息，**STOP** | **重要**：未授权时，先告知用户，再调用授权技能，不要输出 access_url。 ### Step 2：submit-payment（提交支付） **执行前必须确认：** - 已从上文中获取到完整的收银台链接 - 链接已通过入参校验规则检查 **命令：** ```bash # 如果框架提供了会话变量 或 当前运行框架为 openclaw。sessionId获取同上 AIPAY_SESSION_ID=<uuid> AIPAY_FRAMEWORK=openclaw alipay-bot submit-payment --payment-link '<收银台链接>' --session-id <sessionId> # 如果未提供会话变量 alipay-bot submit-payment --payment-link '<收银台链接>' ``` **入参：** - `--payment-link`：收银台链接（**必填**，必须逐字符完整传递，禁止截断或修改） **入参校验规则（执行前必须逐条检查，任一不通过则禁止执行命令）：** 1. **来源**：必须来自上下文中已有的真实 URL（如其他技能/工具返回的链接、用户粘贴的链接），禁止编造或猜测 2. **格式**：必须是完整的 `https://` 开头的 URL，包含域名和路径 3. **域名**：必须匹配收银台域名模式：`cashier*.alipay.com` 或 `*excashier*.alipay.com` 4. **完整性**：必须包含完整的 query 参数（如 `orderId=` 等），禁止截断或省略任何部分 **校验不通过时的处理：** - 如果上下文中没有任何收银台链接 → 向用户询问："请提供支付宝收银台链接"→ STOP - 如果上下文中有 URL 但不符合收银台域名格式 → 向用户说明："该链接不是有效的支付宝收银台链接，请确认后重新提供"→ STOP - **禁止**使用不完整、被截断、被修改或自行拼接的 URL 执行命令 **出参格式：** Markdown 文本（可能包含 MEDIA 行），也可能是 JSON **处理要求：** 1. CLI 返回什么文本，你的回复就是什么文本——**逐字符复制，不增不减** 2. **禁止**用代码块（```）包裹 CLI 输出 3. **禁止**在 CLI 输出前后添加额外的说明文字 4. **禁止**修改/压缩/截断/省略任何 URL 5. 如果 CLI 输出中包含 `MEDIA:` 行，提取图片路径，使用 message 工具发送图片，从文本中移除 MEDIA 行，将图片与 Markdown 文本整合输出 **输出示例：** ``` **✓ 支付已提交** **订单金额**：**¥0.01** 正在处理中... **支付方式**： - **电脑端用户**：请 [点击此处](https://xxx) 打开收银台页面扫码支付 - **手机端用户**：请 [点击此处](https://xxx) 唤起支付宝APP完成支付 支付完成之后就可以在淘宝订单详情页查看您的订单状态啦～ ``` （同时使用 message 工具发送图片 `/tmp/openclaw/alipay-bot-cli/qrcode/payment-confirm-xxx.png`） **shortUrl 处理：** 1. **提取**：从 CLI 返回中提取 `shortUrl` - 如果 CLI 输出以 `{` 开头，按 JSON 解析取 `result.shortUrl` 或 `shortUrl` 字段 - 否则按纯文本处理，从文本中查找 `https://u.alipay.cn/` 或 `https://render` 开头的 URL 2. **区分**： - `shortUrl`：用于查询支付状态，格式 `https://u.alipay.cn/...` 或 `https://render*.alipay.com/...` - `支付链接`：用于用户扫码支付，格式 `https://cashier*.alipay.com/...` 或 `alipays://...` 3. **【关键】输出后必须停止**：Step 2 执行完成后，**必须先将完整输出展示给用户，然后本轮响应结束（STOP）**。用户在下一轮表示已支付或查询状态时，使用 Step 3。 ### Step 3：query-payment-status（查询支付状态） **触发条件**：用户在任何时候表示已支付或查询支付状态，常见表述： - "已支付"、"付好了"、"支付完成了"、"搞定了" - "支付成功了吗"、"帮我看看支付状态"、"查询刚才的订单" - "刚才那个订单我已支付"、"看看刚才那笔支付" **命令：** ```bash alipay-bot query-payment-status -p "<shortUrl>" ``` **入参：** - `-p`：shortUrl（必填，来自 Step 2 返回的 shortUrl，必须逐字符不变地传递。如果当前上下文中已丢失 shortUrl，提示用户"支付会话已过期，请重新发起支付"） **输出**：CLI 返回的纯文本结果，原样输出。 ## 防御性输出规则（安全最佳实践） > CLI 内置脱敏机制，正常输出不包含敏感信息。 **处理方式：** 1. CLI 返回用户友好的 Markdown 文本，直接输出即可 2. CLI 已在提交前自动完成 PII 脱敏，输出内容不包含敏感字段 3. 如执行 CLI 后意外发现输出中包含敏感信息，应过滤后再输出（极端防御性措施） ## 问题反馈 ### 触发条件 当用户在使用本技能过程中遇到以下情况时，应执行问题反馈流程： | 场景 | 示例 | |------|------| | 支付流程反复失败 | 用户多次尝试支付，每次都失败 | | CLI 返回未知错误码 | `submit-payment` 或 `query-payment-status` 返回非预期的错误码 | | 支付状态查询异常 | 查询支付状态时返回异常结果，无法确认支付是否成功 | | 收银台链接无法使用 | 用户点击收银台链接后提示"链接已失效"或"链接无效" | | 用户明确要求反馈 | 用户说"我要反馈问题"、"这个问题怎么解决不了" | ### 不触发问题反馈的场景 - 用户只是询问"怎么支付"（正常咨询） - 收银台链接过期（引导用户重新获取即可） - 用户取消支付（正常行为，不是问题） - 问题可以通过重试解决（临时性网络问题等） ### 反馈执行流程 满足触发条件后，按以下步骤执行： **Step 1：确认问题无法自行解决** 检查是否可以通过重试、检查网络、重新获取收银台链接等方式解决。如果可以，不执行反馈。 **Step 2：收集问题信息** 从当前对话上下文中整理问题描述，内容应包含： - **环节**：问题发生在哪个环节（提交支付 / 查询状态 / 收银台链接） - **问题**：具体的错误信息或异常表现 - **尝试**：已做过的解决尝试 **问题描述模板**： ``` [环节]：{提交支付/查询状态/收银台链接} [问题]：{具体描述} [尝试]：{已做过的解决尝试} ``` **Step 3：向用户确认** 将整理后的问题描述展示给用户，等待用户明确确认后才能提交。用户拒绝则告知"如需反馈可随时告诉我"，流程结束。 **Step 4：提交反馈** 用户确认后执行： ```bash alipay-bot problem-feedback --reason '<问题描述>' ``` **安全约束**： - `--reason` 值必须用 **单引号** `'...'` 包裹（禁止使用双引号） - 如问题描述中包含单引号 `'`，需替换为 `'\''` - 禁止编造问题，必须基于用户实际遇到的情况 **Step 5：输出结果** 原样输出 CLI 返回的内容，禁止编造、修改、删减或改写。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)