项目中关于Stripe支付相关配置
写在前面:首先你得有个港卡或者非国内卡,可以开通Stripe
如何办理港卡,请阅读: 项目关于支付的延伸:香港主流银行开户攻略
开通Stripe的教程,请阅读:
1、项目关于支付的延伸:如何用大陆护照+个人港卡注册Stripe个人账户(2025年10月教程)
如果你没有上面的卡,短时间还想上站,可以看看wise(不用跑到香港开卡,在线开,不过这个我没有跑闭环)
Wise开通的美元账号是可以绑定到PayPal的,并且可以成功提现。
PayPal开通的是美区(没有提交SSN进行认证),Wise是国内证件开通,如此可以打通PayPal美区到Wise香港账号。
同理,也可以通过其他方式比如香港转数快转入Wise并在PayPal中消费。
请阅读:项目支付延伸:wise在线开卡
接入 Stripe 支付
开通 Stripe 商户
参考 Stripe 商家入驻指南 开通 Stripe 商户。
你可以以个人身份或企业身份开通 Stripe 商户,绑定你的提现账户,设置商户基本信息。
Stripe支持测试模式(方便本地调试) 和 生产模式(真实付费)
咱们的步骤是 本地开发时,填入测试 API 密钥,等部署上线时,再填入正式的 API 密钥。
查看测试模式的 API 密钥
在 Stripe 管理后台进入你的商户页面,创建一个账户(这里点击后属于个人信息填写提交,不多介绍)


然后按照下图进入测试模式

依次选择 Developers -> API keys -> 标准密钥,依次将公钥密钥复制粘贴到http://localhost:3000/admin/settings。



保存成功后
访问http://localhost:3000/pricing 测试支付
商品定义在 src/config/pricing.ts —— 服务端唯一可信源,客户端传来的价格一律忽略。
这个json文件就是咱们的定价配置
productId: 'starter_monthly',
productName: 'Starter',
description: 'Starter Monthly',
type: PaymentType.SUBSCRIPTION, // 或 PaymentType.ONE_TIME
priceInCents: 900,
currency: 'usd',
credits: 5000,
creditsValidDays: 30,
plan: { name: 'starter', interval: 'month', intervalCount: 1 },
}
默认商品:starter|pro|enterprise × monthly|yearly|lifetime
点击查看Stripe的测试卡号



由于是测试模式,你会直接支付成功,然后页面自动就会进入个人中心-积分 http://localhost:3000/zh/settings/credits
接下来你就是有积分可以AI生成了
正式的 API 密钥
还是刚才的Stripe页面,点击下图退出测试模式

依次选择 Developers -> API keys -> Standard keys -> Create secret key 创建 API 密钥。




将下图的秘钥复制粘贴到 https://xxxx/admin/settings (你生产环境的地址)
将公钥复制粘贴


保存后可以去https://xxxx/pricing (你生产环境的地址) 测试生产环境的支付
配置支付回调
配置支付回调(Webhook)主要有以下几个核心作用,这是保证你的计费系统正常运转的关键:
1、防止掉单(异常处理):如果用户在支付平台付款成功后,没有等页面自动跳回你的网站就直接关掉了浏览器,前台的回调就不会触发。此时 Webhook 作为服务器之间的异步通知,能做兜底保障,确保订单状态更新并为用户发放权益。
2、处理订阅的自动续费:对于按月/按年扣费的订阅计划,用户后续周期的自动扣款是静默发生的(无需用户干预)。Stripe/Creem 会通过 Webhook 通知你的系统扣款成功,你的系统才会给用户延长订阅周期并下发新周期的积分。
3、同步订阅状态变更:当由于用户信用卡到期导致续费扣款失败,或者用户主动取消了订阅时,平台会通过 Webhook 通知你的系统,以便你及时冻结或更新对应用户的订阅状态。
4、安全性:Webhook 请求会携带需要用 Signing secret 验证的签名。这能防止黑客通过伪造前台的成功跳转链接来“免费”获取你的产品权益。
- 明确你的线上生产域名,例如
https://yourdomain.com。请将下方教程中的你的域名替换为真实的线上域名。 - 确保你的应用已经成功部署并且可以公网访问。
Stripe Webhook 配置步骤
-
登录进入 Stripe Dashboard 控制台。
-
在页面顶部或侧边栏进入开发者 (Developers) 页面。

-
点击左侧菜单中的 Webhooks 选项卡。

-
点击页面中间紫色的 + Add destination 按钮。

-
此时会进入新增向导页面,第 1 步 (Select events) 选择需要监听的事件:

-
在页面下方的搜索框中逐一检索并勾选以下五个事件:

checkout.session.completed(此事件用于处理一次性付款成功和订阅的首次付款)invoice.payment_succeeded(此事件用于处理订阅用户的周期性扣款成功)invoice.payment_failed(用于监听扣款失败)customer.subscription.updated(此事件用于处理订阅状态更新)customer.subscription.deleted(此事件用于处理订阅被取消)
-
勾选完毕后,点击右下角紫色的 Continue 按钮。

-
-
第 2 步 (Choose destination type),通常只需选择 Webhook Endpoint 相关选项,并点击继续。

-
第 3 步 (Configure your destination) 配置你的端点:
- 在端点 URL (Endpoint URL) 输入框中,严格按照以下格式填写:
https://你的域名/api/payment/notify/stripe
- 在端点 URL (Endpoint URL) 输入框中,严格按照以下格式填写:
-
确认无误后点击底部的按钮(如 Add endpoint 或保存)完成创建。
-
创建成功后,你将进入该 Webhook 的端点详情页。在页面中找到 签名密钥 (Signing secret) 一栏,点击显示并复制该密钥。

-
将复制的签名密钥填写到项目的后台管理系统对应的 Stripe 配置项中 (
Stripe Signing Secret)。

测试验证
- 确保签名密钥已经正确保存并在应用中生效。
- 配置完成后,建议使用真实账号发起一笔小额测试交易。
- 也可以直接通过 Stripe 提供的测试事件发送功能触发测试 Webhook。
- 如果回调状态为
200 OK,说明签名无误且逻辑运转正常。如果返回500等报错,请首先检查前后端填写的 Signing secret 是否一致。
Stripe开通支付宝、微信支付
登录Stripe后在搜索条输入Payment methods,点击下图结果

点击启用:

等待审批
