【问题标题】:response checksum or hash not matching in payumoney?payumoney 中的响应校验和或哈希不匹配?
【发布时间】:2018-06-22 00:49:14
【问题描述】:

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

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

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 给了

  #⇒ 546f5d23e0cadad2d4158911ef72f095d[...] 

所以两个哈希不匹配。

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

感谢任何有关响应哈希不匹配原因的帮助。我计算响应哈希的逻辑是否有任何错误?谢谢!

【问题讨论】:

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


    【解决方案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。

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

    【讨论】:

    • Paumoney 使用两个哈希值。一个是您发布的请求哈希。对于响应哈希,事务状态也被预先设置。
    • 请看这里。 github.com/payu-intrepos/Documentations/wiki/4.-Server-Side 。在 Post-Transaction hash sequence:( Mandatory ) 标题下,您会看到响应哈希不同。
    • @kofhearts 啊,抱歉。我查看了您在原始帖子中链接的 gem 的代码,然后字段的数量和它们的顺序看起来是正确的。
    • 问题是当我发布到生产 payu 站点时,响应哈希与上述相同的公式匹配,但在使用测试站点时,它不匹配。所以我想知道问题出在他们的测试站点上。
    【解决方案2】:

    有点晚,但实际顺序是:

    SALT|status||||||udf5|udf4|udf3|udf2|udf1|email|firstname|productinfo|amount|txnid|key
    

    感谢拉维·康德·辛格

    但是additionalCharges| 被删除了

    在实际环境中测试

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

    【讨论】:

    • 这不回答 OPs 查询。请考虑编辑/删除您的回复
    【解决方案3】:

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

    【讨论】:

    • 您好,您必须自己实施验证吗?如果响应的状态是成功但哈希不匹配会发生什么?
    • 没有图书馆可以做到这一切。我手动执行此操作的唯一原因是确保库正确或有错误。但最后我发现错误是我使用了错误的密钥。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-11
      • 2010-12-06
      • 2013-01-10
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      相关资源
      最近更新 更多