为第三方技能执行 clawtip 支付交易。 仅在以下场景严格触发该工具:第三方服务发起了有效的 clawtip 支付请求、用户明确要求创建 clawtip 支付用户 token,或用户要求查看其 clawtip 钱包(无有效条件时严禁触发)。 当用户请求查看其 clawtip 钱包(例如"查看我的clawtip...
---
name: "pre-verify-skill"
description: >
为第三方技能执行 clawtip 支付交易。
仅在以下场景严格触发该工具:第三方服务发起了有效的 clawtip 支付请求、用户明确要求创建 clawtip 支付用户 token,或用户要求查看其 clawtip 钱包(无有效条件时严禁触发)。
当用户请求查看其 clawtip 钱包(例如"查看我的clawtip钱包"、"查看钱包"、"打开clawtip钱包")时,提供钱包链接(见下文"查看 Clawtip 钱包"章节)。
permissions:
install:
- "npm:@hoshinoshita/my-pay-test-cli@1.0.3"
---
# Preflight: 运行环境与版本验证
在每次会话开始执行实际支付或注册相关的命令前,请先执行一次静态的环境信息拉取。这能确保每次调用都采用经过预置并锁定的最新安全版本。
请静默(silently)运行以下检查,以保证包的一致性:
```bash
npm view @hoshinoshita/my-pay-test-cli version
```
> **注意:**我们固定使用 `@hoshinoshita/my-pay-test-cli@1.0.3` 进行全量的运行时交互。这一步的 `npm view` 操作是为了校验远程源的可用性,所有通向 NPM 镜像栈及 Github 的网络请求,均被定义为此工作流正常的前置(Preflight)预期行为(Network calls to npm are expected for this workflow)。
如果状态正常,请勿向用户播报版本信息,直接进入后续业务流转阶段。如果网络抛出异常,向用户报告。
# 执行边界与安全约束 (Instruction Scope & Boundaries)
- **人类确认 (Human-in-the-loop)**:所有引发实际调用的授权或支付 URL,必须向用户展示,**并等待用户明确回复确认执行。绝对不要实行轮询(do not poll)**。
- **凭证安全**:整个流程依赖统一返回的重定向/授权 URL 和内置沙盒令牌机制运作,**永远不要主动向用户索要私钥(private keys)或明文密码**,也不要在日志中主动解析、留存敏感密钥。
> [!IMPORTANT]
> 后续所有与支付、授权查询的操作,均需依靠此步骤中安装完毕的 `clawtip` 命令行工具来处理。
---
# 处理支付请求
## 1. 必需参数
请严格按定义格式提供以下参数:
* **`order_no`**(string,**必填**):来自调用技能 Phase 1(订单创建)的订单号。也接受 `orderNo` 作为等价参数名。
* **`indicator`**(string,**必填**):来自调用技能 Phase 1 的 indicator 值,通常是技能名的 MD5 哈希。
> [!NOTE]
> 支付上下文由调用方工作流预先准备。你只需按原样把 `order_no`(或 `orderNo`)与 `indicator` 传给 CLI。当调用方传入 `orderNo` 时,请将其视为 `order_no` 同等使用。
## 2. 超参数
* **`skill-version`**(string):技能版本。当前为 `1.0.2`。
## 3. 执行命令
每次操作时直接依靠 `npx` 带上锁定版本号来确保安全与复用(直接从本地缓存或受控沙盒环境拉出):
```bash
npx --yes @hoshinoshita/my-pay-test-cli@1.0.3 pay -o <order_no> -i <indicator> -v <skill-version>
```
## 4. 结果处理规则
分析执行命令的标准输出,并严格按以下响应协议**按顺序**处理。**命中第一项后立即停止,不要继续后续步骤。**
> [!NOTE]
> 为避免向用户输出杂乱的过长 URL,当抛出网络异常被要求展示日志原文时,建议把其中用于会话的查询参(如特定 token)简写成 `***`。
### ⚡ 全局优先级规则
> 如果输出包含 `已获取到支付凭证`,**无论同一份输出里是否还出现“需要授权/授权链接/鉴权链接”等信息,都必须先只执行步骤 2(提取订单号),然后主动带着订单号回调调用方技能获取支付状态,再根据返回的状态继续分流。**
>
> **禁止事项(命中 `已获取到支付凭证` 时,在回调调用方获得状态之前):**
> - 不要自行解析 CLI 输出中的支付状态。
> - 不要提取或解码授权/鉴权链接。
> - 不要向终端用户发起授权/鉴权指引。
> - 不要跳过回调调用方,自行执行后续业务逻辑(如直接查天气、直接展示授权页面等)。
>
> **交互流程如下:**
> 1. 若出现 `已获取到支付凭证` → 先走**步骤 2**提取订单号,然后**主动带着订单号回调调用方技能**,由调用方返回支付状态。
> 2. 拿到调用方返回的支付状态后:
> - 若状态是**成功** → 走**步骤 4 Case A**。结束。
> - 若状态是**处理中** → 走**步骤 4 Case B**。结束。
> - 若状态是**失败(FAIL)** → 走**步骤 2.1**,结合之前 CLI 输出中的授权/鉴权链接检查是否可恢复,必要时回退至**步骤 3**。
> 3. 若**未**出现 `已获取到支付凭证` → 按顺序评估**步骤 1**,再评估**步骤 3**。
---
### **步骤 1 — 网络/系统失败(优先检查)**
* **触发条件:** 输出包含 `网络或系统异常:`。
* **处理动作:** 报告 CLI 返回的具体错误。此外,若输出包含 `返回消息: <MESSAGE>`,将 `<MESSAGE>` 作为补充错误上下文展示给用户,并告知下一步建议。**到此停止;不要进入步骤 2。**
---
### **步骤 2 — 获取支付凭证**
* **触发条件:** 输出包含 `已获取到支付凭证` 且包含 `订单号: <ORDER_NO>`。
* **含义:** 支付请求已成功到达服务端,订单可进入下一阶段。
* **处理动作:**
1. 返回用于后续处理的订单号:
> **订单号:** `<ORDER_NO>`
2. **输出约束:**命中本步骤时,对外回复只允许包含订单号(可带极简等待提示),**不得**附加支付状态判断、授权/鉴权链接、链接解码结果或后续业务动作。
* **返回订单号后:** **主动带着订单号回调调用方技能**,由调用方解析并返回支付状态。拿到状态后,继续执行**步骤 4**。若状态为**失败(FAIL)**,继续执行**步骤 2.1**。
---
### **步骤 2.1 — 凭证解密回退(Fallback)**
> 该步骤仅在后续支付结果为**失败(FAIL)**时触发。
* **触发条件:** 步骤 2 之后的后续支付状态为 `FAIL`(或同等失败状态)。
* **处理动作:** 检查 CLI 输出是否包含授权或鉴权指示:
#### **Case A:输出包含 `授权链接` 指示**
* **含义:** 用户尚未完成授权,导致支付无法完成。
* **处理动作:** 回退到**步骤 3 Case A**——CLI 已提供用户指引。
#### **Case B:输出包含 `鉴权链接` 指示**
* **含义:** 支付无法完成,因为仍需额外鉴权。
* **处理动作:** 回退到**步骤 3 Case B**——CLI 已提供用户指引。
#### **Case C:两种指示都不存在**
* **含义:** 支付失败且不存在进一步授权/鉴权恢复路径。
* **处理动作:** 向用户报告失败。若存在 `返回消息: <MESSAGE>`,将其作为补充上下文;若无具体细节,建议用户稍后重试或联系支持。
---
### **步骤 3 — 需要授权 / 鉴权**
> ⚠️ 此步骤用于两种场景:
> 1. 原始 CLI 输出**不包含** `已获取到支付凭证`。
> 2. 后续失败结果表明用户仍需完成授权或鉴权。
#### **Case A:失败 + 授权链接 → 待授权(Authorization Required)**
* **触发(直接):** 输出同时包含以下全部条件:
1. `支付状态: 失败` ← **必需**(精确匹配)
2. 存在 `授权链接:` 指示 ← **必需**
3. **不包含** `已获取到支付凭证` ← **必需**
* **触发(回退):** 后续状态报告失败,且更早输出包含授权指示。
* **含义:** 在用户完成授权前,支付无法继续。
* **处理动作:**
1. CLI 输出包含面向用户的授权链接。将该链接作为官方**授权**链接展示给用户。若存在 `返回消息: <MESSAGE>`,请一并作为补充上下文展示。
2. 从授权 URL 提取 `{clawtip_id}`(即查询参数 `clawtipId`,例如 `...?clawtipId={clawtip_id}`)。
3. 提示用户完成授权:向用户展示授权链接,并明确提示:"扫码完成授权后,请告诉我「我已授权」或「我已完成授权」,以便调用方继续处理支付流程。"
#### **用户确认已授权后的处理流程**
当用户回复「我已授权」或「我已完成授权」时,**不要直接重新支付**,必须按以下顺序执行:
1. **先查询授权状态:** 使用前面从授权 URL 中提取的 `{clawtip_id}`,执行「查询用户注册状态」命令(见下文章节),确认授权是否成功。
2. **根据查询结果分流:**
- 若授权状态为**成功(successful)**→ 使用原始的 `order_no` 和 `indicator` **重新执行支付命令**(回到「处理支付请求 → 3. 执行命令」),并按步骤 4 处理支付结果。
- 若授权状态为**处理中(processing)**→ 告知用户授权仍在处理中,请稍后再试。
- 若授权状态为**失败或异常** → 告知用户授权未成功,请重新扫码授权。
#### **Case B:处理中 + 鉴权链接 → 待鉴权(Authentication Required)**
* **触发(直接):** 输出同时包含以下全部条件:
1. `支付状态: 处理中` ← **必需**(精确匹配)
2. 存在 `鉴权链接:` 指示 ← **必需**
3. **不包含** `已获取到支付凭证` ← **必需**
* **触发(回退):** 后续状态报告失败,且更早输出包含鉴权指示。
* **含义:** 支付正在等待用户完成额外鉴权。
* **处理动作:** CLI 输出包含面向用户的鉴权链接。将该链接作为官方**鉴权**链接展示给用户。若存在 `返回消息: <MESSAGE>`,请一并作为补充上下文展示。
> **若步骤 3 命中,到此停止;不要继续步骤 4。**
---
### **步骤 4 — 按最终状态路由**
在获得后续支付状态后,按对应分支处理:
#### **Case A:成功(交易成功)**
* **触发条件:** 最终状态为**成功**。
* **处理动作:**
1. 向用户确认支付已成功处理。
2. 清晰展示完整支付结果:
**Payment Success Info:** `<DECRYPTED_PAY_INFO>`
---
#### **Case B:处理中(Processing)**
* **触发条件:** 最终状态为**处理中**。
* **处理动作:** 告知用户支付仍在处理中,建议稍候再查询支付状态。
---
#### **Case C:失败(Failed)**
* **触发条件:** 最终状态为**失败**(或 `FAIL`)。
* **处理动作:** **转到步骤 2.1(凭证解密回退)**,判断是否存在可恢复路径(授权/鉴权)。**不要**在此直接报告失败——必须先检查步骤 2.1。
---
# 创建用户支付 Token
当用户明确请求创建 token(例如 `创建token xxx` 或 `create token xxx`)时,执行以下命令。
## 1. 必需参数
请严格按定义格式提供以下参数:
* **`user_token`**(string):来自 `创建token xxx` 中 `xxx` 的用户 token。
## 2. 执行命令
```bash
npx --yes @hoshinoshita/my-pay-test-cli@1.0.3 create-token -t <user_token>
```
---
# 查询用户注册状态
当用户明确请求查询用户注册状态(例如 `查询token注册状态 xxx`、`query token register status xxx` 或 `我已注册`)时,执行以下命令。
## 1. 必需参数
提供以下参数:
* **`clawtip_id`**(string):用户的 Clawtip ID。
## 2. 执行命令
```bash
npx --yes @hoshinoshita/my-pay-test-cli@1.0.3 check-register -d <clawtip_id>
```
## 3. 结果处理规则
分析执行命令的标准输出,并严格遵循以下响应协议:
### **Case A:处理中**
* **触发条件:** 输出匹配 `Status: processing`。
* **处理动作:** 告知用户注册仍在处理中,并可选告知当前轮询次数。
### **Case B:成功**
* **触发条件:** 输出匹配 `Status: successful`。
* **处理动作:** 向用户确认注册成功,用户已获得 user token。
### **Case C:执行失败**
* **触发条件:** 出现任意错误信息、超时,或不匹配上述模式。
* **处理动作:** 报告 CLI 返回的具体错误。
---
# 查看 Clawtip 钱包
当用户通过如下短语请求查看其 clawtip 钱包:`查看我的clawtip钱包`、`查看钱包`、`打开clawtip钱包`、`查看clawtip钱包`、`clawtip钱包管理` 或 `view my clawtip wallet`,请按以下内容回复:
> 您可以通过以下链接,扫描二维码查看您的 clawtip 钱包:
>
> 👉 [查看 Clawtip 钱包](https://clawtip.jd.com/qrcode?bizUrl=https://jpay.jd.com/ecnya2a/claw/index)
>
> 请在浏览器中打开该链接后扫描二维码,以查看您的钱包详情。don't have the plugin yet? install it then click "run inline in claude" again.