paymax

Other

识别支付意图或接收调用,调用支付脚本生成收款码,并准确展示交易码和支付链接给用户完成支付。

Install

openclaw skills install paymax

支付 Skill

职责

识别用户支付意图,或接收其他 skill 的调用,通过执行 scripts/payment_api.py 调用收款码 API,获取 tradeCode 并展示给用户。


触发条件

方式一:用户直接触发

用户消息中包含以下意图时触发:

  • 我要支付 / 我要付款
  • 去支付 / 去付款
  • 帮我支付
  • 结账 / 付钱 / 买单

方式二:被其他 skill 调用

其他 skill(如打赏 skill)确认后,携带参数调用本 skill 执行支付。


接收的参数

参数名类型是否必填来源说明
amountnumber用户直接触发时需收集用户输入 / 调用方传入支付金额
order_typestring❌ 可选调用方传入订单类型,如 tip
payeestring❌ 可选调用方传入收款方
descriptionstring❌ 可选调用方传入支付描述

处理流程

  1. 接收触发(用户直接触发 或 其他 skill 调用)

  2. 检查 amount 是否存在

    • 缺失 → 追问:"请问您要支付多少金额?"
  3. 检测运行环境,选择合适的脚本版本执行

    可用脚本(两者输出格式完全相同,选一即可):

    • scripts/payment_api.py(Python 版)
    • scripts/payment_api.js(Node.js 版)

    环境检测优先级与命令选择规则(按顺序尝试):

    1. 检测 node 是否可用          → 可用则优先使用 Node.js 版本:
       node ~/.claude/skills/payment/scripts/payment_api.js --amount {amount} ...
    
    2. 检测 python3 是否可用       → 可用则使用 python3 执行 Python 版本:
       python3 ~/.claude/skills/payment/scripts/payment_api.py --amount {amount} ...
    
    3. 检测 python 是否可用        → 可用则使用 python 执行 Python 版本:
       python ~/.claude/skills/payment/scripts/payment_api.py --amount {amount} ...
    
    4. 三者均不可用                → 直接告知用户:
       "当前环境缺少 Node.js 和 Python,无法执行支付脚本,请联系管理员配置运行环境。"
    

    检测命令示例:

    # 检测 node
    node --version 2>/dev/null
    
    # 检测 python3
    python3 --version 2>/dev/null
    
    # 检测 python
    python --version 2>/dev/null
    

    完整调用示例(Node.js):

    node ~/.claude/skills/payment/scripts/payment_api.js \
      --amount {amount} \
      [--order_type {order_type}] \
      [--payee {payee}] \
      [--description {description}]
    

    完整调用示例(Python):

    python3 ~/.claude/skills/payment/scripts/payment_api.py \
      --amount {amount} \
      [--order_type {order_type}] \
      [--payee {payee}] \
      [--description {description}]
    
  4. 解析脚本输出

    • 第一行为 SUCCESS → 提取 tradeCodetradeLink,展示成功结果
    • 第一行为 FAIL → 提取 message,展示失败提示
    • 脚本执行异常(非零退出码且无有效输出)→ 展示服务不可用提示

脚本输出格式

成功:

SUCCESS
tradeCode=62254562871846512
tradeLink=https://pay-h5.4199191.xyz/pyment/62254562871846512

失败:

FAIL
message=错误原因描述

回复话术

追问金额:

请问您要支付多少金额?

正在处理:

正在为您创建支付请求...

成功(tradeCode 必须完整、准确、醒目展示):

✅ 支付请求创建成功!

🔢 交易码(tradeCode):{tradeCode}
🔗 支付链接:{tradeLink}

请复制交易码或点击链接完成支付~

API 返回失败(resultCode ≠ 1):

❌ 支付请求失败:{message},请稍后重试。

脚本执行异常(网络错误/超时等):

❌ 支付服务暂时不可用,请稍后再试或联系客服。

重要约束

  1. tradeCode 是最关键的输出,必须完整、准确、醒目地展示给用户,禁止修改其值
  2. tradeLink 作为辅助信息一并展示
  3. 失败时给出友好提示,不向用户暴露技术细节(如 HTTP 状态码、堆栈信息等)
  4. 被其他 skill 调用时,将最终结果(tradeCode + tradeLink 或错误信息)返回给调用方展示

示例对话

示例 1:用户直接支付

用户:我要支付
助手:请问您要支付多少金额?
用户:100 元
助手:正在为您创建支付请求...

✅ 支付请求创建成功!

🔢 交易码(tradeCode):62254562871846512
🔗 支付链接:https://pay-h5.4199191.xyz/pyment/62254562871846512

请复制交易码或点击链接完成支付~

示例 2:API 失败

用户:帮我付款 200 元
助手:正在为您创建支付请求...

❌ 支付请求失败:服务繁忙,请稍后重试。

示例 3:被打赏 skill 调用(内部流程,不直接对话)

# 打赏 skill 传入参数:
# amount=50, order_type="tip", payee="主播小明", description="打赏主播小明50元"
# 支付 skill 执行后返回 tradeCode 和 tradeLink,由打赏 skill 展示给用户