现场的 Sagepay MD5 验证不匹配

Sagepay MD5 verification on live didn't match

我已经在测试服务器上与 sagepay ant 进行了服务器集成,来自 post 的 VPSSignature 与消息构造的 MD5 和确认消息上的其他元素相匹配。问题是当我 return 进入 LIVE 模式时,MD5 哈希和 VPSSignature 与任何交易都不匹配,即使它们具有 OK 状态。

我用 sagepay 的文档确认我的字符串:

MD5 signature of the concatenation of the values of: VPSTxId +
VendorTxCode + Status + TxAuthNo + VendorName+ AVSCV2 + SecurityKey +
AddressResult + PostCodeResult + CV2Result + GiftAid + 3DSecureStatus
+ CAVV + AddressStatus + PayerStatus + CardType + Last4Digits + DeclineCode + ExpiryDate + FraudResponse + BankAuthCode.

NOTE: MD5 value is returned in UPPER CASE.

Please ensure the VendorName is LOWER CASE prior to hashing. Use urldecode to reverse the urlencoding you received from Sagepay If a field is returned without a value this should not be be checked against the string.

我看到了 SagePay Server Integration Verify Signature 但他们没有提到任何关于 sagepay 的测试或实时服务器

The Sage Pay Server will send notification in the request part of a POST to the Notification URL provided in A1. The request will be URL encoded, with Name=Value fields separated by ‘&’ characters

我在 Sage Pay Server Integration and Protocol and Guidelines 3.00 上阅读了这篇文章 可用 here.

通过检查来自 Sage Pay 的任何 POST 变量解决了问题,在这种情况下:

3DSecureStatus
CAVV
AVSCV2
CV2Result

其中一些变量未被捕获并包含在 MD5 签名串联字符串中。

问题已解决。