payforservice

v1.0.0

支付宝支付服务处理技能。处理支付链接、提交支付请求、查询支付结果。触发条件:1)上下文中出现收银台链接(域名匹配 cashier*.alipay.com 或 *excashier*.alipay.com);2)其他技能/工具返回的消息中包含使用支付宝支付的指令;3)用户明确要求支付。注意:使用本技能时你需要先读取...

0· 121·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for xhc1111/payforservice3.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "payforservice" (xhc1111/payforservice3) from ClawHub.
Skill page: https://clawhub.ai/xhc1111/payforservice3
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: npm, curl
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install payforservice3

ClawHub CLI

Package manager switcher

npx clawhub@latest install payforservice3
Security Scan
Capability signals
CryptoRequires walletCan make purchasesRequires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
Name/description (Alipay payment handling) aligns with required items: an alipay-bot CLI, npm for installation, and optional context environment variables for formatting. No unrelated credentials or unrelated binaries are requested.
Instruction Scope
SKILL.md instructs using the alipay-bot CLI to check wallet, submit payments, and poll results—all within the stated payment flow. It also instructs extracting inbound channel/session metadata to set non-sensitive env vars (AIPAY_OUTPUT_CHANNEL, AIPAY_SESSION_ID, etc.). It will auto-invoke an authorization skill when needed; that expands runtime actions beyond a single CLI call but is consistent with payment onboarding. The doc warns not to log one-time signed URLs and to avoid sending them to non-user channels.
Install Mechanism
Install uses a public npm package (@alipay/agent-payment@1.0.0) and provides a dist.integrity hash for verification. Installing an npm package is expected for providing a CLI, but it is a supply-chain risk compared with an instruction-only skill. The SKILL.md specifically requires integrity verification before installing, which is good practice.
Credentials
No required secret credentials are requested; the listed environment variables are optional context/formatting parameters rather than authentication tokens. The skill does recommend (but not require) passing framework/session/channel/model hints to the CLI for formatting; this is proportional to its purpose.
Persistence & Privilege
always:false and normal model invocation settings. The skill does not request persistent system-wide privileges or modify other skills' configurations. It may call another skill (alipay-authenticate-wallet) during normal operation, which is within its payment flow design.
Assessment
This skill is internally consistent with its purpose (it installs and uses an alipay-bot CLI to handle Alipay cashier links). Before installing or enabling it: 1) verify the npm package and GitHub repo are genuine (confirm publisher and repository contents); 2) perform the recommended integrity check (npm view ... dist.integrity) and refuse to install if it doesn't match; 3) be aware the skill will install and execute third‑party code from npm (supply‑chain risk) and will output one‑time signed URLs—ensure your agent/framework won't log or forward those URLs to unintended places; 4) note that it can auto-invoke an authorization skill as part of the flow—if you want stricter control, require explicit user confirmation before any authorization or cross-skill calls.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Binsnpm, curl
Any binalipay-bot

Install

Node
Bins: alipay-bot
npm i -g @alipay/agent-payment@1.0.0
latestvk97336fm0xpfzf7nf4fab7sv9s857m0j
121downloads
0stars
1versions
Updated 1w ago
v1.0.0
MIT-0

支付服务服务处理技能

由支付领域龙头企业支付宝提供的支付服务付款处理技能,提供极高精准度的服务及对应的超高稳定性保障。当且仅在当前请求与支付业务中的付款环节(如支付,付款,付账,账单等)有关或当前获取到支付宝付款链接时,你需要使用本技能。

