当前位置: 首页 > 知识库问答 >
问题:

在Django的payumoney中校验和失败?

刁丰羽
2023-03-14

我已经根据https://developer.payumoney.com/redirect/文档实现了

view.py

import hashlib
from random import randint

from django.shortcuts import render


def Home(request):
    MERCHANT_KEY = "KeytCX7l"
    key = "keytCX7l"
    SALT = "salt2TuHze"
    PAYU_BASE_URL = "https://sandboxsecure.payu.in/_payment"
    posted = {}
    # Merchant Key and Salt provided y the PayU.
    for i in request.POST:
        posted[i] = request.POST[i]
    hash_object = hashlib.sha256(str(randint(0,20)).encode('utf-8'))
    txnid = hash_object.hexdigest()[0:20]
    posted['txnid'] = "b17ef6d19c7a5b1ee83b"
    posted['amount'] =  10.00
    posted['firstname'] = "Ravi"
    posted['email'] = "ravibhushan29@gmail.com"
    # posted['phone'] = "70007240543"
    posted["productinfo"] = "new product"
    hashSequence = "key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5"
    posted['key'] = key

    hash_string = ''
    hashVarsSeq = hashSequence.split('|')
    for i in hashVarsSeq:
        try:
            hash_string += str(posted[i])
        except Exception:
            hash_string += ''
        hash_string += '|'

    hash_string += SALT
    hashh = hashlib.sha512(hash_string.encode('utf-8')).hexdigest().lower()
    return render(request, 'payment.html', {"posted": posted, "hash": hashh,
                                                    "MERCHANT_KEY": MERCHANT_KEY,
                                                    "txnid": txnid,
                                                    "hash_string": hash_string,
                                                    "action": PAYU_BASE_URL})

我有根据payumoney的文档传递的值,我检查了hash和hash_sequence如下所示:

hashSequence=KeyTxNIDAmountProductInfoFirstNameEmailUDF1UDF2UDF3UDF4UDF5Salt。

payment.html

<html>
  <head onload="submitPayuForm()">
  <script type="text/javascript">
    var hash = "{{ hashh }}";
    function submitPayuForm() {
      if(hash =='') {
        return;
      }
      var payuForm = document.forms.payuForm;
      payuForm.submit();
    }
  </script>
  </head>
  <body>
    <h2>PayU Form</h2>
    <br/>
    {% if error %}

      <span style="color:red">Please fill all mandatory fields.</span>
      <br/>
      <br/>
      {% endif %}

      <form action={{ action }} method="post" name="payuForm">{% csrf_token %}
      <input type="hidden" name="key" value="{{ MERCHANT_KEY }}" />
      <input type="hidden" name="hash_string" value="{{ hash_string }}" />
      <input type="hidden" name="hash" value="{{ hash }}"/>
       <input type="hidden" name="posted" value="{{ posted }}"/>
      <input type="hidden" name="txnid" value="{{ txnid }}" />
      <table>
        <tr>
          <td><b>Mandatory Parameters</b></td>
        </tr>
        <tr>
         <td>Amount: </td>
          <td><input name="amount" value="{{ posted.amount }}" /></td>
          <td>First Name: </td>
          <td><input name="firstname" id="firstname" value="{{ posted.firstname|default:'' }}" /></td>
        </tr>
        <tr>
          <td>Email: </td>
          <td><input name="email" id="email" value="{{ posted.email|default:'' }}" /></td>
        </tr>
        <tr>
          <td>Product Info: </td>
          <td colspan="3"><textarea name="productinfo">{{ posted.productinfo|default:'' }}</textarea></td>
        </tr>
        <tr>
          <td>Success URI: </td>
          <td colspan="3"><input name="surl" value="http://127.0.0.1:8000/Success/" size="64" /></td>
        </tr>
        <tr>
          <td>Failure URI: </td>
          <td colspan="3"><input name="furl" value="http://127.0.0.1:8000/Failure/" size="64" /></td>
        </tr>

        <tr>
          <td colspan="3"><input type="hidden" name="service_provider" value="payu_paisa" size="64" /></td>
        </tr>
             <tr>

     <td colspan="4"><input type="submit" value="Submit" /></td>

        </tr>
      </table>
    </form>
  </body>
</html>

请帮忙找出我犯错的地方

共有1个答案

公西鸿博
2023-03-14

对于payu测试,请使用此凭据

def Home(request):
    key = "gtKFFx"
    SALT = "eCwWELxi"
    PAYU_BASE_URL = "https://test.payu.in/_payment'"

希望有帮助

有关更多详细信息,请参阅以下内容

 类似资料:
  • 我正在尝试使用Active Directory凭据执行Spring SecurityKerberos,如http://docs.Spring.io/spring-security-kerberos/docs/1.0.1.release/reference/htmlsingle/#samples-sec-server-win-auth中所述。我想说,我已经把大部分东西都放下了(SPN、键控等)。现在

  • 我正在尝试用Spring Boot、Ldap和Kerberos实现SSO。其中我得到了不同加密类型的校验和失败的多个错误。 环境详情:- 计算机:Windows 10 下面是安全配置java文件 下面是Windows 10计算机中C:\Windows中的krb5.ini文件的内容:- 我还更新了C:\ProgramFiles\java\jre1.8.0_191\lib\security和C:\Pr

  • 问题内容: 尝试从教程中制作简单表格时,我收到CSRF验证失败的消息。我对CSRF验证实际上是什么进行了一些研究,据我所知,要使用CSRF验证,你需要在html中使用其中的csrf_token标记之一,但是我没有 这是我的模板: 相当简单,位于contact.html 这是我的urlconf:从 应用程序名称为testapp1。当我键入URL(http:// localhost:8000 / te

  • 问题内容: 我正在关注Django 1.3 Web开发。对于登录,我收到以下错误 这是我的settings.py随附的APPS。这正是书上所说的样子。 这本书说,它应该包含django.contrib.auth.views.login ..并且我将其包含在 和我的registration / login.html …复制自本书的副本。它应该做。 问题答案: 你需要将模板标记添加为Django模板中

  • 我最近想使用CRC-32校验和进行文件完整性检查,并试图以同样的方式验证它,但似乎这种“对比零技巧”在这里是不可能的?! 例如,如果我在CRC在线计算器上使用32位值0xdeadbeef: https://www.lammertbies.nl/comm/info/crc-calculation.html 谁能解释一下,为什么这个“零比零技巧”对CRC-32不起作用?

  • 问题内容: 是否可以选择表中的整行并获得某种校验和?我正在寻找一种方法,告诉我的代码仅在更改了至少一条记录后才更新数据。从数据更改跟踪的角度来看,这将有助于我减少历史记录表中记录的许多更改。- 谢谢。 问题答案: 您可以结合使用和函数来为该行生成MD5校验和: 如果其中一列是可为空的,请确保将其包装在中,因为null会使结果也为null。 另请注意,这不是100%安全的。如果从一列中删除1个字符并