#django
Вопрос:
Здравствуйте, я интегрирую stripe с моим приложением Django, и я борюсь, потому что получаю ошибку. Я поместил весь код, который, по моему мнению, необходим для интеграции с полосой. Я был бы рад любому совету.
ошибка:
"JSONDecodeError,
Expecting value: line 1 column 1 (char 0) "
views.py
@csrf_exempt
def create_checkout_session(request, pk):
request_data = json.loads(request.body)
cart = Cart.objects.filter(order_user = request.user)
stripe.api_key = os.environ.get('stripeAPI')
checkout_session = stripe.checkout.Session.create(
customer_email = request_data['email'],
payment_method_types=['card'],
line_items=[
{
'price_data': {
'currency': 'usd',
'product_data': {
'name': cart.order_items,
},
'unit_amount': cart.total,
},
'quantity': 1,
}
],
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')),
)
HTML шаблон:
<form action="{% url 'checkout-page' 5 %}" method="GET">
<button type="submit">Checkout</button>
</form>
Путь к URL-адресу:
path('create_checkout_session/<int:pk>', views.create_checkout_session, name='checkout-page'),
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)
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)
total = MoneyField(
default=0.00,
decimal_places=2,
max_digits=11,
default_currency='USD')
Комментарии:
1. Добро пожаловать в SO! В вашем вопросе много кода, но я считаю , что важной частью являются данные JSON, которые вы пытаетесь проанализировать
request_data = json.loads(request.body)
, которые могут быть искажены. Попробуйте добавитьprint(request.body)
перед этой строкой и добавьте результат к вашему вопросу.