gpt4 book ai didi

php - SagePay 服务器集成验证签名

转载 作者:可可西里 更新时间:2023-10-31 23:20:30 24 4
gpt4 key购买 nike

我正在尝试使用 PHP 和协议(protocol)文档集成到 SagePay 中。但是,我似乎对 MD5 哈希有疑问!

在我们收到通知 POST 之前一切都很好。但是,当我们去验证签名时,它与通知 POST 中的签名不匹配???然而,我已经完全按照文件进行了检查,并四次检查了所有内容。以及更改文档范围之外的内容,认为可能存在错字等。????非常感谢任何帮助!!!

A2:在第一次 POST 时确认响应。

3.00,OK,2014 : The Transaction was Registered Successfully.,{4483C552-6078-6D1C-E37C-294B89DB1DCA},O9WQNAKEHJ,<https://test.sagepay.com/gateway/service/cardselection?vpstxid={4483C552-6078-6D1C-E37C-294B89DB1DCA}>

A3:通知 POST 到回调。

VPSProtocol,TxType,VendorTxCode,VPSTxId,Status,StatusDetail,TxAuthNo,AVSCV2,AddressResult,PostCodeResult,CV2Result,GiftAid,3DSecureStatus,CAVV,CardType,Last4Digits,VPSSignature,DeclineCode,ExpiryDate,BankAuthCode

3.00,DEFERRED,m-5367c2da33a72,{4483C552-6078-6D1C-E37C-294B89DB1DCA},OK,0000 : The Authorisation was Successful.,6953629,SECURITY CODE MATCH ONLY,NOTMATCHED,NOTMATCHED,MATCHED,0,OK,AAABARR5kwAAAAAAAAAAAAAAAAA=,VISA,0006,CB2EFFBC5A872B26DA0AA50F85DD1FEA,00,0115,999777

我基于此构建字符串:

    $string = $this->getSagePayTxID()
.$this->getVendorTxCode()
.$this->getSagePayStatus()
.$this->getTxAuthNo()
.SAGEPAY_VENDOR
.$this->getAVSCV2()
.$this->getSecurityKey()
.$this->getAddressResult()
.$this->getPostCodeResult()
.$this->getCV2Result()
.$this->getGiftAid()
.$this->get3DSecureStatus()
.$this->getCAVV()
.$this->getCardType()
.$this->getLast4Digits()
.$this->getDeclineCode()
.$this->getExpiryDate()
.$this->getFraudResponse()
.$this->getBankAuthCode();

if($signature == strtoupper(md5($string)))
{
return TRUE;
}
else
{
return FALSE;
}

生成的字符串是这样的:

{4483C552-6078-6D1C-E37C-294B89DB1DCA}m-5367c2da33a72OK6953629atbristolltdSECURITY CODE MATCH ONLYO9WQNAKEHJNOTMATCHEDNOTMATCHEDMATCHED0OKAAABARR5kwAAAAAAAAAAAAAAAAA=VISA0006000115999777

感谢您的帮助!!!

最佳答案

您构建的字符串似乎与文档不匹配,其中指出:

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

将 CAVV 之后的字段与您的字段进行比较。你的似乎缺少 AddressStatus 和 PayerStatus。

另外,我认为@dav83 在他的评论中的数字 (3) 是不正确的。在我正常工作的代码中,我的 VPSTxId 确实包含大括号(就像在您的示例中一样)。

关于php - SagePay 服务器集成验证签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23480263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com