gpt4 book ai didi

php - PayUMoney 集成 - 如何计算哈希以与响应进行比较?

转载 作者:行者123 更新时间:2023-12-05 04:16:38 26 4
gpt4 key购买 nike

Post 请求生成Hash

    $hashSequence = "key|txnid|amount|productinfo|firstname|email|udf1|"
."udf2|udf3|udf4|udf5|udf6|udf7|udf8|udf9|udf10";
$hashVarsSeq = explode('|', $hashSequence);
$hashString = '';
foreach ($hashVarsSeq as $hashVar) {
$hashString .= isset($payObject['params'][$hashVar]) ? $payObject['params'][$hashVar] : '';
$hashString .= '|';
}
$hashString .= $salt;
//generate hash
$hash = strtolower(hash('sha512', $hashString));

获得成功响应后生成Hash

$retHashSeq = $salt.'|'.$status.'||||||||'.$udf3.'|'.$udf2.'|'.$udf1.'|'.$email.'|||'.$amount.'|'.$txnid.'|'.$key;
$hash = hash("sha512", $retHashSeq);

但是生成的HashPayU服务器返回的Hash不匹配。可能是什么问题呢??任何帮助,将不胜感激。

最佳答案

PayUMoney C# API 请求和响应中的哈希计算

哈希序列 =

key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5||||||salt;

$hash = hash("sha512", $hashSequence);

在 PayUMoney 控制面板上哪里可以使用 salt。

注意:计算 hashSequence 时将使用空白的 udf 字段,即使商家未在输入请求中传递任何 udf 字段也是如此。

对于响应哈希,与支付请求哈希相比,变量序列是倒序的。此外,在 salt 和 udf1 之间添加了一个状态变量

序列

hashSequence = salt|status||||||udf5|udf4|udf3|udf2|udf1|email|firstname|productinfo|amount|txnid|key;

$hash = hash("sha512", $hashSequence);

在 PayUMoney 控制面板上哪里可以使用 salt。

这里是响应哈希计算的示例代码:-

                bool isCheckSum = false;
var strhash = Request.Form["hash"];
var strstatus = Request.Form["status"];
var strfirstname = Request.Form["firstname"];
var stramount = Request.Form["amount"];
var strtxnid = Request.Form["txnid"];
var strkey = Request.Form["key"];
var strproductinfo = Request.Form["productinfo"];
var stremail = Request.Form["email"];
var stradditionalCharges = Request.Form["additionalCharges"];
string strudf1 = Request.Form["udf1"];
string strudf2 = Request.Form["udf2"];
string strudf3 = Request.Form["udf3"];
string strudf4 = Request.Form["udf4"];
string strudf5 = Request.Form["udf5"];

System.Security.Cryptography.SHA512Managed sha512 = new System.Security.Cryptography.SHA512Managed();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strSALT + "|" + strstatus + "||||||" + strudf5 + "|" + strudf4 + "|" + strudf3 + "|" + strudf2 + "|" + strudf1 + "|" + stremail + "|" + strfirstname + "|" + strproductinfo + "|" + stramount + "|" + strtxnid + "|" + strkey);
byte[] hashBytes = sha512.ComputeHash(inputBytes);
byte[] hashValue;
string hex = "";
hashValue = sha512.ComputeHash(inputBytes);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}

if(strhash == hex)
{
isCheckSum = true;
}

关于php - PayUMoney 集成 - 如何计算哈希以与响应进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26602670/

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