Ошибка безопасности. Незаконный доступ обнаружен с использованием ccavenue в php

Я успешно перенаправляюсь на платежный шлюз ccavenue, но при нажатии на кнопку отмены отображается ошибка "Ошибка безопасности. Обнаружен незаконный доступ" на странице URL-адреса перенаправления.

Это моя страница перенаправления:

<?php include('Aes.php');include('adler32.php')?>
<?php
 $workingKey='myWorkingKey';        //Working Key should be provided here.
 $encResponse=$_POST["encResponse"];    //This is the response sent by the CCAvenue Server


$rcvdString=decrypt($encResponse,$workingKey);      
$AuthDesc="";
$MerchantId="";
$OrderId="";
$Amount=0;
$Checksum=0;
$veriChecksum=false;

$decryptValues=explode('&', $rcvdString);
$dataSize=sizeof($decryptValues);

echo "<center>";


for($i = 0; $i < $dataSize; $i++) 
{
    $information=explode('=',$decryptValues[$i]);
    if($i==0)   $MerchantId=$information[1];    
    if($i==1)   $OrderId=$information[1];
    if($i==2)   $Amount=$information[1];    
    if($i==3)   $AuthDesc=$information[1];
    if($i==4)   $Checksum=$information[1];  
}

$rcvdString=$MerchantId.'|'.$OrderId.'|'.$Amount.'|'.$AuthDesc.'|'.$workingKey;
$veriChecksum=verifyChecksum(genchecksum($rcvdString), $Checksum);

if($veriChecksum==TRUE && $AuthDesc==="Y")
{
    echo "<br>Thank you for shopping with us. Your credit card has been charged and your transaction is successful. We will be shipping your order to you soon.";

}
else if($veriChecksum==TRUE && $AuthDesc==="B")
{
    echo "<br>Thank you for shopping with us.We will keep you posted regarding the status of your order through e-mail";


}
else if($veriChecksum==TRUE && $AuthDesc==="N")
{
    echo "<br>Thank you for shopping with us.However,the transaction has been declined.";

}
else
{
    echo "<br>Security Error. Illegal access detected";

}


echo "<br><br>";

echo "<table cellspacing=4 cellpadding=4>";
for($i = 0; $i < $dataSize; $i++) 
{
    $information=explode('=',$decryptValues[$i]);
        echo '<tr><td>'.$information[0].'</td><td>'.$information[1].'</td></tr>';
}

echo "</table><br>";
echo "</center>";
?>

Я гуглил об этой проблеме, но не смог найти решения. Как решить эту ошибку..Пожалуйста, дайте несколько предложений по этому поводу?


person Peace    schedule 10.05.2019    source источник
comment
Я не использовал этот конкретный шлюз, но из вашего кода я не вижу никаких попыток отличить отмененный заказ от поддельного ответа. Другие шлюзы (например, PayPal) перенаправляют на другую страницу при отмененных заказах. Возможно, вам нужно проверить конфигурацию шлюза или попробовать var_dump($veriChecksum); и var_dump($AuthDesc);, чтобы увидеть их значения.   -  person Dimitris Filippou    schedule 10.05.2019
comment
спасибо за предложение. используя var_dump($veriChecksum); - выдает bool(false) и использует var_dump($AuthDesc); - строка (0)   -  person Peace    schedule 10.05.2019
comment
Итак, ваш код делает то, что должен делать. Проверьте документацию шлюзов на предмет отмененных платежей.   -  person Dimitris Filippou    schedule 10.05.2019
comment
Проверка контрольной суммы, похоже, здесь полностью не работает, поэтому вам нужно выяснить, почему. Начните с проверки, шаг за шагом, имеют ли смысл данные, содержащиеся в ваших различных переменных.   -  person 04FS    schedule 13.05.2019
comment
Я не знаю, почему проверка контрольной суммы не удалась.. успешно перевела меня на страницу оплаты ccavenue, но при перенаправлении выдает эту ошибку.. все, что мне нужно изменить, это workKey на странице redirecturl, и это довольно правильно.   -  person Peace    schedule 13.05.2019


Ответы (2)


Из документации (возможно, устаревшей, но я не смог найти обновленную) я обнаружил, что вам нужно передать параметр под названием cancel_url, который CCAvenue перенаправит клиента на этот URL-адрес, если клиент отменит транзакцию на странице выставления счетов.

Итак, на странице, на которой вы создаете платеж, вам нужно добавить в свою форму что-то вроде этого

<input type="hidden" id="cancel_url" name="cancel_url" value="the_url_where_you_will_proccess_canceled_orders">

У вас уже должно быть что-то подобное с redirect_url

person Dimitris Filippou    schedule 13.05.2019
comment
@Peace Можете ли вы показать нам код страницы, на которой вы создаете транзакцию? - person Dimitris Filippou; 13.05.2019

В вашем коде нет ничего плохого. Вам необходимо вести отдельную страницу для отмены заказа, на которой вам не нужно использовать код ответа CC avenue. Поскольку пользователь не завершил платеж, вы не получите никаких параметров ответа от ccavenue. Таким образом, им не нужно использовать переменные $verifyCheckSum и $AuthDesc. Они просто добровольно отменили свой заказ. Итак, просто нужно показать им сообщение "Ваш заказ был отменен" на вашем веб-сайте.

person Sugan Krishna    schedule 20.05.2019
comment
Я использую PHP-платежный комплект CCAvenue, успешно получил сумму, но страница ответа возвращает ошибку 404, пожалуйста, помогите мне. Код :paiza.io/projects/SUiG5qp_wttfcrQn-0Mwew?language=php для справки. -> [index.htm -> LineNo: 781 и 782] - person Gem; 22.05.2019
comment
@Gem Вы имеете в виду, что вы получаете ту же ошибку Ошибка безопасности. Обнаружен несанкционированный доступ ? - person Sugan Krishna; 22.05.2019