Forums / National / Russian / Тех. поддержка / Один из параметров запроса недействиделен или устарел.

inkerman
#1 2013-07-29 06:31

При использовании системы платежей, в случае успешного проведения оплаты пользователь отправляется на страницу с сообщением "Все ОК"

Но на siena получаю ошибку: Один из параметров запроса недействиделен или устарел. Вернитесь назад и попробуйте отправить форму заново.

На genoa подобного не замечал

С чем это может быть связано? могу предположить что не хватает переменной &x=, но ее сервер сторонний не может знать

Тип ссылки: http://site.ru/plug.php?e=billing&m=payment&mod=succes

 

Dayver
#2 2013-07-29 07:29

Сам по себе не может а вот если его передать вместе с формой которую отправляем на сервер оплаты(подобное должно предусматриватся платежной системой) с условием что бы он вернул его при возврате на свой сервер (стыкался с подобным при прикручивании какойто платежки - кажысь то была робокаса)

Pavlo Tkachenko aka Dayver
Alex300
#3 2013-07-29 08:32

Для запросов от платежной системы отключите проверку XSS, пример рассматривался тут: http://www.cotonti.com/forums/36432?m=posts

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
inkerman
#4 2013-07-29 11:06

Alex300, но если отключить, то это же будет весь сайт -  открытая дыра для кулхацкеров, не?

Alex300
#5 2013-07-29 14:54

отключите только для запросов от платежной системы. Дополнительным хуком. Как в примере выше, там правда отключается для других запросов. Вы же все равно должны проверять запрос на безопасность, в том и числе и контрольную подпись, которой платежная система подписывает запрос. Так что ничего страшного.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
inkerman
#6 2013-07-29 15:09

Не совсем

У Робокассы есть адрес по которому она передает  результат обработки оплаты (там номер, сумма, контрольная подпись и т.д.) и есть еще два адреса на которые она перенаправляет пользователя (один - успех, а второй адрес - ошибка).

Соответственно скриптовый адрес - ок

А вот юзерские адреса (успеха и ошибки) как защитить то? При этом именно на них возникает ошибка XSS

Dr2005alex
#7 2013-07-29 17:10

Сам сейчас работаю над данным скриптом робокассы. Советы действительно дельные. Отключить проверку XSS  в хуке input.

а проверить от кого пришло можно по входящим данным от робокассы. Даже когда усер оплатил и ему предлагается вернуться, то передаются и дополнительные параметры по которым можно сделать фильтр.

Читай инструкцию http://www.robokassa.ru/ru/DocTest/Ru/Interface.aspx

Переадресация пользователя при успешной оплате (SuccessURL)

В случае успешного исполнения платежа Покупатель может перейти по данному адресу.

Методом, выбранным при регистрации, будут переданы следующие параметры ("чек" об оплате): 

OutSum=nOutSum&
InvId=nInvId&
SignatureValue=sSignatureValue&
Culture=sCulture
[&пользовательские_параметры]

nOutSum
-полученная сумма. Сумма будет передана в той валюте, которая была указана при регистрации магазина. Формат представления числа - Разделитель точка.
nInvId
- номер счета в магазине
sSignatureValue
- контрольная сумма MD5 - строка представляющая собой 32-разрядное число в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F). Формируется по строке, содержащей некоторые параметры, разделенные ':', с добавлением sMerchantPass1 (указывается при регистрации) т.е. nOutSum:nInvId:sMerchantPass1[:пользовательские параметры, в отсортированном порядке]. 
К примеру если при инициализации операции были переданы пользовательские параметры shpb=xxx и shpa=yyy то подпись формируется из строки ...:sMerchantPass1:shpa=yyy:shpb=xxx
sCulture
- язык общения с клиентом, выбранный при инициализации оплаты. Значения: en, ru.
 

Переход пользователя по данному адресу с корректными параметрами (соответствия CRC) означает, что платеж по реквизитам Продавца выполнен успешно. Сервис несет финансовую ответственность перед Продавцом в соответствии с Соглашением за достоверность такого подтверждения.

Однако для дополнительной защиты желательно, чтобы факт оплаты платежа проверялся скриптом исполняемым при переходе на Result URL, или путем запроса XML-интерфейса о результате данной платежной операции, и только при реальном наличии счета с номером nMerchantInvId в БД магазина.

Переадресация пользователя при отказе от оплаты (FailURL)

В случае отказа от исполнения платежа Покупатель перенаправляется по данному адресу.

Для того, чтобы Продавец мог разблокировать заказанный товар на складе при отказе от его оплаты методом, выбранным при регистрации, будут переданы параметры: 

OutSum=nOutSum&
InvId=nInvId&
Culture=sCulture
[&пользовательские_параметры]

nOutSum
-полученная сумма. Сумма будет передана в той валюте, которая была указана при регистрации магазина. Формат представления числа - Разделитель точка.
nInvId
- номер счета в магазине
sCulture
- язык общения с клиентом, выбранный при инициализации оплаты. Значения: en, ru.
WebKaa.ru - Cotonti Relax
Yusupov
#8 2013-07-30 18:11

Все правильно, чтобы получить данные от Робокассы нужно отключить защиту от междоменного постинга через хук input. Но делать это следует с умом, чтобы отключать только при необходимых условиях запроса.

Например:

if(($_GET['e'] == 'billing' || $_GET['r'] == 'billing') && $_SERVER['REQUEST_METHOD'] == 'POST')
{
    define('COT_NO_ANTIXSS', 1) ;
    $cfg['referercheck'] = false;
}

Условия ставите свои в зависимости от места куда приходят данные на ваш сайт. Используем подобную конструкцию в своем платежном модуле.