To clarify the scope of the scripts and justify the requested permissions (credential.read, credential.write, network.outbound), the following underlying operations are declared:
configs/config.bin. This file stores the userToken using base64 encoding. While base64 is not encryption, this mechanism acts as a lightweight local session cache to maintain payment state seamlessly across executions, without requiring external registry metadata, environment variables, or repeated user inputs.
encrypted_data and payment status decryption), the Python scripts locally invoke a bundled Node.js encryption tool.
Provide the following parameters strictly according to their defined formats:
payTo (string): The merchant's wallet address (the payTo recipient).
amount (integer): The transaction amount.
order_no (string): The order number from the calling skill's Phase 1.
question (string): The user's original question/request content from the calling skill.
encrypted_data (string): The encrypted data string from Phase 1.
description (string): The description of the resource to be purchased (e.g., answer of user's psychological counseling).
skill_name (string): The name of the calling skill (e.g., a proficient psychological counseling assistant).
resource_url (string): The URL identifying the service resource being paid for.
skill-version (string): The version of the skill. Currently set to 1.0.1.
Execute the script using the following bash command. Replace the placeholders <...> with the validated parameter values. Wrap parameters that may contain spaces in quotes.
python3 skills/jd-clawtip-payment-skill/scripts/payment_process.py <payTo> <amount> <order_no> <question> <encrypted_data> <description> <skill_name> <resource_url> <skill-version>
Analyze the standard output of the execution command and strictly follow these response protocols in the given order. Stop at the first matching step; do not continue to subsequent steps.
> If the output contains 支付凭证: , go to Step 2 (Obtain Credential) first to return the credential to the calling skill for decryption.
>
> However, if the output also contains 授权链接: or 鉴权链接: , you MUST preserve the full original output (including the authorization/authentication URL) in memory. This is because the credential may decrypt to a failed status, in which case you will need to fall back to Step 3 using the preserved authorization/authentication URL.
>
> In summary:
> 1. If 支付凭证: is present → go to Step 2 first.
> 2. After the calling skill decrypts the credential and reports the status:
> - If the decrypted status is 成功 → go to Step 4 Case A. Done.
> - If the decrypted status is 处理中 → go to Step 4 Case B. Done.
> - If the decrypted status is 失败 (FAIL) → go to Step 2.1 (Credential Decryption Fallback) to check whether a preserved 授权链接: or 鉴权链接: exists, and if so, fall back to Step 3.
> 3. If 支付凭证: is NOT present → evaluate Step 1, then Step 3 in order.
网络或系统异常:.
返回消息: , display the to the user as supplementary error context. Advise the user on the next steps. Stop here; do not proceed to Step 2.
支付凭证: .
is an encrypted blob; the actual payment status is encoded inside it. The script cannot determine the status on its own.
授权链接: or 鉴权链接: if present, and any 返回消息: if present). You may need it later in Step 2.1.
> 支付凭证:
将此支付凭证返回给调用方 skill,由调用方负责解密并根据其中的支付状态进行后续处理。
PAY_STATUS. Then proceed to Step 4 to route by decrypted status. If the status is 失败 (FAIL), Step 4 Case C will direct you to Step 2.1.
> This step is triggered only when the calling skill decrypts the credential and the resulting status is 失败 (FAIL).
PAY_STATUS: FAIL (or equivalent 失败 status) after decrypting the credential from Step 2.
#### Case A: Preserved output contains 授权链接:
授权链接 was present in the original output but was deferred in favor of credential processing.
.
#### Case B: Preserved output contains 鉴权链接:
鉴权链接 was present in the original output but was deferred.
.
#### Case C: Preserved output contains NEITHER 授权链接: NOR 鉴权链接:
返回消息: , display the to the user as supplementary failure context. If no specific error details were provided, inform the user that the payment failed and suggest they contact support or retry later.
> ⚠️ PREREQUISITE CHECK: This step is evaluated in two scenarios:
> 1. The original script output does NOT contain 支付凭证: at all.
> 2. You were directed here from Step 2.1 after a credential decryption failure with a preserved authorization/authentication URL.
支付状态: 失败 ← REQUIRED (exact match)
授权链接: ← REQUIRED
支付凭证: ← REQUIRED
PAY_STATUS: FAIL after credential decryption, and the preserved original output contains 授权链接: .
to the user as the official authorization link. Additionally, if the output (or preserved output) contains 返回消息: , display the to the user as supplementary context.
{clawtip_id} from the authorization URL (the clawtipId query parameter, e.g., ...?clawtipId={clawtip_id}).
scheduled task to query the user's registration status:
查询token注册状态 {clawtip_id} or query token register status {clawtip_id}.
jd-clawtip-payment user token register status {clawtip_id}).
查询token注册状态 before starting the new one.
jd-clawtip-payment user token register status {clawtip_id}。当用户需要授权,并创建了授权任务后,需要显示提示用户可以说当用户扫码完成授权后,可以说我已授权或我已完成授权以继续之前的流程
支付状态: 处理中 ← REQUIRED (exact match)
鉴权链接: ← REQUIRED
支付凭证: ← REQUIRED
PAY_STATUS: FAIL after credential decryption, and the preserved original output contains 鉴权链接: .
to the user as the official authentication link. Additionally, if the output (or preserved output) contains 返回消息: , display the to the user as supplementary context.
> Stop here if Step 3 matched; do not proceed to Step 4.
After the calling skill decrypts the credential and reports the status, follow the corresponding case:
Payment Success Info:
FAIL).
When the user explicitly requests to create a token with a phrase like 创建token xxx or create token xxx, execute the following command.
Provide the following parameters strictly according to their defined formats:
user_token (string): the user's token provided by xxx of 创建token xxx .
python3 skills/jd-clawtip-payment-skill/scripts/create_token.py <user_token>
You should check and cancel the running scheduled task about 查询token注册状态 if it is running (named jd-clawtip-payment user token register status ${device_id}). The device_id is a flexible value.
When the user explicitly requests to query the user register status with a phrase like 查询token注册状态 xxx or query token register status xxx, or 我已注册, execute the following command.
Provide the following parameter:
device_id (string): The user's device ID.
python3 skills/jd-clawtip-payment-skill/scripts/check_register_status.py <device_id>
Analyze the standard output of the execution command and strictly follow these response protocols:
Status: processing.
Status: successful.
查询token注册状态 if it is running (named jd-clawtip-payment user token register status ${device_id}). The device_id is a flexible value.
共 1 个版本