带有付款意图的 Stripe Refund

Posted

技术标签:

【中文标题】带有付款意图的 Stripe Refund【英文标题】:Stripe Refund with payment intent 【发布时间】:2021-11-28 15:24:01 【问题描述】:

使用cancel API取消订阅后

StripeConfiguration.ApiKey = "sk_testqweqwerty";

var service = new SubscriptionService();
var cancelOptions =  new SubscriptionCancelOptions

  InvoiceNow = false,
  Prorate = false,
;

Subscription subscription = service.Cancel("sub_49qwertyz6a", cancelOptions);

我想将剩余天数的钱退还给客户,我查看了 stripe api,发现我可以通过付款意图来做到这一点。

StripeConfiguration.ApiKey = "sk_testqwertyS";

var refunds = new RefundService();
var refundOptions = new RefundCreateOptions 
  PaymentIntent = "pi_qwewz01aDfoo"
;
var refund = refunds.Create(refundOptions);

我没有单独创建支付意图,条纹是否有可能在幕后创建支付意图?我看到会话对象包含付款意图,但当我收到它时它是空的。

这是我的流程,

    使用订阅模式创建会话。 确认付款。订阅已创建。 取消订阅。 退款。

我想知道订阅对象或支付会话对象是否包含支付意图 ID 的任何选项?或者我必须在付款会话对象旁边创建付款意图对象?

【问题讨论】:

【参考方案1】:

您的订阅会创建发票(在订阅开始时和每个循环周期,例如每个月)。

每个 Invoice 对象都有一个关联的 PaymentIntent(Stripe 用来创建 Charges 的生命周期对象),这些是 Stripe 自动创建的(这就是为什么你是正确的,你的集成不会创建它们,Stripe 会为你创建它们) ,答案是:

stripe 是否有可能在幕后创建支付意图?

您需要找到在订阅 [0] 上支付的最新发票,其中将包含 payment_intent: pi_123 [1] 的字段。

然后,您为该 PaymentIntent [2] 创建一个退款,部分或全部,以将资金返还给客户。

[0]https://stripe.com/docs/api/invoices/list#list_invoices-subscription

[1]https://stripe.com/docs/api/invoices/object#invoice_object-payment_intent

[2]https://stripe.com/docs/api/refunds/create#create_refund-payment_intent

【讨论】:

1.带有订阅模式的结帐会话。 2.当用户想取消订阅时,我用 invoiceNow=true 和 prorate = true 参数调用取消订阅 api,同时我得到最新的发票 ID。 3. 使用该发票 ID,我正在调用发票 api 并获取实际包含最新付款意图 ID 的发票对象。 4. 我正在使用该付款意图 ID 调用退款 API。这个流程好吗? 一个问题如何创建全额退款?到目前为止,我能够创建按比例退款..

以上是关于带有付款意图的 Stripe Refund的主要内容,如果未能解决你的问题,请参考以下文章

服务器端提交的条纹支付意图示例

使用nodeJS条纹创建付款意图

使用 3D Secure 的 Stripe 支付意图仍然不完整

Code=50 “No such payment_intent” 当确认条带的支付意图时

Asp.Net - Stripe 支付意图在本地工作,但在线出现错误 502

带条纹和 SCA 的 Ionic 4 Cordova 付款