upgrade-stripe:Stripe API 與 SDK 升級指引 Skill

前言

Stripe 在 2024 年起採用按月發佈的 API 版本命名(如 2026-09-30.endive),服務端 SDK、Stripe.js、移動端 SDK 與 Webhook 各自有版本規則,且強類型語言 SDK 與動態語言在「能否覆蓋 API 版本」上行爲不同。升級時若只改 npm 包版本、不覈對賬戶與 Webhook 上的 pin,或誤把 thin event 與 snapshot event 一併升級,容易在測試環境通過、生產環境因簽名或字段變更失敗。下面介紹 Stripe 官方倉庫中的 Agent Skill upgrade-stripe,用於在編碼助手場景下按文檔順序完成版本選擇與破壞性變更排查。

這是什麼

upgrade-stripe 是 Stripe 在 stripe/ai 倉庫中維護的 Agent Skill(SKILL.md 格式)。官方描述爲:指導升級 Stripe API 版本、Webhook 端點、服務端 SDK、Stripe.js 與移動端 SDK。

它解決的是「文檔分散、多組件聯動」的問題:同一集成裏可能同時存在客戶端 apiVersion、按請求覆蓋、Webhook / Event Destination 的 snapshot API 版本,以及 Java / Go / .NET 與 Ruby / Python / Node 不同的版本策略。Skill 把選型、對照 changelog、改配置與測試的順序寫進可被 Agent 執行的流程,而不是替代 API versioning、API upgrades 與 API changelog 原文。

核心功能

以下能力均來自官方 SKILL.md 與 officialskills.sh 說明。

選定目標 API 版本

  1. 若用戶已指定目標版本,以用戶指定爲準。
  2. 否則應通過可用文檔或工具查詢當前版本,例如 Stripe CLI 的 stripe docs /api/versioning,或在 API versioning 頁面查找以 “The current version is” 開頭的句子。
  3. Skill 內 bundled 回退版本爲 2026-09-30.endive(生成快照日期爲 2026-10-19);僅在無法訪問 docs.stripe.com 時使用,且超過約一個月未更新時可能已過時,不得猜測更新的版本號。

變更前需將目標版本與集成中所有 pin 對比:客戶端配置、按請求覆蓋、Webhook 端點。除非用戶明確要求,不得把 pin 降到更舊版本,也不得把穩定 pin 改爲 preview。已匹配目標的 pin 應報告爲未變更。須說明所選目標及來源;若無法在線覈實,應標明最新版本未驗證,不得聲稱集成已處於最新版。

Webhook 與事件目的地

審查時需區分 snapshot events 與 thin events。Thin event 載荷未綁定 API 版本,變更賬戶 API 版本時無需升級對應目的地。通過 API 拉取完整 event 或關聯資源時仍受 API 版本約束。

對 v2 snapshot 類目的地(含 Webhook、Amazon EventBridge、Azure Event Grid),需檢查 snapshot_api_version;若與目標不一致,因創建後不可修改,應新建並測試替代目的地。替換 Webhook 時需保存新 signing secret,並在切換期間讓處理器同時接受新舊 secret;切換完成後禁用或刪除舊目的地以避免重複投遞。Thin event 目的地保持不變。

服務端 SDK

  • 動態類型語言(Ruby、Python、PHP、Node.js):可在全局配置或單次請求中設置 API 版本;curl 測試時使用 Stripe-Version 頭,示例中的 bundled 版本應替換爲所選目標。
  • 強類型語言(Java、Go、.NET):SDK 發佈與固定 API 版本綁定,不應在代碼中強行覆蓋爲與 SDK 不符的版本;應選用面向目標 API 版本的 SDK 發佈。Preview 目標需各語言對應的 beta SDK,見 SDK versioning。

最佳實踐是在代碼中顯式聲明集成的 API 版本,而非僅依賴賬戶默認版本。

