Stripe订阅模式(类似于会员,按月按年自动扣款)

文章目录

  • stripe订阅模式与普通支付模式的区别
  • 支付成功回调
  • 支付失败回调
  • 订阅生命周期

一、区别

创建stripe订单时(支付接口)的区别:

        1.普通订阅模式创建session前需要先创建价格对象,订阅需要在价格对象中多添加一个recurringParams,主要用于设置订阅周期(stripe支持年月日,如果设置订阅周期单位为月则不能超过十二个月,如果设置周期单位天则不能超过三十天),以及订阅周期数量。

 如果interval设置为month,interv_count设置为1,代表订阅创建生效之后每一个月自动扣一次款。设置这个对象在stripe的官方api文档里没有说,参考具体的对象参数文档Stripe API reference – The price object – curl

        2.在通过SessionCreateParams创建session去调用stripe api时,需要把mode设置为SessionCreateParams.Mode.SUBSCRIPTION.

 Build a subscriptions integration | Stripe Documentation

        3.普通支付模式下,通过SessionCreateParams创建session调用stripe后,session对象里会返回一个paymentintent,但是订阅首次支付时session中不会有这个paymentintent,并且paymentintent创建以及支付成功的回调都是在用户已经成功付款之后一起回调回来。普通支付模式是session创建完之后stripe就会发起一起paymentintent.created回调,用户付款成功后再发起一起paymentintent.success回调。上述逻辑是在stripe21.0.0版本之前,21版本之后,普通支付模式在创建session调用stripe时也不会创建paymentintent对象,支付意向的创建和成功的回调都是在用户付款成功之后一起回调的。

 4.订阅模式中用户付款成功之后的paymentintent.success回调中是会带一个invoice id(订阅模式在创建paymentintent(支付意向)对象前总是会先创建一个invoice对象,原因参考Stripe API reference – Invoice Items – curl),普通支付模式的paymentintent.success回调是没有这个invoice的。

二、支付成功回调

官方参考文档中使用的回调为‘checkout.session.completed’,'invoice.paid','invoice.payment_failed',意思分别为(创建session调用stripe的回调,订阅支付成功的回调(包括首次手动支付和后续的自动扣款),订阅支付失败的回调(包括首次手动支付和后续的自动扣款))。根据上述区别中说的,订阅的paymentintent创建之前一定会创建一个invoice对象,并且支付成功回调后会带一个invoice id,所以说回调的时候只捕捉paymentintent.success回调的效果是一样的。这样普通支付模式和订阅模式就都可以使用paymentintent.success的回调,也可以根据具体业务具体调整。

三、支付失败回调(包括自动扣款失败)

订阅的自动扣款失败后,stripe会有一个重试策略(smart retries),这个策略利用机器学习根据你付款的方式,付款时间、国家、时区等自动评估什么时候去重试向用户收款。详情参考文档https://stripe.com/docs/billing/revenue-recovery/smart-retries 

这个重试策略包含两个参数,smart_retry[max_retry_count] 重试次数,smart_retry[retries_end_after_days] 重试周期,默认是会在21天内重试四次,可以自己修改这个重试策略,最大值是在六十天之内重试八次。

在stripe控制台也可以自定义自己的重试策略,包括失败后是否给客户发送相关邮件,失败后对订阅的处理方式、账单状态等等。

 

四、订阅生命周期

1.订阅创建,订阅状态处于incomplete

2.stripe创建invoice对象,invoice对象处于open状态。在变成open状态之前,invoice会处于一个draft状态,保持大概一个小时,一个小时之后invoice才会进入open状态,这一个小时是提供给商家去对这一笔订单做一些定制化的处理,如果不需要处理,可以直接通过捕捉invoice的创建回调,捕捉之后直接使用invoice.finalize,invoice会直接进入open状态,在自动扣款时也就会直接尝试向用户去收款,不然还得多处理这一个小时左右的权限问题。

3.用户手动支付,开启订阅

4.支付成功之后,订阅状态处于active,invoice状态处于paid(并且回调)。

5.如果第一次支付失败,订阅会返回到incomplete状态,也就是等于没创建此订阅。如果是后续的自动扣款失败,订阅状态还是会处于past_due(stripe会不断尝试charge用户,例如邮件推送,短信推送,具体参考Stripe Login | Sign in to the Stripe Dashboard,也可以自定义重试规则尝试向用户收款)

5.回调中处理业务逻辑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/52103.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文投稿指南——中文核心期刊推荐(新闻事业)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

论文投稿指南——中文核心期刊推荐(社会学)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

想用Python赚钱?——安排!

利用Python进行网络抓取,本文会告诉你最显而易见的赚钱办法,还有隐藏的最不明显的赚钱方法。 数据是一种非常有用的资源。有人甚至称数据为21世纪的石油。 这就是为什么不仅是公司,而且普通人也会花钱在电子表格中获得干净的数据,…

微信小程序数据请求

