如何处理付款错误。并将订阅返回到原来的条带支付状态?

时间:2021-07-29 15:02:36

标签: python stripe-payments

我在使用 python“stripe-payments”时遇到问题。

我想了解为什么在银行卡的帮助下,您可以增加数量而无需在银行卡上存钱。

我为与卡 4000000000000341 关联的用户编写了示例代码 如果您先使用此代码,一切都会正常进行,并且付款不会通过。如果你第二次运行它,付款就已经通过了。

我知道这是因为我没有使用 stripe.Subscription.modify 重置订阅。

但我不明白该怎么做,或者我根本不明白该做什么。 我究竟做错了什么?我应该在代码中添加什么,以便再次运行脚本时,stripe.Invoice.create(api_key, customer="cus_JvhLMsllZSYZjQ").pay() 命令失败,并且“数量”为 old_quantity。

import stripe
from stripe.error import CardError
new_quantity = 49
old_quantity = 48

new_plan_id = 'plan_EytNKdIq7pTkD7'
tax_rates = None
api_key = 'sk_test_i8lHZRJjHKnkfjtyjytj'
stripe_id = 'sub_JvhLIfdgqiMb06'

stripe_obj = stripe.Subscription.retrieve( stripe_id, api_key=api_key )
old_items = [{'id': x.id, 'deleted': True} for x in stripe_obj['items']['data']]

stripe.Subscription.modify(
    stripe_id,
    items=old_items + [{'plan': new_plan_id, 'quantity': new_quantity, "tax_rates":tax_rates}],
    api_key=api_key
)

inv=stripe.Invoice.create(api_key, customer="cus_JvhLMsllZSYZjQ")

try:
    
    res = inv.pay()
    print("payment successful")
except CardError as e:
    inv.void_invoice()

    # here I am trying to reset the Subscription to the initial state.
    stripe_obj = stripe.Subscription.retrieve(stripe_id, api_key=api_key)
    old_items = [{'id': x.id, 'deleted': True} for x in stripe_obj['items']['data']]
    stripe.Subscription.modify(
    stripe_id,
    items=old_items + [{'plan': new_plan_id, 'quantity': old_quantity, "tax_rates":tax_rates}],
    api_key=api_key
    )

   stripe.Subscription.retrieve(stripe_id, api_key=api_key)

   print("payment failed")

0 个答案:

没有答案