Я планирую изменить интервал выставления счетов подписки в Stripe, включив в него единоразовое бесплатное продление на 3 месяца, когда пользователь подписывается на продукт. Обычный период выставления счетов для плана составляет 1 год, в результате чего при продлении период выставления счетов составит 15 месяцев. Однако по истечении этого расширенного периода он должен вернуться к исходному годовому интервалу выставления счетов. Это не испытательный срок; это бесплатное трехмесячное продление, за которое я хочу немедленно взимать с пользователя плату.
Ниже приведена моя текущая реализация представления сеанса оформления заказа, и я управляю всеми изменениями с помощью веб-перехватчика Stripe.
class CreateCheckoutSessionView(View):
def post(self, request, *args, **kwrgs):
...
checkout_session = stripe.checkout.Session.create(
success_url=protocol + domain + reverse('payment_success')+'?session_id = {CHECKOUT_SESSION_ID}',
cancel_url = protocol + domain + reverse('payment_failed'),
payment_method_types=['card'],
mode='subscription',
customer=customer.id,
line_items=[{
'price': price_id,
'quantity': 1,
'metadata': {
}
}],
allow_promotion_codes = True,
subscription_data = {
'default_tax_rates': [STRIP_TAX_ID],
},
)
return redirect(checkout_session.url, code=303)
Вы можете создать сеанс оформления заказа для годовой подписки. Затем, когда вы получите событие веб-перехватчика checkout.session.completed
, сделайте дополнительный вызов API, чтобы обновить подписку и добавить трехмесячную бесплатную пробную версию.
Сюда: