Я разрабатываю свой первый тестовый проект Django Stripe, но сейчас застрял на этом этапе, поскольку перенаправление на страницу успеха не работает.
Это мой файлviews.py
импортировать полосу из настроек импорта django.conf из django.http импортировать HttpResponse из django.shortcuts импортируйте get_object_or_404 из django.views импортировать Просмотр из django.views.generic импорт TemplateView из .models импортировать элемент Stripe.api_key = settings.STRIPE_SECRET_KEY класс ProductLandingPageView(TemplateView): имя_шаблона = 'landing.html' защита get_context_data(self, **kwargs): контекст = super().get_context_data(**kwargs) item_id = self.kwargs["id"] item = get_object_or_404(Item, id=item_id) контекст['item'] = элемент вернуть контекст класс CreateCheckoutSessionView(View): def get(self, request, *args, **kwargs): item_id = self.kwargs["id"] ДОМЕН: str = 'http://127.0.0.1:8000' элемент = Item.objects.get(id=item_id) сеанс = полоса.checkout.Session.create( Payment_method_types=['карта'], line_items=[ { 'price_data': { «валюта»: «доллары США», 'unit_amount': item.price * 100, 'Данные продукта': { 'имя': item.name, }, }, 'количество': 1, }, ], платеж_intent_data={ 'метаданные': { 'item_id': item.id, }, }, режим = 'платеж', Success_url=ДОМЕН + '/успех/', cancel_url=ДОМЕН + '/отмена/', ) вернуть HttpResponse(session.id) класс SuccessView (TemplateView): имя_шаблона = "успех.html" класс CancelView (TemplateView): имя_шаблона = "cancel.html" А это мой template.html
Главная страница {{ item.name }} {{ item.display_price }} долларов США. Купить document.getElementById('кнопка покупки').addEventListener('click', function() { var itemId = this.getAttribute('идентификатор элемента данных'); выборка('/купить/' + идентификатор элемента) .then(функция(ответ) { вернуть ответ.json(); }) .then(функция(данные) { вар полоса = Stripe(data.stripe_public_key); Stripe.redirectToCheckout({ sessionId: data.session_id }); }) .catch(функция(ошибка) { console.error('Ошибка:', ошибка); }); }); Я использую переменные env для ключей, поэтому добавил эти строки в настройки
STRIPE_PUBLISHABLE_KEY = os.getenv('STRIPE_PUBLISHABLE_KEY') STRIPE_SECRET_KEY = os.getenv('STRIPE_SECRET_KEY') И мой urls.py настроен таким образом
из api.views import CancelView, SuccessView, CreateCheckoutSessionView, ProductLandingPageView от администратора импорта django.contrib из пути импорта django.urls URL-паттерны = [ путь('admin/', admin.site.urls), path('item/', ProductLandingPageView.as_view(), name='item'), path('buy/', CreateCheckoutSessionView.as_view(), name='buy'), путь('отмена/', CancelView.as_view(), name='отмена'), путь('успех/', SuccessView.as_view(), name='успех'),] Структура проекта

Есть ли у вас какие-либо предложения по решению этой проблемы? Кстати, если вы заметили что-то еще, что нужно улучшить, пожалуйста, прокомментируйте это. Я новичок в сервисе Stripe и все еще изучаю, как он работает.