Кнопка не работает так, как предполагалось на веб-сайте django, над которым я работаю - PullRequest
0 голосов
/ 04 августа 2020

Я работаю над сайтом. На моем сайте есть кнопка оплаты. Вот код HTML для кнопки:

<button class="btnabc btnabc-secondary btnabc-lg d-none" id='payment-info'>Proceed</button>

, а вот код javascript для него:

document.getElementById('payment-info').addEventListener('click', function (e) {
      submitFormData()
    })

    function submitFormData() {
      console.log('Payment Button Clicked')
      var userFormData = {
        'name': null,
      }

      var shippingInfo = {
        'address': null,
      }

      shippingInfo.address = form.address.value
      userFormData.name=form.name.value

      var url = "/process_order/"
      fetch(url, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'X-CSRFToken': csrftoken,
        },
        body:JSON.stringify({'form': userFormData, 'shipping': shippingInfo }),
      })
        .then((response) => response.json())
        .then((data) => {
          console.log('Success:', data);
          alert('Transaction Completed')
          window.location.href = "{% url 'index' %}"
        })

    }

После нажатия этого кода я интегрировал платежный шлюз . Перед интеграцией он работал нормально, и при нажатии кнопки оплаты я получал уведомление о завершении транзакции, и данные сохранялись в моей базе данных. Это мой views.py для соответствующей кнопки:

def processOrder(request):
    transaction_id = datetime.datetime.now().timestamp()
    data = json.loads(request.body)
    if request.user.is_authenticated:
        customer=request.user.customer
        order, created=Order.objects.get_or_create(customer=customer, complete=False)
        total=float(data['form']['total'])
        order.transaction_id=transaction_id

        if total == order.get_cart_total:
            order.complete = True
        order.save()    
        ShippingAddress.objects.create(
            customer=customer,
            order=order,
            address=data['shipping']['address'],
            name=data['form']['name'],
        )

        param_dict = {

                'MID': 'Your-Merchant-Id-Here',
                'ORDER_ID': '3',
                'TXN_AMOUNT': '4',
                'CUST_ID': 'j',
                'INDUSTRY_TYPE_ID': 'Retail',
                'WEBSITE': 'WEBSTAGING',
                'CHANNEL_ID': 'WEB',
                'CALLBACK_URL':'http://127.0.0.1:8000/handlerequest/',

        }
        param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(param_dict, MERCHANT_KEY)
        return render(request, 'paytm.html', {'param_dict': param_dict})

    return JsonResponse('Done',safe=False)


@csrf_exempt
def handlerequest(request):
    # paytm will send you post request here
    form = request.POST
    response_dict = {}
    for i in form.keys():
        response_dict[i] = form[i]
        if i == 'CHECKSUMHASH':
            checksum = form[i]

    verify = Checksum.verify_checksum(response_dict, MERCHANT_KEY, checksum)
    if verify:
        if response_dict['RESPCODE'] == '01':
            print('order successful')
        else:
            print('order was not successful because' + response_dict['RESPMSG'])
    return render(request, 'shop/paymentstatus.html', {'response': response_dict})

Вот мой urls.py:

path("process_order/",views.processOrder,name="process_order"),

path("handlerequest/",views.handlerequest,name="handlerequest"),

Это моя контрольная сумма.py:https://github.com/Paytm-Payments/Paytm_Web_Sample_Kit_Python/blob/master/pythonKit%203.X/Checksum.py (Выдается платежным шлюзом)

Эта ошибка: Неперехвачено (в обещании)

SyntaxError: Unexpected token < in JSON at position 0
Promise.then (async)

Это указывает на функцию submitformdata () в js, которую я написал до интеграции оплаты. Пожалуйста, предложите мне способ решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...