Получение идентификатора сессии stripe на странице успеха

Я использую stripe с django и хочу передать некоторую информацию, полученную из сессии оформления заказа, на страницу успеха.

После прочтения документации https://stripe.com/docs/payments/checkout/custom-success-page#modify-success-url я изменил url успеха на

MY_DOMAIN = 'http://127.0.0.1:8000/orders'

success_url=MY_DOMAIN + '/success?session_id={CHECKOUT_SESSION_ID}',
cancel_url=YOUR_DOMAIN + '/cancel/',
            metadata={
                "price_id": price_id,
                
                }
            )

def Success(request):
    session = stripe.checkout.Session.retrieve('session_id')
    return render(request, 'orders/success.html')

Но это дает мне ошибку:

Invalid checkout.session id: session_id

Если я вручную ставлю вместо "session_id" фактический id, который выводится в url, все работает нормально.

Так что мой вопрос заключается в том, что я должен написать вместо 'session_id', чтобы получить сессию?

Ваша переменная success_url - это просто строка. Вы не можете передавать переменные в строку, что, похоже, вы и пытаетесь сделать.

Вам нужно использовать либо f-строку, либо конкатенировать идентификатор сессии с частью URL, которая не изменяется.

Кроме того, в вашем представлении успеха вы не передаете контекст в возврате рендеринга. Это должно быть что-то вроде:

def Success(request):
    session = stripe.checkout.Session.retrieve('session_id')
    context = {'stripe_session_id':session}
    return render(request, 'orders/success.html', context)

Затем в своем шаблоне вы можете получить доступ к идентификатору сессии или любой другой информации, которую вы передадите в контекст.

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