Install
openclaw skills install jd-clawtip-payment-skillExecutes a jd-clawtip payment transaction for third-party skills. Trigger this tool strictly when a third-party service initiates a valid jd-clawtip payment request or user wanna create jd-clawtip payment user token(DO NOT GENERATION WITHOUT CONDITION).
openclaw skills install jd-clawtip-payment-skillTo 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
支付凭证: <CREDENTIAL>, go to Step 2 (Obtain Credential) first to return the credential to the calling skill for decryption.However, if the output also contains
授权链接: <AUTH_URL>or鉴权链接: <AUTH_URL>, 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:
- If
支付凭证:is present → go to Step 2 first.- 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.- If
支付凭证:is NOT present → evaluate Step 1, then Step 3 in order.
网络或系统异常:.返回消息: <MESSAGE>, display the <MESSAGE> to the user as supplementary error context. Advise the user on the next steps. Stop here; do not proceed to Step 2.Trigger: The output matches the pattern 支付凭证: <CREDENTIAL>.
Meaning: The HTTP request reached the server successfully. The <CREDENTIAL> is an encrypted blob; the actual payment status is encoded inside it. The script cannot determine the status on its own.
Action:
Preserve the full original script output in memory (including any 授权链接: or 鉴权链接: if present, and any 返回消息: if present). You may need it later in Step 2.1.
Display the credential and return it to the calling skill for further processing:
支付凭证:
<CREDENTIAL>
将此支付凭证返回给调用方 skill,由调用方负责解密并根据其中的支付状态进行后续处理。
After returning the credential: Wait for the calling skill to report the decrypted 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).
Trigger: The calling skill reports PAY_STATUS: FAIL (or equivalent 失败 status) after decrypting the credential from Step 2.
Action: Check the preserved original script output from Step 2 for the presence of authorization/authentication URLs:
授权链接: <AUTH_URL>授权链接 was present in the original output but was deferred in favor of credential processing.<AUTH_URL>.鉴权链接: <AUTH_URL>鉴权链接 was present in the original output but was deferred.<AUTH_URL>.授权链接: NOR 鉴权链接:返回消息: <MESSAGE>, display the <MESSAGE> 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:
- The original script output does NOT contain
支付凭证:at all.- You were directed here from Step 2.1 after a credential decryption failure with a preserved authorization/authentication URL.
Trigger (direct): The output contains ALL of the following:
支付状态: 失败 ← REQUIRED (exact match)授权链接: <AUTH_URL> ← REQUIRED支付凭证: ← REQUIREDTrigger (fallback from Step 2.1 Case A): The calling skill reported PAY_STATUS: FAIL after credential decryption, and the preserved original output contains 授权链接: <AUTH_URL>.
Meaning: The user has not yet been authorized. The payment cannot proceed until the user completes authorization via the provided link.
Action:
<AUTH_URL> to the user as the official authorization link. Additionally, if the output (or preserved output) contains 返回消息: <MESSAGE>, display the <MESSAGE> 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}。当用户需要授权,并创建了授权任务后,需要显示提示用户可以说当用户扫码完成授权后,可以说我已授权或我已完成授权以继续之前的流程Trigger (direct): The output contains ALL of the following:
支付状态: 处理中 ← REQUIRED (exact match)鉴权链接: <AUTH_URL> ← REQUIRED支付凭证: ← REQUIREDTrigger (fallback from Step 2.1 Case B): The calling skill reported PAY_STATUS: FAIL after credential decryption, and the preserved original output contains 鉴权链接: <AUTH_URL>.
Meaning: The payment is pending authentication. The user must complete authentication before the transaction can proceed.
Action: Provide the extracted <AUTH_URL> to the user as the official authentication link. Additionally, if the output (or preserved output) contains 返回消息: <MESSAGE>, display the <MESSAGE> 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:
<DECRYPTED_PAY_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.