Передача идентификатора кассы Stripe в URL Django
Страница успеха, содержащая ссылку на скачивание файла после завершения покупки, должна быть доступна только после совершения платежа.
Идея состоит в том, чтобы передать {CHECKOUT_SESSION_ID}
в url успеха. Только если вставлен правильный url .../success/?session_id={CHECKOUT_SESSION_ID}
, страница становится доступной.
Как я могу передать {CHECKOUT_SESSION_ID}
в мой url?
Вот мой файл views.py:
def success(request):
return render(request, 'checkout/success.html')
def index(request):
# sendMail()
try:
checkout_session = stripe.checkout.Session.create(
line_items = [
{
'price': 'price_1LUvcWKKYbcIekP0ZtUlCmAI',
'quantity': 1,
},
],
mode = 'payment',
success_url = 'http://127.0.0.1:8000/checkout/success' + '/?session_id={CHECKOUT_SESSION_ID}',
cancel_url = 'http://127.0.0.1:8000/create/',
)
except Exception as e:
return str(e)
return redirect(checkout_session.url, code=303)
А это мой файл urls.py:
from django.urls import path
from checkout.views import *
app_name = 'checkout'
urlpatterns = [
path('', index, name='index'),
path('success/', success, name='success'),
]
Это html файл, который я скопировал из stripe. Он вызывается кнопкой "Оплатить сейчас".
<!DOCTYPE html>
<html>
<head>
<title>Buy cool new product</title>
<script src="https://polyfill.io/v3/polyfill.min.js?version=3.52.1&features=fetch"></script>
<script src="https://js.stripe.com/v3/"></script>
</head>
<body>
<section>
<div class="product">
<img src="https://i.imgur.com/EHyR2nP.png" alt="The cover of Stubborn Attachments" />
<div class="description">
<h3>Stubborn Attachments</h3>
<h5>$20.00</h5>
</div>
</div>
<form action="/create-checkout-session" method="POST">
<button type="submit" id="checkout-button">Checkout</button>
</form>
</section>
</body>
</html>
Вы хорошо задали {CHECKOUT_SESSION_ID} на странице успеха в качестве параметра запроса:
success_url = 'http://127.0.0.1:8000/checkout/success' + '/?session_id={CHECKOUT_SESSION_ID}'
Когда сессия оформления заказа пройдет успешно, Stripe заполнит {CHECKOUT_SESSION_ID} правильным значением и перенаправит пользователя на соответствующую страницу success_url
На вашей стороне, при определении страницы /checkout/success
в вашем приложении, вы должны получить значение параметра запроса session_id и использовать его для настройки вашей страницы успеха,
Для получения более подробной информации вы можете обратиться к этой ссылке: https://stripe.com/docs/payments/checkout/custom-success-page