我在使用 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")