我希望订阅在一年后自行取消。实现这个的方法是什么?
checkout_session = stripe.checkout.Session.create(
payment_method_types=["card"],
mode="subscription",
customer=stripe_customer_id, # Use existing customer ID
line_items=[
{
"price": product.stripe_recurring_price_id, # Recurring subscription price
"quantity": 1,
},
{
# First month extra fees
"price_data": {
"currency": "myr",
"product": "PRODUCT_ID", # One time charge
"unit_amount": 4000, # RM40 in cents
"recurring": None, # No recurring charges for this item
},
"quantity": 1,
},
],
metadata=metadata,
# TODO: Add cancellation for subscription after 12 months
success_url=YOUR_DOMAIN + "success?success=true",
cancel_url=YOUR_DOMAIN + "success?canceled=true",
)
return JsonResponse(
{"id": checkout_session.id, "url": checkout_session.url}
)
我使用“stripe.checkout.Session.create”而不是“stripe.Subscription.create”,因为第一个月需要额外付费。这是我唯一的解决方案。如果有其他解决方案,请分享。
基本上,我需要能够将订阅设置为持续一年并在一年后自行取消。订阅期限不应超过一年。
您可以通过设置
cancel_at
字段[1]来安排在一段时间后取消订阅。
虽然您无法在 Checkout Session 创建 API 中设置此字段,因为此字段不可用 [2]。您可以做的是在结账会话完成后,您对订阅创建进行更新,并使用一年后的时间戳设置该字段[3]:
[1] https://docs.stripe.com/api/subscriptions/create#create_subscription-cancel_at
[2] https://docs.stripe.com/api/checkout/sessions/create#create_checkout_session-subscription_data
[3] https://docs.stripe.com/api/subscriptions/update#update_subscription-cancel_at