【问题标题】:Getting the "The MD5 signature could not be verified." on a Worldpay FuturePay installation获取“无法验证 MD5 签名”。在 Worldpay FuturePay 安装上
【发布时间】:2015-03-25 11:32:32
【问题描述】:

我在尝试使用 FuturePay 安装(发送 MD5 哈希作为签名字段)时收到此错误消息 ("The MD5 signature could not be verified.")。如果我尝试发送没有签名的表格,告诉我: "The installation ID field is blank or contains invalid characters. A different submission protocol is required. A more secure submission may be required. The installation number is invalid."

我不得不提一下,我尝试使用 signatureFields 字段(我遇到了同样的错误),并且对于普通的 Junior 安装,它就像一个魅力。

我还必须说,WorldPay 呈现安装的方式非常令人困惑。虽然他们建议"A more secure submission may be required" 不使用 MD5 签名时,但管理区域中没有地方可以设置一个。

我仍然假设它与您为 Junior 安装设置的相同。

【问题讨论】:

  • 请告诉我们你是如何计算签名的。参数排序很重要。
  • 对于普通的 Junior 安装,效果很好,我正在这样做:<input type="hidden" name="signatureFields" value="instId:cartId" /> <input type="hidden"name="signature" value="<?php echo md5((string)WORLDPAY_TEST_MD5_STRING . ':' . WORLDPAY_TEST_INSTALLATION_ID . ':' . 'abc123'); ?>">
  • 如果 WORLDPAY_TEST_MD5_STRING 是您的 API 密钥,WORLDPAY_TEST_INSTALLATION_ID 是您的安装 ID (instId) 并且 也以明文形式显示,abc123 是您的 cartId **并且是也以明文形式显示为字段,那么它应该可以工作。
  • 顺便谢谢你这么快回答!这也是我的想法:它应该可以工作,但不幸的是,对于 FuturePay 来说它没有。而且我从 WorldPay 收到的错误消息太笼统了。
  • 你能把你的表单放在小提琴(jsfiddle.net)上,事先混淆你的秘密吗?

标签: php md5 digital-signature worldpay


【解决方案1】:

仔细检查您是否使用了正确的安装类型,我相信有两种类型的 FuturePay - 一种用于网站集成目的,另一种只能通过 WorldPay 仪表板使用。

【讨论】:

  • 谢谢!这正是正在发生的事情。忘了说我的安装叫做 FuturePayDirect。他们告诉我,我需要一种不同类型的安装,简称为 FuturePay。
【解决方案2】:

还要注意,哈希的十六进制编码表示必须是小写的

有效

94c439ad99c6afd9b1db69b3e77f9c3b

无效

94C439AD99C6AFD9B1DB69B3E77F9C3B

【讨论】:

    猜你喜欢
    • 2019-12-08
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2016-12-22
    • 2016-09-26
    • 2015-11-05
    相关资源
    最近更新 更多