Передача идентификатора кассы 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

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