关于 upgrade-stripe
upgrade-stripe 是指导 Stripe API 与相关 SDK 版本升级的技能,面向维护 Stripe 集成的开发者。它涵盖版本选择、变更审查、测试及 Webhook 和客户端版本检查。
主要功能
- 01确定目标 API 版本并说明来源
- 02比较集成中固定的 API 版本
- 03审查版本变更与迁移指导
- 04测试 API 版本变更
- 05检查 Webhook、Stripe.js 和移动 SDK 版本
适用场景
- 01升级 Stripe API 版本
- 02检查代码中的 API 版本配置
- 03在变更默认版本前测试请求
- 04规划 Webhook 目标与 SDK 的版本升级
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ fcakyon/ claude-codex-settings --skill upgrade-stripe安装后在 Claude Code 中输入/upgrade-stripe确认已加载。
详细介绍
升级 Stripe 版本
选择目标 API 版本
如果用户指定了目标 API 版本,请使用该版本。否则,请使用你能访问的任何文档或 Web 工具,在 docs.stripe.com 上查询当前版本,例如使用 Stripe CLI 运行 stripe docs /api/versioning。API 版本控制页面会在以“The current version is”开头的句子中说明当前版本。
内置的备用 API 版本:2026-08-26.dahlia。此值仅是本技能上次生成时(2026-10-01)的快照。版本标识符以 YYYY-MM-DD 格式的发布日期开头,新稳定版本每月发布一次,因此,发布日期早于一个月的备用版本可能已经过时。只有在无法访问 docs.stripe.com 时才使用它。切勿猜测更新的版本号。
进行更改前,请将目标版本与集成固定的每个 API 版本进行比较:客户端配置、单请求覆盖设置和 Webhook 端点。除非用户明确要求,否则不要将任何固定版本降级,也不要将稳定版本切换为预览版本。如果某个固定版本已与目标版本一致,请报告其未更改。说明所选目标版本及其来源。如果无法进行实时验证或无法获取验证结果,请说明最新版本尚未验证,不要声称集成使用的是最新版本。
检查 Webhook 端点和事件目标时,请区分快照事件和精简事件。精简事件的载荷没有版本,因此更改 API 版本时无需升级。用于检索完整事件或相关资源的 API 调用仍然有版本。
对于支持显式 API 版本覆盖的 SDK,请在客户端配置和单请求覆盖设置中使用所选目标版本。curl 测试请求头 Stripe-Version 中也应使用该版本。复制或运行示例之前,请将其中内置的 API 版本替换为所选目标版本。对于 Java、Go 和 .NET,请选择面向所选 API 版本的 SDK 版本,而不要覆盖 SDK 的固定版本。预览目标需要所有语言中与之匹配的 beta SDK 版本;请参阅 SDK 版本控制。
了解 Stripe API 版本控制
Stripe 使用基于日期的 API 版本(例如 2026-08-26.dahlia、2025-08-27.basil、2024-12-18.acacia)。你账户的 API 版本决定请求和响应的行为。
从 2024-09-30.acacia 版本开始,Stripe 每月发布一个不含破坏性更改的新 API 版本。每年两次,Stripe 会推出一个新的主要版本(例如 Basil),其 API 版本包含破坏性更改。你可以安全地升级到任何月度版本,无需更新代码。
更改类型
向后兼容的更改(无需更新代码):
- 新 API 资源
- 新的可选请求参数
- 现有响应中的新属性
- 不透明字符串长度的更改(例如对象 ID)
- 新 Webhook 事件类型
破坏性更改(需要更新代码):
- 字段重命名或移除
- 行为修改
- 端点或参数移除
请查看 API 变更日志,了解版本之间的所有更改。完整升级指南请参阅 API 升级。
服务端 SDK 版本控制
有关如何在代码中设置 API 版本的详情,请参阅为 SDK 设置 Stripe API 版本。
动态类型语言(Ruby、Python、PHP、Node.js)
这些 SDK 提供灵活的版本控制:
全局配置:
import stripe
stripe.api_version = '2026-08-26.dahlia'
Stripe.api_version = '2026-08-26.dahlia'
const stripe = require('stripe')('sk_test_xxx', {
apiVersion: '2026-08-26.dahlia'
});
单请求覆盖:
stripe.Customer.create(
email="[email protected]",
stripe_version='2026-08-26.dahlia'
)
强类型语言(Java、Go、.NET)
这些语言使用与 SDK 发布日期相匹配的固定 API 版本。对于强类型语言,不要设置其他 API 版本,因为响应对象可能与 SDK 中的强类型不匹配。请改为更新 SDK,使其面向新的 API 版本。
最佳实践
在代码中始终指定集成所针对的 API 版本,而不要依赖账户的默认 API 版本:
// Good: Explicit version
const stripe = require('stripe')('sk_test_xxx', {
apiVersion: '2026-08-26.dahlia'
});
// Avoid: Relying on account default
const stripe = require('stripe')('sk_test_xxx');
Stripe.js 版本管理
详情请参阅 Stripe.js 版本管理。
Stripe.js 采用常青模式,每年发布两次主要版本(Acacia、Basil、Clover、Dahlia)。
加载指定版本的 Stripe.js
通过脚本标签:
<script src="https://js.stripe.com/dahlia/stripe.js"></script>
通过 npm:
npm install @stripe/stripe-js
主要 npm 版本与特定 Stripe.js 版本相对应。
API 版本配对
每个 Stripe.js 版本都会自动与对应的 API 版本配对。例如:
- Dahlia Stripe.js 使用
2026-08-26.dahliaAPI - Acacia Stripe.js 使用
2024-12-18.acaciaAPI
无法覆盖此对应关系。
从 v3 迁移
- 确认代码中当前使用的 API 版本
- 查看变更日志,了解相关变更
- 考虑在切换 Stripe.js 版本前逐步更新 API 版本
- Stripe 将无限期继续支持 v3
移动 SDK 版本管理
详情请参阅 移动 SDK 版本管理。
iOS 和 Android SDK
两个平台都遵循语义化版本控制(MAJOR.MINOR.PATCH):
- MAJOR:会导致不兼容的 API 变更
- MINOR:新增功能(向后兼容)
- PATCH:错误修复(向后兼容)
新功能和修复仅针对最新的主要版本发布。请定期升级以获取改进。
React Native SDK
采用不同的版本模式(0.x.y 格式):
- 次要版本变更(x):包含不兼容变更和新功能
- 补丁更新(y):仅包含关键错误修复
后端兼容性
除非文档另有说明,所有移动 SDK 都适用于你在后端使用的任何 Stripe API 版本。
升级检查清单
- 查看 API 变更日志,了解当前版本与目标版本之间的变更
- 查看 API 升级指南,了解迁移指导
- 更新服务器端 SDK 软件包版本(例如,
npm update stripe、pip install --upgrade stripe) - 更新 Stripe 客户端初始化中的
apiVersion参数 - 使用
Stripe-Version标头,根据新 API 版本测试集成 - 对于接收快照事件的每个目标,检查其配置的 API 版本。对于 webhook 端点,请遵循 webhook 版本管理。对于每个 v2 快照事件目标(包括 webhook 端点、Amazon EventBridge 和 Azure Event Grid 目标),请检查 snapshot_api_version;如果它与目标版本不同,请创建并测试替代目标,因为创建后无法更改此版本。对于替代 webhook 端点,请保存新的签名密钥,并配置处理程序,以便在测试和切换期间同时接受两个密钥。切换完成后,请停用或删除旧目标,以避免重复投递。保持精简事件目标不变
- 如有需要,更新 Stripe.js 脚本标签或 npm 软件包版本
- 如有需要,在软件包管理器中更新移动 SDK 版本
- 将 Stripe 对象 ID 存储在数据库中,并确保数据库支持最多 255 个字符(区分大小写的排序规则)
测试 API 版本变更
使用 Stripe-Version 标头,在不更改默认版本的情况下,根据新版本测试代码:
curl https://api.stripe.com/v1/customers \
-u sk_test_xxx: \
-H "Stripe-Version: 2026-08-26.dahlia"
也可以在代码中设置:
const stripe = require('stripe')('sk_test_xxx', {
apiVersion: '2026-08-26.dahlia' // Test with new version
});