在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
我感谢任何关于为什么响应哈希不匹配的帮助。我的逻辑中是否有任何错误来计算响应哈希值?谢谢!
答案 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)
答案 2 :(得分:0)
哈希的实际序列为: AdditionalCharges | SALT |状态|||||| udf5 | udf4 | udf3 | udf2 | udf1 |电子邮件|名字|产品信息|金额| txnid |密钥
答案 3 :(得分:0)
稍晚,但实际顺序为: SALT |状态||||||| udf5 | udf4 | udf3 | udf2 | udf1 |电子邮件|名字|产品信息|金额| txnid |密钥
感谢拉维·康德·辛格
但额外收费|被删除
经过实时环境测试
按上述顺序检查您的哈希,如果匹配则可以处理请求