响应校验和或散列不匹配payumoney?

时间:2018-01-12 14:28:18

标签: ruby-on-rails ruby payment-gateway payumoney

在payumoney处理之后将通知传递给应用程序时,它会发送响应哈希值,我们需要计算哈希值并将其与传入的响应哈希值匹配。

我使用以下代码计算预期的响应哈希值。

DefaultListModel<String> listModel = new DefaultListModel<>();
for (Element e1 : e) {
    listModel.addElement(e1.getElementsByTag("a").text());
}

计算以下字符串的哈希值

Digest::SHA512.hexdigest([
  PAYU_SALT,
  notification.transaction_status,
  notification.user_defined,
  notification.customer_email,
  notification.customer_first_name,
  notification.product_info,
  notification.gross,
  notification.invoice,
  PAYU_KEY].join("|"))  

当我打印下面的哈希时,它会给出

"salt|success|||||||||||||Payment|100.0|1|key"

Digest::SHA512.hexdigest([ PAYU_SALT, notification.transaction_status, notification.user_defined, notification.customer_email, notification.customer_first_name, notification.product_info, notification.gross, notification.invoice, PAYU_KEY].join("|")) #⇒ e7b3c5ba00b98aad9186a5e6eea65028a[...] 给出了

notification.checksum

所以两个哈希值不匹配。

我正在使用以下gem:https://github.com/payu-india/payuindia

我感谢任何关于为什么响应哈希不匹配的帮助。我的逻辑中是否有任何错误来计算响应哈希值?谢谢!

4 个答案:

答案 0 :(得分:1)

你在哪里为阵列中的字段提出了这个订单?

查看PayU's Developer FAQ,似乎订单如下:

key|txnid|amount|productinfo|firstname|email|||||||||||salt
  

请确保以下列格式计算哈希值:hashSequence = key | txnid | amount | productinfo | firstname | email | udf1 | udf2 | udf3 | udf4 | udf5 |||||| salt

     

请确保按上述顺序使用已发布到我们服务器的UDF。如果您没有发布任何UDF,则哈希序列应如下所示:hashSequence = key | txnid | amount | productinfo | firstname | email ||||||||||| salt。

请记住,在计算哈希时,即使单个字符不合适也会导致完全不同的校验和。

答案 1 :(得分:0)

好吧,这是我犯的一个愚蠢的错误。哈希不匹配的原因是因为我在PAYU测试密钥上输了一个错字。最后,当它是'U'时,我输入了小'u'。图书馆很好,逻辑是正确的。错误在我身边使用了错误的密钥。

答案 2 :(得分:0)

哈希的实际序列为: AdditionalCharges | SALT |状态|||||| udf5 | udf4 | udf3 | udf2 | udf1 |电子邮件|名字|产品信息|金额| txnid |密钥

答案 3 :(得分:0)

稍晚,但实际顺序为: SALT |状态||||||| udf5 | udf4 | udf3 | udf2 | udf1 |电子邮件|名字|产品信息|金额| txnid |密钥

感谢拉维·康德·辛格

但额外收费|被删除

经过实时环境测试

按上述顺序检查您的哈希,如果匹配则可以处理请求