Интересует вопрос связанный с подключение платежной системы. Платежная система ROBOKASSA, в Беллатриксе имеется уже данный обработчик, хотелось бы услышать людей кто работал с данной системой, так как есть вопросы по поводу настроек самой робокассы и может какие то настройки необходимо производить в Беллатриксе.
Конкретно нет понимания общей картины. А может и есть но так кажется.
В общем в Личном кабинете на сайте Робокассы, во вкладке администрирование необходимо настроить несколько параметров. пароли и ссылки. Пароли все ясно создал и вписал в обработчики Битрикса.
Но что вписывать в данные поля не могу понять и нигде найти и хотелось бы понять все схему работы.
Result URL: [используется для оповещения о платеже, если метод отсылки - email, то email-адрес]
Success URL: [используется в случае успешного проведения платежа]
Fail URL: [используется в случае отказа проведения платежа]
На странице http://www.site_name.ru/result_payment.php должен быть размещен bitrix:sale.order.payment.receive, настроенный на робокассу. На страницах success.php и fail.php должны быть простые информативные сообщения для пользователя (прошел или не прошел оплату заказ) После оплаты пользователь видит белую страницу с надписью "ОК476", где цифры это номер заказа.
А как подключиться к тестовому серверу Робокассы? Иначе, настроил как описано выше и получил ошибку "К сожалению, оплата счетов этого магазина сейчас невозможна."
Хм... А как правильно? У Robokass-ы есть свой файл result_receive.php (в каталоге модуля), отличающийся от входящего в дистрибутив result.php, содержащего bitrix.sale.order.payment.recieve. При этом в инструкции написано:
Цитата
Для получения результата оплаты используется файл result_receive.php - этот файл необходимо скопировать в публичную часть и сообщить его адрес платежной системе, чтобы Платежная система обращалась к нему в случае успешной оплаты (Result_URL и Success_URL).
Настроил уже десяток платежных систем и все отлично работают, но вот с робокассой никак.Пишет, что не может уведомить магазин о платеже.
Пробовал и размещать компонент bitrix.sale.order.payment.recieve в файле и указывать этот файл. Пробовал подставлять для result_url файл, который рекомендует использовать робокасса result_receive.php.
При любом раскладе пишет, что не может уведомить магазин. В настройках уведомелния ставлю точно правильный URL и метод уведомления POST. Хоть бы робокасса какую-нибудь отладочную информацию показывала.
scifi пишет: Настроил уже десяток платежных систем и все отлично работают, но вот с робокассой никак.Пишет, что не может уведомить магазин о платеже.
Пробовал и размещать компонент bitrix.sale.order.payment.recieve в файле и указывать этот файл. Пробовал подставлять для result_url файл, который рекомендует использовать робокасса result_receive.php.
При любом раскладе пишет, что не может уведомить магазин. В настройках уведомелния ставлю точно правильный URL и метод уведомления POST. Хоть бы робокасса какую-нибудь отладочную информацию показывала.
Подскажите, пожалуйста, с решением.
Когда я настраивал, то модуль Робокассы был битый.
Проблема была такой же? Подскажите, пожалуйста, что в нем было битого? И как в итоге настраивали, через компонент битрикса или через файл робокассы? Куда вел result_url?
scifi пишет: Проблема была такой же? Подскажите, пожалуйста, что в нем было битого? И как в итоге настраивали, через компонент битрикса или через файл робокассы? Куда вел result_url?
Как минимум:
Код
>cat result_rec.php
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();?><?
$inv_id = IntVal($_REQUEST["inv_id"]);
if(IntVal($inv_id)>0)
{
$bCorrectPayment = True;
$inv_id = IntVal($_REQUEST["inv_id"]);
$out_summ = $_REQUEST["OutSum"];
$crc = $_REQUEST["SignatureValue"];
if (!($arOrder = CSaleOrder::GetByID(IntVal($inv_id))))
$bCorrectPayment = False;
if ($bCorrectPayment)
CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]);
$mrh_pass2 = CSalePaySystemAction::GetParamValue("ShopPassword2");
$strCheck = md5($out_summ.":".$inv_id.":".$mrh_pass2);
if ($bCorrectPayment && strtoupper($CHECKSUM) != strtoupper($strCheck))
$bCorrectPayment = False;
if($bCorrectPayment)
{
$arFields = array(
X PS_STATUS" => "Y",
X PS_STATUS_CODE" => "-",
X PS_STATUS_DESCRIPTION" => $strPS_STATUS_DESCRIPTION,
X PS_STATUS_MESSAGE" => $strPS_STATUS_MESSAGE,
X PS_SUM" => $out_summ,
X PS_CURRENCY" => "",
X PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))),
);
// You can comment this code if you want PAYED flag not to be set automatically
if ($arOrder["PRICE"] == $out_summ)
{
CSaleOrder::PayOrder($arOrder["ID"], "Y");
}
if(CSaleOrder::Update($arOrder["ID"], $arFields))
echo "OK"+$inv_id;
}
}
?>
переменная $CHECKSUM нигде не объявлена и вместо нее нужно использовать $crc. Кроме того, поставьте какой-нить трейс в этот файл и при запросе из Робокассы смотрите, что приходит и сравнивайте с тем, что должно приходить и как это обрабатывается.
Если аккаунт на робокассе не активирован, то чтобы протестить в тестовом режиме необходимо изменить урл, куда отправляются данные на http://test.robokassa.ru/Index.aspx в файле payment.php. После активации аккаунта изменить назад на рабочий
<?require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("sale");
$inv_id = IntVal($_REQUEST["InvId"]);
if(IntVal($inv_id)>0)
{
$bCorrectPayment = True;
$inv_id = IntVal($_REQUEST["InvId"]);
$out_summ = $_REQUEST["OutSum"];
$crc = $_REQUEST["SignatureValue"];
if (!($arOrder = CSaleOrder::GetByID(IntVal($inv_id))))
$bCorrectPayment = False;
if ($bCorrectPayment)
CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]);
$mrh_pass2 = CSalePaySystemAction::GetParamValue("ShopPassword2");
$strCheck = md5($out_summ.":".$inv_id.":".$mrh_pass2);
if ($bCorrectPayment && strtoupper($crc) != strtoupper($strCheck))
$bCorrectPayment = False;
if($bCorrectPayment)
{
$arFields = array(
"PS_STATUS" => "Y",
"PS_STATUS_CODE" => "-",
"PS_STATUS_DESCRIPTION" => $strPS_STATUS_DESCRIPTION,
"PS_STATUS_MESSAGE" => $strPS_STATUS_MESSAGE,
"PS_SUM" => $out_summ,
"PS_CURRENCY" => "",
"PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))),
);
// You can comment this code if you want PAYED flag not to be set automatically
if ($arOrder["PRICE"] == $out_summ)
{
CSaleOrder::PayOrder($arOrder["ID"], "Y");
}
if(CSaleOrder::Update($arOrder["ID"], $arFields))
echo "OK".$inv_id;
}
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>
Здравствуйте. Вставил этот код на свой сайт (otkroj-podarok.ru). Пробую в тестовом периоде проводить платеж. Выдает следующее: "Уведомление отправлено успешно" и выводит в графе ответ следующий код:
// your registration data $mrh_login = "test"; // your login here $mrh_pass1 = "securepass1"; // merchant pass1 here
// order properties $inv_id = 5; // shop's invoice number // (unique for shop's lifetime) $inv_desc = "desc"; // invoice desc $out_summ = "5.12"; // invoice summ
// build CRC value $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1" ;
Последние обновления, дают возможность перебрасывать к конкретному платежному инструменту, что повышает вероятность оплаты и упрощает интерфейс для обычного пользователя.