![](/img/trans.png)
[英]Error Code: 21002 currency: Required parameter missing (CCAvenue) using codeigniter
[英]error code 108 ccavenue
我正在將ccavenue與我的電子商務網站集成。 在某些情況下,我會收到此錯誤:錯誤代碼:108錯誤描述:Checksum + mismatch。
如何糾正這一問題?有人可以幫助我嗎?
我解決了這個問題。校驗和確實不正確。 我在最后一刻硬編碼了Rs。 10來測試積分..但是我用實際金額計算了校驗和。 因此,錯誤的校驗和! 希望這對某人有幫助。
檢查ccavenue的商戶密鑰,它在每次重新生成時都會更改,並且還會檢查算法以進行校驗和計算
如果您正在使用提供的免費代碼將ccavenue與joomla集成在一起,則在文件ps_ccavenues_info_part.php
,在計算校驗和后將其四舍五入。
我修改了代碼,以便在計算校驗和之前將金額四舍五入,這對我來說是固定的。
嘗試用以下工具替換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;
}
?>
我發現了問題,那就是URL。 如果您的重定向URL沒有任何參數,它將起作用。
為了解決這個問題。 您將必須通過PHP中的urlencode函數對URL進行編碼。
$url= urlencode($url);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.