Stripe.js 與移動端

  • Stripe.js 採用 evergreen 模型,大版本(如 Acacia、Basil、Endive)約每半年發佈;腳本加載示例爲 https://js.stripe.com/endive/stripe.js,npm 包 @stripe/stripe-js 的大版本與 Stripe.js 大版本對應。每個 Stripe.js 大版本與固定 API 版本配對(例如 Endive 對應 2026-09-30.endive),不可覆蓋該關聯。從 v3 遷移時官方建議先識別當前 API 版本、查閱 changelog,再考慮在切換 Stripe.js 大版本前逐步提升 API 版本;v3 仍長期支持。
  • iOS / Android SDK 使用語義化版本(MAJOR.MINOR.PATCH);React Native SDK 使用 0.x.y,minor 可能含破壞性變更。移動端 SDK 在文檔未另行說明時,可與後端任意 API 版本配合。

升級檢查清單(摘要)

官方清單包括:查閱 changelog 與 upgrades 指南;升級服務端 SDK 包;更新客戶端 apiVersion;用 Stripe-Version 頭對新版本做集成測試;按上文處理 snapshot 類 Webhook / Event Destination;按需更新 Stripe.js 與移動端 SDK 等。完整步驟見 Skill 原文。

安裝與啓用

在支持 Agent Skills 的環境中,可通過官方列出的命令安裝整個 stripe/ai 倉庫中的單個 skill:

npx skills add https://github.com/stripe/ai --skill upgrade-stripe

也可將 Skill 目錄鏈接交給編碼助手安裝:https://github.com/stripe/ai/tree/main/skills/upgrade-stripe。

資料中未區分 Cursor、Codex CLI、Claude Code 的安裝差異;以各產品對 npx skills add 或 SKILL.md 路徑的支持爲準。

典型用法

下列場景來自 officialskills.sh 的 “When to use it” 說明,與 Skill 能力一致:

  • 將 Node.js 應用 pin 到指定 Stripe API 版本(例如 2026-02-25.clover)。
  • 在正式切換前,用 Stripe-Version 請求頭對新 API 版本做試探性調用。
  • 事件結構發生破壞性變更後,遷移 Webhook 處理器(含新建 snapshot 目的地與雙 secret 過渡)。
  • 僅升級 Python 後端的 Stripe SDK 包,並覈對是否需同步修改 api_version 配置。
  • 結賬頁從 Stripe.js v3 切換到某一新大版本(如 Clover)時,對照 changelog 與 API / Stripe.js 配對關係。

動態語言顯式指定版本的寫法(示例中的版本號應替換爲你的目標版本):

import stripe
stripe.api_version = '2026-09-30.endive'
const stripe = require('stripe')('sk_test_xxx', {
  apiVersion: '2026-09-30.endive'
});

適用場景與注意

適合:維護 Stripe 集成的後端或全棧開發者;需要在一次對話裏系統梳理 API 版本、SDK、Stripe.js、Webhook snapshot 版本與測試順序的團隊;2026 年前後頻繁跟進 Stripe 月度 API 與半年度大版本變更時,用 Skill 約束 Agent 不猜測版本號、不降級 pin。

注意:

  • Skill 不能替代閱讀 API changelog;破壞性變更仍需人工判斷業務代碼影響。
  • bundled 回退版本 2026-09-30.endive 僅爲離線快照,生產選型應以 docs.stripe.com 或 CLI 查詢結果爲準。
  • 強類型 SDK 與 preview / beta 版本有額外約束,需按官方 SDK versioning 選包,不宜只改 HTTP 頭。
  • Webhook snapshot 目的地創建後不可改 snapshot_api_version,計劃升級時應預留新建端點與簽名密鑰輪換窗口。

結尾

upgrade-stripe 把 Stripe 多組件版本模型與官方升級清單編碼爲 Agent 可遵循的流程,適合在升級 SDK 或 API 大版本時減少漏改 Webhook pin 或誤升級 thin event 的風險。官方 Skill 地址:https://github.com/stripe/ai/tree/main/skills/upgrade-stripe。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