Получение идентификатора сессии 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)
Затем в своем шаблоне вы можете получить доступ к идентификатору сессии или любой другой информации, которую вы передадите в контекст.