Этот код, который я использую ниже, работает отлично, кроме случаев, когда оформление заказа завершено. Я заметил, что каждый раз, когда кто-то оформляет заказ на моем сайте, делается две записи для клиентов.
У одного установлен источник по умолчанию, а у другого - нет. Я приложил скриншот.
https://i.ibb.co/8dd0Cxz/Screenshot-from-2020-04-20-11-15-25.png
@login_required
def checkout(request):
if request.method == 'POST':
plan = Plan.objects.get(nickname=request.POST['plan'])
stripe_customer = stripe.Customer.create(
email=request.user.email, source=request.POST['stripeToken'])
stripe_subscription = stripe.Subscription.create(customer=stripe_customer.id,
items=[
{'plan': plan.id}],
trial_from_plan=True)
# Tried removing but no the reason for the issue.
Subscription.sync_from_stripe_data(
stripe_subscription
)
return redirect('settings')
else:
if request.method == 'GET':
plan = Plan.objects.get(nickname=request.GET['plan'])
return render(request, 'plans/checkout.html',
{'plan': plan, 'price': '0'})
Я попытался изменить {'plan': plan.id} на {'plan': plan } и я получаю сообщение об ошибке:
Запрос req_0WL0lW2orGwLMV: Нет такого плана: Семья; существует имя с именем Family, но его идентификатор - plan_H5fvA8jJ0qX9qF.
edit: dj-stripe + webhooks используется, но мне нужно создать клиента с помощью официального API. Похоже, что дублирующий клиент (без источника оплаты) создается последним после (по какой-то причине) создания подписки