条带确定付费订阅状态

时间:2020-05-13 10:29:56

标签: php stripe-payments

我的应用程序结构如下:

orders table
order_id   subscription_id 
1          sub_AXXXXX
2          sub_BXXXXX

payments table
pid order_id   payment_status  date           charge_id
1    1        complete        1 May 2020      ch_XXXXX
2    1        pending         2 June 2020   
3    1        pending         3 July 2019     
4    2        complete        1 April 2020    ch_XXXXX
5    2        complete        1 May 2020       
6    2        pending         1 June 2020 
  • 我知道您先创建一个创建条纹客户(您会获得$ customer-> id)
  • 然后创建产品(您将获得$ product-> id)
  • 然后创建计划

$ plan = Plan :: create(['currency'=>'usd','interval'=>'month','product'=> $ product-> id,interval_count':3,'amount'= > 10]);

  • 然后我使用以下方式创建订阅

    “客户” => $ customer-> id,'plan'=> $ plan,'元数据'=> ['order_id'=> $ order_id,],'prorate'=>假

问题1 如何从条带检查order_id / subscription_id,成功完成了3笔订单ID中有多少笔付款费用?

我需要查询所有发票以进行订阅吗?但是,除了循环查询日期外,如何确定付款的月份和失败的月份。 如果每月成功付款,则条带化是否在任何地方更新计划的interval_count。

问题2 如何检查是否有任何付款失败的情况:如果pid 2付款失败,如何显示呢?

出于各种原因,我真的不想使用/依赖网络震动事件。

1 个答案:

答案 0 :(得分:0)

我在完全理解表中订阅ID和收费ID之间的关系时遇到了一些麻烦,但是我可以尝试从API的角度回答其中一个问题。如果您的订阅sub_AXXX付款失败,即订阅状态为incomplete(创建后失败)或past_due(重复计费后失败),则可以展开latest_invoice [1 ],然后从其中展开payment_intent [2]并检查last_payment_error [3]。那应该给你有关发生了什么的信息。

[1] https://stripe.com/docs/api/subscriptions/object#subscription_object-latest_invoice

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

[3] https://stripe.com/docs/api/payment_intents/object#payment_intent_object-last_payment_error