Связывание модели корзины с кассой stripe
Как связать цену и товары из модели корзины с кассой Stripe в Django Web Framework? Я получаю ValueError в /create_checkout_session, когда я изменил настройки по умолчанию на код ниже. Когда я оставляю его без изменений по умолчанию на странице Stripe, он работает, но, конечно, это был тестовый пример оформления заказа...
views.py
@csrf_exempt
def create_checkout_session(request):
MY_DOMAIN = 'localhost:8000'
cart = Cart.objects.get(order_user=request.user)
try:
session = stripe.checkout.Session.create(
line_items=[
{
'price_data': {
'currency': 'usd',
'unit_amount': cart.total,
'product_data': {
'name': cart.order_items.title
}
},
'quantity': 1,
},
],
payment_method_types=[
'card',
'p24',
],
mode='payment',
success_url= request.build_absolute_uri(reverse('success-page')) + '?session_id={CHECKOUT_SESSION_ID}',
cancel_url= request.build_absolute_uri(reverse('cancel-page')),
)
except Exception as e:
return print(e)
return redirect(session.url, code=303)
models.py
class OrderItem(models.Model):
order_item = models.ForeignKey(Item, on_delete=CASCADE, null=True)
quantity = models.IntegerField(default=1)
class Cart(models.Model):
order_user = models.OneToOneField(User, on_delete=CASCADE)
order_items = models.ManyToManyField(OrderItem)
ordered = models.BooleanField(default=False)
total = MoneyField(
default=0.00,
decimal_places=2,
max_digits=11,
default_currency='USD')
class Item(Visits, models.Model):
title = models.CharField(max_length=150)
price = MoneyField(
decimal_places=2,
default=0,
default_currency='USD',
max_digits=11,
)
image = models.ImageField(upload_to='pictures', default='static/images/man.png')
description = models.TextField(default="Item")
visits = models.IntegerField(default=0)
urls.py
urlpatterns = [
path('create_checkout_session', views.create_checkout_session, name='checkout-page'),
path('success', views.success, name='success-page'),
path('cancel', views.cancel, name='cancel-page')
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
HTML форма для входа в кассу:
<form action="{% url 'checkout-page' %}" method="GET">
<button type="submit">Checkout</button>
</form>