我正在将 ccavenue 与我的电子商务网站集成。在某些情况下,我收到此错误:错误代码:108 错误描述:校验和 + 不匹配。
如何纠正这个?有人可以帮我吗
我正在将 ccavenue 与我的电子商务网站集成。在某些情况下,我收到此错误:错误代码:108 错误描述:校验和 + 不匹配。
如何纠正这个?有人可以帮我吗
我找到了问题,那就是 URL。如果您的重定向 URL 没有任何参数,它将起作用。
为了解决这个问题。您必须通过 PHP 中的 urlencode 函数对您的 URL 进行编码。
$url= urlencode($url);
我解决了这个问题..校验和确实不正确。我在最后一刻硬编码为卢比。10 测试集成..但我用实际金额计算的校验和。因此校验和不正确!希望这可以帮助某人。
尝试用这个替换 CCAvenue 工具包中提供的函数文件:
<?php
function getchecksum($MerchantId,$Amount,$OrderId ,$URL,$WorkingKey)
{
$str ="$MerchantId|$OrderId|$Amount|$URL|$WorkingKey";
$adler = 1;
$adler = adler32($adler,$str);
return $adler;
}
function verifychecksum($MerchantId,$OrderId,$Amount,$AuthDesc,$CheckSum,$WorkingKey)
{
$str = "$MerchantId|$OrderId|$Amount|$AuthDesc|$WorkingKey";
$adler = 1;
$adler = adler32($adler,$str);
if($adler == $CheckSum)
return "true" ;
else
return "false" ;
}
function adler32($adler , $str)
{
$BASE = 65521 ;
$s1 = $adler & 0xffff ;
$s2 = ($adler >> 16) & 0xffff;
for($i = 0 ; $i < strlen($str) ; $i++)
{
$s1 = ($s1 + Ord($str[$i])) % $BASE ;
$s2 = ($s2 + $s1) % $BASE ;
//echo "s1 : $s1 <BR> s2 : $s2 <BR>";
}
return leftshift($s2 , 16) + $s1;
}
function leftshift($str , $num)
{
$str = DecBin($str);
for( $i = 0 ; $i < (64 - strlen($str)) ; $i++)
$str = "0".$str ;
for($i = 0 ; $i < $num ; $i++)
{
$str = $str."0";
$str = substr($str , 1 ) ;
//echo "str : $str <BR>";
}
return cdec($str) ;
}
function cdec($num)
{
for ($n = 0 ; $n < strlen($num) ; $n++)
{
$temp = $num[$n] ;
$dec = $dec + $temp*pow(2 , strlen($num) - $n - 1);
}
return $dec;
}
?>
如果您使用为将ccavenues与joomla集成而提供的免费代码,则在文件ps_ccavenues_info_part.php
中计算校验和后将四舍五入。
我修改了代码,因此在计算校验和之前将金额四舍五入,这为我修复了它。
检查您的 ccavenue 商家密钥,每次重新生成时都会更改,并检查您的算法以进行校验和计算