Как связать платеж с заказом в django

я пытаюсь что-то сделать.

Я пытаюсь сделать в своем коде что-то, что после подтверждения платежа, заказ будет сохранен в базе данных.

я следовал этому руководству но я заблудился, потому что мы используем разные платежные шлюзы

он использует stripe, я использую flutterwave

мои коды

javascript

document.addEventListener("DOMContentLoaded", (event) => {
// Add an event listener for when the user clicks the submit button to pay
document.getElementById("submit").addEventListener("click", (e) => {
    e.preventDefault();
    const PBFKey = "xxxxxxxxxxxxxxxxxxxx"; // paste in the public key from your dashboard here
    const txRef = ''+Math.floor((Math.random() * 1000000000) + 1); //Generate a random id for the transaction reference
    const email = document.getElementById('email').value;
    var fullname= document.getElementById('fullName').value;
    var address1= document.getElementById('custAdd').value;
    var address2= document.getElementById('custAdd2').value;
    var country= document.getElementById('country').value;
    var state= document.getElementById('state').value;
    var address1= document.getElementById('postCode').value;
    const amount= document.getElementById('total').value;
    var CSRF_TOKEN = '{{ csrf_token }}';
    const payload = {
      'firstName': $('#fullName').val(),
      'address': $('#custAdd').val() + ', ' + $('#custAdd2').val() + ', ' + $('#state').val() + ', ' + $('#country').val(),
      'postcode': $('#postCode').val(),
      'email': $('#email').val(),
      

    }

getpaidSetup({
    PBFPubKey: PBFKey,
    customer_email: email,
    amount:"{{cart.get_total_price}}",
    currency: "USD",  // Select the currency. leaving it empty defaults to NGN
    txref: txRef, // Pass your UNIQUE TRANSACTION REFERENCE HERE.

    onclose: function() {},
    callback: function(response) {
        flw_ref = response.tx.flwRef;// collect flwRef returned and pass to a server page to complete status check.
        console.log("This is the response returned after a charge", response);
        if(response.tx.chargeResponse =='00' || response.tx.chargeResponse == '0') {
        // redirect to a success page
        
        } else {
        // redirect to a failure page.
        }
    }
  });
});

});

просмотров

def add(request):
    cart = Cart(request)
    if request.POST.get('action') == 'post':
        

        order_key = request.POST.get('txRef')
        user_id = request.user.id
        carttotal = cart.get_total_price()

        # Check if order exists
        if Order.objects.filter(order_key=order_key).exists():
            pass
        else:
            order = Order.objects.create(user_id='user_id', full_name='name', address1='add1',
                                address2='add2', total_paid=carttotal, order_key=order_key)
            order_id = order.pk

            for item in cart:
                OrderItem.objects.create(order_id=order_id, product=item['product'], price=item['price'], quantity=item['qty'])

        response = JsonResponse({'success': 'Return something'})
        return response
Вернуться на верх