Если аккаунт на робокассе не активирован, то чтобы протестить в тестовом режиме необходимо изменить урл, куда отправляются данные на в файле 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" ;
// print URL if you need echo "<a href='/ru/$url'>Payment link</a>";
Подскажите, как это устранить. Заранее благодарю.
Администратор
Сообщений: Баллов: 114Регистрация: 07.03.2008
0
14.03.2014 18:13:54
Ребят, столько всего написано, штатный обработчик входящий в Битрикс отлично работает, использую на собственных проектах, все подтверждается оплачивается и обрабатывается, настройки можно почитать тут:
Последние обновления, дают возможность перебрасывать к конкретному платежному инструменту, что повышает вероятность оплаты и упрощает интерфейс для обычного пользователя.
Настроил РОБОКАССУ, но уведомления так и не приходят в Битрикс, хотя платеж проходит. И выводит на страницу с оповещением положительного результата по оплате. В администрировании заказ регистрируется но оплата нет, что делать подскажите?!
Сергей Сомиков,сидел три дня с такой же проблемой. Решение оказалось простым.
читайте примечание под картинкой с красными стрелочками. Изменил , в итоге, стандартный скрипт bitrix:sale.order.payment.receive Исключил шаблон как и написано в литературе. Было:
Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Прем информации об оплате");
?><?$APPLICATION->IncludeComponent(
"bitrix:sale.order.payment.receive",
"",
Array(
"PAY_SYSTEM_ID" => "9",
"PERSON_TYPE_ID" => "1"
)
);?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Стало:
Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->SetTitle("Прием информации об оплате");
$APPLICATION->IncludeComponent(
"bitrix:sale.order.payment.receive",
"",
Array(
"PAY_SYSTEM_ID" => "9",
"PERSON_TYPE_ID" => "1"
)
);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>
pay_system_id и person_type_id в соответствии с вашими значениями