JSONDecodeError в Django после оплаты Paypal

Я продолжаю получать следующую ошибку, когда завершаю платеж через Paypal в разработке:

JSONDecodeError at /checkout/thankyou Ожидаемое значение: строка 1 столбец 1 (char 0)

Я осмотрелся и вижу, что есть какая-то проблема с форматом JSON, и мое представление не может его обработать. Однако я не могу понять, в чем именно проблема с моими данными. Я хочу использовать мои Json-данные для создания заказа в моей Django-модели, когда они будут обработаны, но пока не могу дойти до этого этапа.

скриптcheckout.html:

    let bagContents = '{{ bag_products|safe }}';
    const csrftoken = getCookie('csrftoken');

    const paymentAmount = '{{ total | safe }}';
    // Parse bagContents, then for each create a variable for name, id and quantity
    let bag = JSON.parse(bagContents);
    for (let i = 0; i < bag.length; i++) {
        let itemName = bag[i].name;
        let itemId = bag[i].id;
        let itemQuantity = bag[i].quantity;
        console.log(itemName);
        console.log(itemId);
        console.log(itemQuantity);
    }   


    function completeOrder(){
        let url = '{{ success_url }}'

        fetch(url, {
            method: 'POST',
            headers:{
                'Content-type':'application/json',
                'X-CSRFToken': csrftoken,
            },
            body:JSON.stringify({'bagContents': 'bagContents'})
        })
    }

 paypal.Buttons({
        // Sets up the transaction when a payment button is clicked
        createOrder: (data, actions) => {
            return actions.order.create({
                purchase_units: [{
                    amount: {
                        value: paymentAmount
                    }
                }]
            });
        },
        // Finalize the transaction after payer approval
        onApprove: (data, actions) => {
            return actions.order.capture().then(function (orderData) {
                // Successful capture! For dev/demo purposes:
                console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
                const transaction = orderData.purchase_units[0].payments.captures[0];
                completeOrder()
                actions.redirect("{{ success_url }}");
                // When ready to go live, remove the alert and show a success message within this page. For example:
                // const element = document.getElementById('paypal-button-container');
                // element.innerHTML = '<h3>Thank you for your payment!</h3>';
                // Or go to another URL:  actions.redirect('thank_you.html');
            });
        }
    }).render('#paypal-button-container');
</script>

{% endblock %}

Views.py:

def order_success(request):
    """
    View that displays the successful order page after an order has been
    processed.
    """
    print(request.body)
    body = json.loads(request.body)
    print('BODY:', body)
    return JsonResponse('Success!', safe=False)

Печатные заявления:

b'{"bagContents":"[{\\"name\\": \\"Teddy Bear\\", \\"id\\": 2, \\"quantity\\": 3}, {\\"name\\": \\"Bath Toys\\", \\"id\\": 1, \\"quantity\\": 1}, {\\"name\\": \\"Chew Toy\\", \\"id\\": 4, \\"quantity\\": 2}]"}'
b''
BODY: {'bagContents': '[{"name": "Teddy Bear", "id": 2, "quantity": 3}, {"name": "Bath Toys", "id": 1, "quantity": 1}, {"name": "Chew Toy", "id": 4, "quantity": 2}]'}

Любая помощь будет очень признательна!

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