看了几天的 Stripe 文档和其他产品的逻辑( cursor.com/readdy.ai ),也问了很多次 AI ,还是有很多疑问,想请求下经常性付款的订阅(订阅开始时发放额度)的最佳实践,比如:
github 是否有相关的代码库呢?
![]() |
1
wogogoing PRO ![]() 我的产品正好接入了 stripe ,回答你一下:
1.看业务逻辑是否允许,如果仅允许存在一个,那么应该在商户侧,也就是你自己的代码逻辑里面处理,后者覆盖前者就行了,具体操作就是关闭用户除最后一个订阅外的所有订阅即可。 2.Webhook 有重试机制,整体的交付率还是可以的,但避免停服/宕机导致状态没有同步,建议商户做一个超时主动查询的兜底方案。比如超过 1 天都还没支付成功的订单,主动去 stripe 查询一下支付状态。 3.这一点看产品的定位和定价。 之前也有不少人在问如何支持支付宝和微信,我写了篇文章,op 可以参考下: https://blog.keepchen.com/a/How-to-get-Stripe-to-support-Alipay-and-WeChat-Pay.html |
![]() |
2
CoderGeek 38 天前
接入 stripe ,一般国内和国外有些 app 是取消订阅不会退款 用到金额没了为止
还有的策略是按照天算出一个退款金额到 stripe 用户账户, 除非选择原路返回退款到用户支付方式, WebHook 要接,他是最重要的 如果失败他可以重试的 ,你可以接到了存到本地的 db 或者 MQ 再走你自己逻辑。 用户退款要记录 失败的要调接口或者手动触发 stripe 的 API 主要是看你的订阅支持什么模式,还有可以同时生成多个订阅 都是 API 文档 |
5
HaibaraDP OP @CoderGeek 取消订阅走当前周期结束时取消也就是不退款更合适些。
我的产品是像 cursor/readdy 这种订阅周期开始时发放额度或积分的,订阅按天计算退款不合适。 订阅模式是预付费,没有试用期,应该是不支持多个订阅? |
![]() |
7
CoderGeek 38 天前
@HaibaraDP 有这些规则的话 也可以考虑是否根据用量模式 stripe 也有 还有你可以规则都是你自己的 你去接 stripe 的 api
他主要是支付工具 订阅模型 可以用他的也可以是你自己的 |
8
HaibaraDP OP 问:用户创建多个 Checkout Session 之后每个都付款,出现多个订阅怎么办?
答:开启每位用户限一个订阅 此时用户结账会出现“您已订阅我们的服务”或“您的付款未能处理”(您似乎已经在我们这里购买了订阅。登录以管理您的账户。),文档: https://docs.stripe.com/payments/checkout/limit-subscriptions |
![]() |
9
yimity 37 天前
1. 这个时候你自己的系统里面要限制。是否 stripe 能够限制没有研究过。
2. 这个是不可靠,而且顺序次数都不可靠,所以你要选择性的处理一些事件,自己要存库写逻辑。 3. 我的策略是只能有一个订阅,但是多个订阅可以升级降级,升级降级时设置 stripe 将对应的金额进行退费或者收取。 |
![]() |
11
XTTX 22 天前
stripe api update subscription 可以用 proration_behavior , 自动计算订阅升级差额。 第二条路就是创建新的订阅,然后 webhook 接受新的订阅,再处理 prorated refund 。
好一点的 AI 应该对这些 api 很熟悉了 |
12
HaibaraDP OP @XTTX 按比例退款不合适(订阅是购买的用量,像 cursor 一样分配额度,不是 claude code 那种),有办法让 stripe 根据我的用量计算吗(定时上报这种不太准确的也行)?第二种创建订阅再退款感觉处理并发和事务很复杂。我用 cursor 接的 stripe mcp ,写的代码都有不满意的地方
|
![]() |
13
XTTX 21 天前
@HaibaraDP 那你就 1. 创建新的订阅 2. webhook 接创建成功 event , 查有没有其他有效订阅, 有就取消, 然后在取消成功 event 里再处理退款。 stripe 这么成熟了, 不行你就换一个 AI
|