支付

Stripe 产品与支付配置

Created: 02/02/2026

这篇文章系统复盘了我在实际项目中配置 Stripe 产品体系的完整流程,重点覆盖 私钥管理、Webhook 事件配置、产品与价格创建、本地调试与沙盒测试。内容以真实操作顺序展开,保留所有关键字段、事件名称、测试卡号与配置细节,适合第一次接入 Stripe、或者对订阅/一次性收费逻辑不够熟的人,直接按步骤落地,不容易踩坑。

主要围绕 Stripe 后台的基础配置,不涉及代码实现,重点解决三个问题:

  1. 私钥如何正确使用
  2. Webhook 怎么配置、监听哪些事件
  3. 产品和价格如何创建,才能被代码正确识别

一、Stripe 私钥的配置方式

1. 私钥在哪里找

进入 Stripe 后台后:

  • 在页面左下角找到「开发人员」
  • 进入后可以看到 API Keys

这里会有两类 key:

  • Publishable key(前端用)
  • Secret key(私钥,后端用)

2. 私钥的正确使用方式

不要把私钥写死在代码里。

标准做法是:

  • 复制 Secret key
  • 配置到环境变量
  • 由后端在运行时读取

这样做的目的只有一个: 避免私钥泄露,一旦代码仓库公开就翻车。


二、Webhook 的配置流程

Webhook 是 Stripe 支付体系里非常关键的一环,所有支付成功、订阅变化,本质上都靠它驱动。


1. 进入 Webhook 配置入口

路径是:

  • Stripe 后台
  • 左下角「开发人员」
  • Webhooks

点击进入后,选择 添加事件 / 创建 Webhook 端点


2. 需要监听的事件

在创建 Webhook 时,需要手动筛选你要监听的事件。我这里使用的是:

  • invoice.paid
  • checkout.session.completed
  • customer.subscription.created
  • customer.subscription.updated
  • customer.subscription.deleted

这些事件基本覆盖了:

  • 一次性支付完成
  • 订阅创建
  • 订阅更新
  • 订阅取消

3. 创建 Webhook 端点

创建时需要填写两个核心信息:

  • Webhook 名称(自己识别用)
  • Webhook URL(后端提供的接口地址)

确认后创建。


4. 保存 Webhook 密钥

Webhook 创建完成后,Stripe 会生成一个:

  • Webhook Signing Secret

这个值非常重要:

  • 用于校验请求是否真的来自 Stripe
  • 防止被伪造请求攻击

同样的处理方式:

  • 复制
  • 存入环境变量
  • 后端校验时使用

三、创建 Stripe 产品与价格

Webhook 配好后,下一步是创建可以被用户购买的产品


1. 创建产品入口

在 Stripe 后台:

  • 进入「产品目录」
  • 选择「创建产品」

2. 产品的关键配置项

创建产品时,主要需要关注以下几个点:

  • 产品名称

  • 收费类型

    • 订阅(Subscription)
    • 一次性收费(One-time)
  • 币种(非常重要,后期不好改)

  • 收费周期

    • 按月
    • 按年

这些选项会直接决定你后端逻辑怎么写。


3. Price ID 的作用

产品创建完成后,Stripe 会生成一个:

  • Price ID

这个 ID 才是真正用于:

  • 创建 Checkout Session
  • 创建订阅
  • 发起支付

标准做法:

  • 复制 Price ID
  • 放入环境变量
  • 不要在代码里硬编码

四、本地开发与测试方案

1. Stripe CLI 本地转发

在本地开发时,Webhook 最大的问题是:

  • Stripe 无法直接访问你的 localhost

解决方案是:

  • 使用 Stripe CLI
  • 将 Stripe 的 Webhook 事件转发到本地接口

这样可以完整模拟真实支付回调流程。


五、Stripe 沙盒环境与测试卡号

Stripe 提供了完整的 测试环境(Sandbox),可以用虚拟卡反复测试支付流程。

官方测试文档: https://docs.stripe.com/testing


常用测试卡号整理

测试卡号场景
4242 4242 4242 4242成功支付
4000 0000 0000 3220需要 3D 安全认证
4000 0000 0000 9995资金不足,支付失败

这些卡号可以直接在测试环境使用,不会产生真实扣款。


六、整体配置逻辑总结

整个 Stripe 的配置顺下来,本质是三件事:

  1. 私钥、Webhook 密钥全部放环境变量
  2. Webhook 事件选全,不然后期一定补
  3. Price ID 才是代码真正依赖的核心字段

只要这三点没问题,后面的代码接入、订阅管理、支付状态同步,都会顺很多。