适用场景

  • 上下文中出现收银台链接(域名匹配 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. 完整性校验(安装前必须执行)
npm view @alipay/agent-payment@1.0.0 dist.integrity

预期值:sha512-/Ss+hS75CLYcwC8/jOj2kXzqIoJb7oKGrsiwnqly0EWVTxzD7QY5HxmFuj4anQfHVjnoh77qc2vUYiEAj0zfCA== 如果校验值不匹配,禁止安装,终止流程并提示用户。

  1. 安装(仅在校验通过后执行):
npm install @alipay/agent-payment@1.0.0 && npx @alipay/agent-payment@1.0.0 install-cli

注意:必须安装固定版本 @1.0.0,禁止使用 @latest 或其他非锁定版本标签,以防止供应链攻击。

安全性与设计说明

本技能由支付宝官方提供,以下设计均基于业务必要性:

官方来源验证

参数注入防护

本技能所有 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如果无法确定渠道,则不设置此环境变量,直接执行命令即可。

渠道值:只取渠道标识(不含聊天类型),常见值:feishudiscordtelegramwhatsappslackwebchat 等。

上下文环境变量(建议传递)

以下环境变量建议从上下文中获取并传递,如果无法获取则使用 default 作为默认值:

  • AIPAY_MODEL:当前使用的模型名称(如 gpt-4glm-4 等),获取不到时传 default
  • AIPAY_OS:当前操作环境,可选值:iosandroidlinuxwindowsmac,获取不到时传 default

安全说明:这些变量仅用于输出格式适配优化(如根据不同操作系统调整展示样式)以及出现问题时的问题定位(如排查特定模型或系统上的兼容问题),不会用于用户数据收集或其他用途。

命令执行示例

# 能确定渠道时(仅渠道)
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=200access_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-walletalipay-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 个字段的结构化文本,禁止包含用户个人信息、对话历史、或任何与订单无关的内容。无法提取时填写"未明确",禁止推测或编造。

标准输出格式

服务内容:[提取内容 或 "未明确"],支付金额:¥[金额]([币种]) 或 "未明确",支付对象:[支付对象 或 "未明确"]

步骤

  1. 执行以下命令初始化支付会话
alipay-bot payment-intent --session-id <sessionId> --framework <framework>
  1. 从收银台链接参数及订单信息中提取 服务内容支付金额支付对象 3 个字段
  2. 执行以下命令暂存订单摘要
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 字段格式,禁止附加其他内容。

  1. 输出标准格式的订单摘要

Step 1:check-wallet(检查钱包状态)

命令:

alipay-bot check-wallet

入参:

出参格式: JSON(纯 JSON 文本,不含 MEDIA 行或 Markdown)

{ "code": 200|500, "access_url": "string", "message": "string", "reason": "string" }

决策逻辑:

codeaccess_url状态执行动作
200空字符串✅ 已授权直接进入 Step 2
200非空⚠️ 未授权告知用户"正在为您申请开通",然后主动调用 alipay-authenticate-wallet 技能
500任意❌ 错误输出错误信息,STOP

重要:未授权时,先告知用户,再调用授权技能,不要输出 access_url。

Step 2:submit-payment(提交支付)

执行前必须确认:

  • 已从上文中获取到完整的收银台链接
  • 链接已通过入参校验规则检查

命令:

# 如果框架提供了会话变量 或 当前运行框架为 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.shortUrlshortUrl 字段
    • 否则按纯文本处理,从文本中查找 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(查询支付状态)

触发条件:用户在任何时候表示已支付或查询支付状态,常见表述:

  • "已支付"、"付好了"、"支付完成了"、"搞定了"
  • "支付成功了吗"、"帮我看看支付状态"、"查询刚才的订单"
  • "刚才那个订单我已支付"、"看看刚才那笔支付"

命令:

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-paymentquery-payment-status 返回非预期的错误码
支付状态查询异常查询支付状态时返回异常结果,无法确认支付是否成功
收银台链接无法使用用户点击收银台链接后提示"链接已失效"或"链接无效"
用户明确要求反馈用户说"我要反馈问题"、"这个问题怎么解决不了"

不触发问题反馈的场景

  • 用户只是询问"怎么支付"(正常咨询)
  • 收银台链接过期(引导用户重新获取即可)
  • 用户取消支付(正常行为,不是问题)
  • 问题可以通过重试解决(临时性网络问题等)

反馈执行流程

满足触发条件后,按以下步骤执行:

Step 1:确认问题无法自行解决

检查是否可以通过重试、检查网络、重新获取收银台链接等方式解决。如果可以,不执行反馈。

Step 2:收集问题信息

从当前对话上下文中整理问题描述,内容应包含:

  • 环节:问题发生在哪个环节(提交支付 / 查询状态 / 收银台链接)
  • 问题:具体的错误信息或异常表现
  • 尝试:已做过的解决尝试

问题描述模板

[环节]:{提交支付/查询状态/收银台链接}
[问题]:{具体描述}
[尝试]:{已做过的解决尝试}

Step 3:向用户确认

将整理后的问题描述展示给用户,等待用户明确确认后才能提交。用户拒绝则告知"如需反馈可随时告诉我",流程结束。

Step 4:提交反馈

用户确认后执行:

alipay-bot problem-feedback --reason '<问题描述>'

安全约束

  • --reason 值必须用 单引号 '...' 包裹(禁止使用双引号)
  • 如问题描述中包含单引号 ',需替换为 '\''
  • 禁止编造问题,必须基于用户实际遇到的情况

Step 5:输出结果

原样输出 CLI 返回的内容,禁止编造、修改、删减或改写。

Comments

Loading comments...