Как выполнять код каждый раз, когда сессия Stripe была оплачена

Я использую Stripe для интеграции платежей на моем сайте электронной коммерции и Django в качестве веб-фреймворка, и я хотел бы создать пользовательский административный сайт для управления магазином, поэтому я хочу создать модель Command всякий раз, когда сессия stripe была оплачена.

from .models import Command # I have a Command model

class CommandView(views.APIView):
    def post(self, request, format=None):
        try:
            checkout_session = stripe.checkout.Session.create(
                line_items=[
                    {
                        'price': 'some price id',
                        'quantity': 1,
                    },
                ],
                mode='payment',
                success_url='http://localhost:3000/success/{CHECKOUT_SESSION_ID}',
                cancel_url='http://localhost:3000/store',
                billing_address_collection='auto',
            )
            if checkout_session['payment_status'] == 'paid':
                # this will never work because the status in this view is always unpaid
            return Response({'url': checkout_session['url']})
        except Exception as e:
            return Response({'error': e})

Решением, которое я нашел, является выполнение кода в представлении success_url, но мне интересно, можно ли заплатить и не попасть в этот url, например, сразу закрыть вкладку... И может быть мое решение создать модель Command, чтобы видеть детали команды в администрировании, например цвет товара... неправильно, можете ли вы дать несколько советов.

Вы можете попробовать использовать Ajax для вызова функции представления и обработать ее с помощью JQuery / Javascript.

Этот вопрос на stackoverflow может помочь вам дальше.

Рекомендуемый способ достижения этой цели - webhooks. Хорошим примером является это руководство по выполнению заказов.

Вернуться на верх