微信小程序的数据请求 一、常用的数据请求方式 JS原生实现 第一种:let xhrnew XMLHttpRequest()xhr.open()xhr.send()第二种:fetch() 支持promisefetch(接口地址).then(function(response) {return response.json();}).then(function(myJson) {consol…

如何用Stata完成(shui)一篇经济学论文(十一):分组和去重

文章目录 分组去重 不出意外的话,这应该是stata有关数据处理的最后一篇。emmm,其实我一开始只打算写数据处理部分的stata教程,因为我觉得对于我来说,数据处理才是最头疼的部分。不过关于后面回归,还是有些东西想跟大家…

卷积神经网络之父的强人工智能路线图:自监督,推理,规划

导读 2023 年 6 月 9 日,智源大会第一天。在这场众星云集的盛会中。目前「深度学习三驾马车」中最活跃的 Yann LeCun 教授带来了重磅演讲「朝向能学习, 思考和计划的机器进发( Towards Machines that can Learn, Reason, and Plan&#xff09…

双色球彩票训练任务含对比

玩法规则:“双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码 组成。红色球号码从 1—33 中选择,蓝色球号码从 1—16 中选择。 package section_6_1008;import java.util.Random; import java.util.Scanner;public class section_6_1008 {publ…

一文读懂 OpenAI 创始人的「世界币」

作者 | 美漪 大概所有人,都曾经有这样一个梦想:「啥也不干,天天躺着就有人给发钱。」 现在,这个从各种角度看起来都是绝对的「白日梦」,真的有机会实现了。 当地时间 7 月 24 日,OpenAI 掌门人 Sam Altman …

书中自有黄金屋系列9:值得反复阅读的一本书《向上生长》

如果要说哪一本书对我影响最大,那肯定是这本我反复读了五遍以上九边写的《向上生长》了。很多深刻的人生道理被作者用通俗易懂的方式讲解说明,这才是最发人深省的。下面是我读书的一些笔记和思考: 1.人为什么要学习 就像人不吃饭就会死亡&…

Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之保险行业Insurance Bot架构设计、流程分析、状态管理及智能对话实验剖析(五十五)

本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之保险行业Insurance Bot架构设计、流程分析、状态管理及基于Rasa Interactive的智能对话实验进行分析。 一、Rasa对话机器人项目实战之保险行业Insurance Bot架构设计、流程分析、状态管理及基于Rasa Inte…

GPT3.5之模仿例子完成任务

首先导入open_ai key import openai import os from dotenv import load_dotenv, find_dotenv # 导入第三方库_ load_dotenv(find_dotenv()) # 读取系统中的环境变量openai.api_key os.getenv(OPENAI_API_KEY) # path1.api_key os.getenv(path) print(openai.api_key) # p…

与 ChatGPT 进行有效交互的几种策略

在这篇文章中,您将了解即时工程。尤其, 如何在提示中提供对响应影响最大的信息什么是角色、正面和负面提示、零样本提示等如何迭代使用提示来利用 ChatGPT 的对话性质 废话不多说直接开始吧!!! 提示原则 快速工程是有…

随机森林(Random Forest)通俗教程

目录 1 什么是随机森林?2 随机森林的特点3 随机森林的相关基础知识4 随机森林的生成5 袋外错误率(oob error)6 随机森林工作原理解释的一个简单例子7 随机森林的Python实现8 参考内容 1 什么是随机森林? 作为新兴起的、高度灵活的…

加密流量分类-论文9:DarknetSec: A novel self-attentive deep learning method for darknet traffic.....

加密流量分类-论文9:DarknetSec: A novel self-attentive deep learning method for darknet traffic classification and application identification 0、摘要1、文章核心观点引入2、模型结构2.1 模型总览2.2 预处理层2.4 特征提取层 4、实验5、总结与思考 0、摘要…

陌陌X-SIGN算法HOOK

文章目录 前言应用到的工具java 层分析frida hook aesEncode,a,sign 这三个方法总结预告: 下章节我们讲:陌陌X-SIGN还原 前言 学习是必然的,一路并不是平台的到道路,总要有点意外和惊喜。人嘛!…

152.网络安全渗透测试—[Cobalt Strike系列]—[会话管理/派生]

我认为,无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感!!! 文章目录 一、会话管理1、实验环境2、会话派生(1)128的cs会话派生给128的cs本身(2)128的cs会话派生给…

森林攻略

1.存档攻略 C盘/ Users / Administrator / AppData / LocalLow / SKS / The forest / 一列数字 你保存的存档,就在那个名称全是数字的文件夹中,只需把其中的存档文件保存在U盘或网盘中,下次玩时,把保存的存档文件放到存档文件夹…

Isolation Forest孤立森林(二)之sklearn实现,源码分析

孤立森林算法sklearn实现,源码分析 算法一: 首先初始化一些参数 class sklearn.ensemble.IsolationForest(n_estimators100, max_samples’auto’, contamination’legacy’, max_features1.0, bootstrapFalse, n_jobsNone, behaviour’old’, random_stateNone, v…

森林图

森林图 以统计指标和统计分析方法为基础,用数值计算绘制出的图形,通常是在平面直角坐标系中,以一条垂直的无效 线(0或者1)为中心,用平衡于x轴的多条线段描述每个组指标的中值和可信区间,最后一…

BFT 最前线 | 互联网惊现 AI 鬼城,中国电信天翼云将发布预训练大模型,周鸿祎谈“万模大战”

文 | BFT机器人 01 网易CEO 丁磊:人工智能价值已被引导到生产第一线 网易数帆推出 CodeWave 智能开发平台。据了解,网易数帆结合自身产品的定位,面向智能编程垂直领域推出大模型,并接入到智能开发平台中。网易 CEO 丁磊表示&…