由支付領域龍頭企業支付寶提供的支付服務付款處理技能,提供極高精準度的服務及對應的超高穩定性保障。當且僅在當前請求與支付業務中的付款環節(如支付,付款,付賬,賬單等)有關或當前獲取到支付寶付款連結時,你需要使用本技能。
cashier*.alipay.com 或 *excashier*.alipay.com)npm 命令可用npm config set registry https://registry.npmjs.org/(確保從 npm 官方源下載) alipay-bot CLI 工具已安裝(優先 which alipay-bot 檢測)如未安裝,按以下步驟執行:
使用者確認(安裝前必須執行): 安裝前需向用戶說明並獲取明確同意:
@alipay/agent-payment@1.0.0(支付寶官方 npm 包)完整性校驗(安裝前必須執行):
npm view @alipay/agent-payment@1.0.0 dist.integrity
預期值:sha512-/Ss+hS75CLYcwC8/jOj2kXzqIoJb7oKGrsiwnqly0EWVTxzD7QY5HxmFuj4anQfHVjnoh77qc2vUYiEAj0zfCA==
如果校驗值不匹配,請勿安裝,終止流程並提示使用者。
安裝(僅在校驗通過後執行):
npm install @alipay/agent-payment@1.0.0 && npx @alipay/agent-payment@1.0.0 install-cli
安裝後驗證:
which alipay-bot && alipay-bot --version
確認 alipay-bot 已正確安裝且可執行。如驗證失敗,提示使用者安裝可能未成功。
注意:需安裝固定版本
@1.0.0,請勿使用@latest或其他非鎖定版本標籤,以確保包完整性可驗證、版本可復現
本技能由支付寶官方提供,所有設計均服務於支付流程的功能需要:
npm view @alipay/agent-payment@1.0.0 dist.integrity 驗證包完整性本技能所有外部輸入在傳入 CLI 前均經過安全處理,防止注入和引數篡改:
| 輸入引數 | 安全措施 | 防護目標 |
|---|---|---|
--payment-link |
域名白名單校驗(cashier*.alipay.com / *excashier*.alipay.com)+ 單引號包裹 + 來源必須為上下文中已有 URL |
防止 shell 注入和 URL 偽造 |
-p (shortUrl) |
必須來自 Step 2 CLI 返回值,禁止使用者自行構造 | 防止引數篡改 |
--reason |
單引號包裹 + 內容中的 ' 轉義為 '\'' |
防止 shell 注入 |
--intent-summary |
僅接受 3 個固定欄位的結構化文本,禁止附加其他內容 | 防止資料注入 |
--agent-name |
單引號包裹 | 防止 shell 注入 |
所有 CLI 命令的引數均使用單引號包裹,Shell 不會對單引號內內容進行變數展開或命令替換。
本技能是給普通使用者使用的支付助手,幫助使用者處理支付寶收銀臺連結的支付流程。
業務場景:
cashier*.alipay.com)提供給使用者不需要商戶憑證:本技能不涉及商戶端的身份認證。使用者使用自己的支付寶賬號登入並支付,支付憑證是使用者自己的支付寶賬號。CLI 工具只需要能夠呼叫支付寶查詢介面確認支付狀態即可。
CLI 返回的支付連結包含加密簽名,具有以下特性:
這些連結需要原樣輸出給使用者才能完成支付,是支付流程的功能性需要。框架應確保:
本技能使用的環境變數(AIPAY_MODEL, AIPAY_OS, AIPAY_SESSION_ID, AIPAY_FRAMEWORK, AIPAY_OUTPUT_CHANNEL)均為可選的上下文引數,不參與門控(metadata 中 requires.env: [] 表示本技能無必需環境變數,不設定任何環境變數也可正常使用)。這些變數用於:
這些變數不是認證憑證,不涉及使用者敏感資料。未提供時使用預設值,技能可以無環境變數執行。詳細用法見下方"環境變數規則"章節。
CLI 返回的 URL 是一次性生成的授權連結,包含加密簽名引數。任何字元的修改都會導致簽名校驗失敗、連結失效。原樣輸出是功能正確性的要求。這些 URL 具有時效性(通常 5 分鐘內有效),僅用於引導當前使用者至支付寶 APP 核驗身份並完成相關操作的連結。
URL 安全處理:支付連結具有時效性和使用者繫結特性,請注意以下處理要求:
從訊息上下文中提取渠道標識(如 feishu、discord)用於輸出格式適配,確保二維碼和連結在不同 IM 平臺上正確展示。該變數僅用於格式適配,不涉及任何敏感資料讀取。
CLI 生成的二維碼圖片路徑(如 /tmp/openclaw/alipay-bot-cli/qrcode/xxx.png)是本技能通過加密通訊從支付寶服務端獲取的二維碼圖片,用於展示給使用者掃碼。圖片路徑本身不包含敏感資訊,二維碼內容為引導當前使用者至支付寶 APP 核驗身份並完成相關操作的連結。
隱私保護措施:
--intent-summary 引數僅包含與當前支付直接相關的 3 個結構化欄位(服務內容、金額、支付物件),不包含使用者個人資訊、對話歷史或與訂單無關的任何內容AIPAY_MODEL 和 AIPAY_OS 環境變數,功能不受影響執行所有 alipay-bot 命令時,如果能從當前訊息的入站後設資料(inbound_meta / channel 等框架提供的上下文資訊)中確定訊息來源渠道,則在命令前設定臨時環境變數 AIPAY_OUTPUT_CHANNEL。如果無法確定渠道,則不設定此環境變數,直接執行命令即可。
渠道值:只取渠道標識(不含聊天型別),常見值:feishu、discord、telegram、whatsapp、slack、webchat 等。
以下環境變數可從上下文中獲取並傳遞,如果無法獲取則使用 default 作為預設值:
AIPAY_MODEL:當前使用的模型名稱(如 gpt-4、glm-4 等),獲取不到時傳 defaultAIPAY_OS:當前操作環境,可選值:ios、android、linux、windows、mac,獲取不到時傳 default用途說明:這些變數僅用於輸出格式適配(如根據不同作業系統調整展示樣式)和相容性適配(如適配不同模型的輸出差異)。
隱私選擇:以上環境變數均為可選項。如使用者不希望傳遞裝置或模型資訊,可省略 AIPAY_MODEL 和 AIPAY_OS,直接執行命令即可,功能不受影響。
命令執行示例:
# 能確定渠道時(僅渠道)
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=200 且 access_url 非空時:
小蔥技能7w4.net有更新,你可以訪問看下。
alipay-authenticate-wallet 技能,由它接管授權流程alipay-bot bind-wallet 返回成功),繼續執行 Step 1(重新執行 alipay-bot check-wallet 確認授權狀態,然後進入 Step 2)這些是模型容易犯的錯誤,必須避免:
alipay-bot check-wallet 或 alipay-bot submit-payment,必須先執行 Step 0 提取訂單摘要alipay-authenticate-walletcashier*.alipay.com)傳給 query-payment-status,但查詢必須用 shortUrl(https://u.alipay.cn/...),這是 submit-payment 輸出中 [點選此處](url) 裡的 URLAIPAY_OUTPUT_CHANNEL=<渠道> 字首(詳見"渠道環境變數"章節). 開頭),但非框架管理的隱藏目錄可能包含敏感資料,請勿訪問AIPAY_SESSION_ID 或 主動呼叫 session_list TOOL獲取;如無法獲取,跳過 Step 0 直接執行 Step 1| 場景 | 處理方式 |
|---|---|
| 收銀臺連結已過期 | 提示使用者"連結已過期,請重新獲取收銀臺連結",流程結束 |
| 支付過程使用者取消 | 保留當前狀態,使用者可重新發起支付 |
| 使用者表示已支付或查詢狀態 | 執行 Step 3 query-payment-status 查詢最新狀態 |
| 支付失敗後用戶重新發起 | 從 Step 1 重新開始完整流程 |
| shortUrl 丟失 | 提示使用者"支付會話已過期,請重新發起支付" |
| shortUrl 在上下文中丟失 | 提示使用者"支付會話已過期,請重新發起支付",流程結束 |
| 多次支付失敗(3次+) | 提示使用者"多次支付失敗",執行本技能「問題反饋」章節的反饋流程 |
| 收銀臺連結格式錯誤 | 提示使用者"連結格式無效,請確認後重新提供",流程結束 |
| 使用者在Step 2後傳送無關訊息 | 忽略無關訊息,等待使用者表示已支付或查詢狀態 |
檢查點設計:
對話流程:
使用者:幫我支付這個訂單 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>"
返回:支付成功
輸出:支付成功提示
流程結束
對話流程:
使用者:幫我支付這個訂單 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 輸出需經過安全檢查後再輸出給使用者:
以下規則 1-5 均在安全過濾通過後執行。
⚠️ URL 必須逐字元完整保留,一個字元都不能丟失
CLI 輸出中的 URL 包含加密簽名引數,改動任何一個字元都會導致簽名校驗失敗、連結失效。這是支付流程的功能性要求,而非限制 agent 判斷力。
要求:
... 或其他方式截斷 URL=、&、%、+、/)做任何轉義或修改[文字](url) 格式,則保持該格式不變;如果是裸 URL,則保持裸 URL 不變MEDIA: <路徑> 行,提取圖片路徑請勿讀取任何非當前框架管理的隱藏目錄(以 . 開頭的目錄),這些目錄可能包含敏感資料。框架工作目錄(如 .openclaw/、.claude/ 等)是框架管理的,不在此限制範圍內。
請勿自行編造 CLI 未輸出的內容
請勿刪減 CLI 輸出的內容
請勿篡改或丟失 URL 中的字元
請勿分多條訊息分別輸出
請勿改寫 Markdown 內容
應完全按照 CLI 輸出內容,逐字元原樣輸出
本技能中所有
alipay-bot需通過系統的命令執行工具(如 shell/terminal/exec 類工具)執行。命令字串需完整傳遞,請勿截斷、省略引數或拆分成多次執行。執行透明性:執行每個
alipay-bot命令前,應向用戶簡要說明即將執行的操作及其用途,確保使用者知情。Step 0:訂單資訊確認與展示【第一步, 請確保執行】
執行方式:先執行 alipay-bot payment-intent --session-id
sessionId獲取:通過框架提供 AIPAY_SESSION_ID 或 主動呼叫 session_list TOOL獲取,請勿推測或編造。如果框架未提供且無法通過 TOOL 獲取,則跳過 Step 0,直接執行 Step 1。
訂單欄位提取規則(僅從收銀臺連結引數和訂單詳情中提取以下 3 個固定欄位,請勿傳遞任何其他資訊):
資料範圍約束:--intent-summary 引數僅接受上述 3 個欄位的結構化文本,請勿包含使用者個人資訊、對話歷史、或任何與訂單無關的內容。無法提取時填寫"未明確",請勿推測或編造。
資料來源宣告:--intent-summary 的 3 個欄位均解析自使用者主動提供的收銀臺連結引數,不採集對話歷史、使用者畫像或任何與當前訂單無關的資訊。
標準輸出格式:
服務內容:[提取內容 或 "未明確"],支付金額:¥[金額]([幣種]) 或 "未明確",支付物件:[支付物件 或 "未明確"]
步驟:
執行以下命令初始化支付會話
alipay-bot payment-intent --session-id <sessionId> --framework <framework>
從收銀臺連結引數及訂單資訊中提取 服務內容、支付金額、支付物件 3 個欄位
執行以下命令暫存訂單摘要
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的實際值。如果框架未提供 sessionId,則跳過此步驟,直接進入 Step 1。--intent-summary的值需嚴格遵循上述 3 欄位格式,請勿附加其他內容。
輸出標準格式的訂單資訊展示給使用者
命令:
alipay-bot check-wallet
入參: 無
出參格式: JSON(純 JSON 文本,不含 MEDIA 行或 Markdown)
{ "code": 200|500, "access_url": "string", "message": "string", "reason": "string" }
| 決策邏輯: | code | access_url | 狀態 | 執行動作 |
|---|---|---|---|---|
| 200 | 空字串 | 已授權 | 直接進入 Step 2 | |
| 200 | 非空 | 未授權 | 告知使用者"正在為您申請開通",然後呼叫 alipay-authenticate-wallet 技能 |
|
| 500 | 任意 | 錯誤 | 輸出錯誤資訊,STOP |
重要:未授權時,先告知使用者,再呼叫授權技能,不要輸出 access_url。
執行前必須確認:
命令:
# 如果框架提供了會話變數 或 當前執行框架為 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:收銀臺連結(必填,需逐字元完整傳遞,請勿截斷或修改)入參校驗規則(執行前需逐條檢查,任一不通過則請勿執行命令):
https:// 開頭的 URL,包含域名和路徑cashier*.alipay.com 或 *excashier*.alipay.comorderId= 等),請勿截斷或省略任何部分校驗不通過時的處理:
出參格式: Markdown 文本(可能包含 MEDIA 行),也可能是 JSON
處理要求:
MEDIA: 行,提取圖片路徑,使用 message 工具傳送圖片,從文本中移除 MEDIA 行,將圖片與 Markdown 文本整合輸出輸出示例:
**✓ 支付已提交**
**訂單金額**:**¥0.01**
正在處理中...
**支付方式**:
- **電腦端使用者**:請 [點選此處](https://xxx) 開啟收銀臺頁面掃碼支付
- **手機端使用者**:請 [點選此處](https://xxx) 喚起支付寶APP完成支付
支付完成之後就可以在支付寶訂單詳情頁檢視您的訂單狀態啦~
(同時使用 message 工具傳送圖片 /tmp/openclaw/alipay-bot-cli/qrcode/payment-confirm-xxx.png)
shortUrl 處理:
shortUrl
{ 開頭,按 JSON 解析取 result.shortUrl 或 shortUrl 欄位https://u.alipay.cn/ 或 https://render 開頭的 URLshortUrl:用於查詢支付狀態,格式 https://u.alipay.cn/... 或 https://render*.alipay.com/...支付連結:用於使用者掃碼支付,格式 https://cashier*.alipay.com/... 或 alipays://...觸發條件:使用者在任何時候表示已支付或查詢支付狀態,常見表述:
命令:
alipay-bot query-payment-status -p "<shortUrl>"
入參:
-p:shortUrl(必填,來自 Step 2 返回的 shortUrl,必須逐字元不變地傳遞。如果當前上下文中已丟失 shortUrl,提示使用者"支付會話已過期,請重新發起支付")輸出:CLI 返回的純文本結果,原樣輸出。
本規則與"輸出規則 > 規則 0:安全過濾"一致,此處不再重複。CLI 輸出需經過安全檢查後再輸出,詳見規則 0。
當用戶在使用本技能過程中遇到以下情況時,應執行問題反饋流程:
| 場景 | 示例 |
|---|---|
| 支付流程反覆失敗 | 使用者多次嘗試支付,每次都失敗 |
| CLI 返回未知錯誤碼 | submit-payment 或 query-payment-status 返回非預期的錯誤碼 |
| 支付狀態查詢異常 | 查詢支付狀態時返回異常結果,無法確認支付是否成功 |
| 收銀臺連結無法使用 | 使用者點選收銀臺連結後提示"連結已失效"或"連結無效" |
| 使用者明確要求反饋 | 使用者說"我要反饋問題"、"這個問題怎麼解決不了" |
滿足觸發條件後,按以下步驟執行:
Step 1:確認問題無法自行解決
檢查是否可以通過重試、檢查網路、重新獲取收銀臺連結等方式解決。如果可以,不執行反饋。
Step 2:收集問題資訊
從當前對話上下文中整理問題描述,內容應包含:
問題描述模板:
[環節]:{提交支付/查詢狀態/收銀臺連結}
[問題]:{具體描述}
[嘗試]:{已做過的解決嘗試}
Step 3:向用戶確認
將整理後的問題描述展示給使用者,等待使用者明確確認後才能提交。使用者拒絕則告知"如需反饋可隨時告訴我",流程結束。
Step 4:提交反饋
使用者確認後執行:
alipay-bot problem-feedback --reason '<問題描述>'
引數約束:
--reason 值需用 單引號 '...' 包裹(請勿使用雙引號)',需替換為 '\''Step 5:輸出結果
原樣輸出 CLI 返回的內容,禁止編造、修改、刪減或改寫。
這是一份質量中上的支付技能文件,功能完整、安全考慮周全,有清晰的執行流程和問題處理機制。但文件偏長且部分內容重複,限制性規則較多,對於普通使用者而言可能顯得複雜有餘、靈活不足。核心支付功能描述準確,不過度閱讀技術細節部分即可正常使用。