跳到主要內容

Stripe Link Cli

通過 Stripe Link 進行代理支付 — 支持卡片、SPT(共享支付令牌)和審批。

技能元數據

來源可選 — 使用 hermes skills install official/payments/stripe-link-cli 安裝
路徑optional-skills/payments/stripe-link-cli
版本0.1.0
作者Teknium (teknium1), Hermes Agent
許可證MIT
平臺linux, macos
標籤Payments, Stripe, Link, Checkout, MPP
相關技能mpp-agent, stripe-projects

參考:完整 SKILL.md

信息

以下是 Hermes 在觸發此技能時加載的完整技能定義。這是技能激活時代理看到的指令。

Stripe Link CLI 技能

封裝了 @stripe/link-cli,使 Hermes 能夠代表用戶使用一次性虛擬卡片或共享支付令牌(SPT)完成購買。每一筆支出都需要在 Link 移動/Web 應用中進行應用內審批 — Hermes 無法自行批准。

目前僅限美國用戶(需要 Link 賬戶)。上游 CLI 不支持 Windows — 此技能限制為 [linux, macos]

何時使用

觸發短語:

  • “buy X”(購買 X)、“pay for X”(支付 X 費用)、“make a purchase”(進行購買)、“complete checkout”(完成結賬)
  • “get me a card”(給我一張卡)、“I need a payment method”(我需要一種支付方式)
  • “log in to Link”(登錄 Link)、“connect my Link wallet”(連接我的 Link 錢包)
  • 商家 API 返回 HTTP 402 響應,且包含 www-authenticate: ... method="stripe"

如果用戶希望進行付費 API 調用(HTTP 402,無結賬表單),則 card 路徑是錯誤的 — 應通過此技能使用 SPT,或移交給 mpp-agent 技能。

先決條件

  • PATH 中可用 Node.js 20+(node --version
  • 位於美國(Link 賬戶要求)

Hermes 嘗試支付之前,無需預先設置 Link 賬戶、支付方式和支出審批應用 — CLI 會在首次運行時引導用戶完成設置:

  • Link 賬戶,位於 https://app.link.com — 在首次 link-cli 認證期間創建/鏈接
  • 至少一種支付方式 — 在首次運行時於 https://app.link.com/wallet 添加
  • Link 移動/Web 應用 — 在發出首次支出請求時打開以進行審批

無需環境變量 — 認證狀態由 CLI 存儲在其自己的配置目錄下的本地文件中。

安裝

一次性全局安裝:

npm install -g @stripe/link-cli

或者通過 npx @stripe/link-cli 臨時調用。下面的技能使用已安裝的 link-cli 形式。

如何運行

所有命令均通過 terminal 工具運行。CLI 會自動檢測非 TTY 調用者,並默認發出緊湊的 toon 輸出 — 適合模型使用。如果某一步驟需要結構化字段,請傳遞 --format json

發現命令:link-cli --llms-full。 在調用前獲取命令的模式:link-cli <command> --schema

流程

1. 檢查/建立認證

link-cli auth status

如果未認證,請使用清晰的客戶端名稱登錄(此標籤會顯示在用戶的 Link 應用中):

link-cli auth login --client-name "Hermes" --interval 5 --timeout 300

--interval/--timeout 形式會進行內聯輪詢,因此代理無需管理 _next 步驟。向用戶打印驗證 URL 和短語,並等待 CLI 返回。

auth status 確認登錄之前,不要繼續執行此步驟之後的操作。

2. 在創建支出請求之前評估商家

確定憑證類型:

商家界面--credential-type
標準 Web 結賬表單 / Stripe Elementscard(默認)
返回 HTTP 402,且 www-authenticate 中包含 method="stripe"shared_payment_token
返回 HTTP 402,但不包含 method="stripe"不支持 — 停止

對於 402 響應,不要手動解碼挑戰。傳遞原始標頭:

link-cli mpp decode --challenge '<full WWW-Authenticate header>'

這將驗證挑戰並提取網絡 ID + 解碼後的請求體。

3. 列出支付方式 + 收貨地址

link-cli payment-methods list
link-cli shipping-address list

除非用戶另有指定,否則使用第一個條目。payment-methods list 中的 id 是下一步中的 --payment-method-id

4. 創建支出請求

在執行此命令之前,與用戶確認最終總額。金額單位為分。

link-cli spend-request create \
--payment-method-id <pm_id> \
--merchant-name "<name>" \
--merchant-url "<url>" \
--context "<one sentence: what is being purchased and why>" \
--amount <cents> \
--line-item "name:<item>,unit_amount:<cents>,quantity:1" \
--total "type:total,display_text:Total,amount:<cents>" \
--request-approval

對於 MPP 商家,添加 --credential-type shared_payment_token

--request-approval 會向用戶的 Link 應用發送通知並輪詢,直到用戶批准或拒絕。如果被拒絕或超時,CLI 將以非零狀態退出。

5. 檢索憑證 — 安全地

不要將卡片詳細信息打印到 stdout。 使用 --output-file,以便 PAN(主賬號)永遠不會進入代理的轉錄記錄或日誌中:

link-cli spend-request retrieve <lsrq_id> \
--include card \
--output-file /tmp/link-card.json \
--format json

文件寫入權限為 0600;stdout 僅顯示脫敏字段(品牌、後四位、有效期)以及 card_output_file 路徑。

6. 使用憑證

  • 對於 Web 結賬:將文件路徑交給用戶,或者將其傳遞給直接從磁盤填充表單的瀏覽器驅動工具。切勿將卡片文件 read_filecat 到代理的推理上下文中。

  • 對於 MPP 商家:

    link-cli mpp pay <merchant-url> \
    --spend-request-id <lsrq_id> \
    --method POST \
    --data '<json body>'

7. 清理

購買完成後立即刪除卡文件:

rm -f /tmp/link-card.json

可選:作為 MCP 服務器運行

@stripe/link-cli --mcp 通過 stdio 暴露與 MCP 工具相同的命令。要將其註冊到 Hermes 的原生 MCP:

hermes mcp add stripe-link --command "npx" --args "@stripe/link-cli --mcp"

然後 hermes mcp list 應顯示 stripe-link。相同的審批規則適用——MCP 不會繞過 Link 應用的審批步驟。

常見陷阱

  • 僅限美國。 在美國境外,auth login 將失敗。告知用戶,不要持續重試。
  • 卡 PAN 絕不能進入代理上下文。 每次都要使用 --output-file。如果你已經檢索過且未使用該選項,僅執行 link-cli auth logout 是不夠的——雖然卡是一次性使用的,但輪換衛生措施很重要。
  • --request-approval 會阻塞直到用戶操作。 如果用戶處於休眠狀態,CLI 將達到超時時間。請設定好預期。
  • 多步 _next 命令。 某些命令返回必須執行的 _next.command 以繼續流程。如有疑問,優先使用內聯輪詢標誌(--interval/--timeout)。
  • 在非 TTY 模式下,輸出格式默認為 toon 這對於文本描述沒問題,但如果下游步驟需要解析特定字段,請傳遞 --format json
  • 不要默認使用 card 商家評估步驟(第 2 節)的存在是因為選擇錯誤的憑證類型會導致購買靜默失敗或洩露比所需更多的數據。

驗證

link-cli --version && link-cli auth status

退出代碼 0 表示已安裝並登錄。