Добрый день! Возникла задача немного изменить обработчик результата платежной системы ChronoPay. В настройках модуля интернет-магазин поставил путь к пользовательским файлам обработчиков bitrix/php_interface/include/sale_payment/ Поменял нужные нужные вещи в файлах, скопировал папку chronopay в /sale_payment - не работает. Пробовал создавать в папке просто один файл chronopay_res.php, не помогло. Документацию читал вот тут http://dev.1c-bitrix.ru/user_help/store/sale/sale_settings/sale_pay_system_file.php Ничего непонятно, кто-нибудь может толком объяснить как подключить обработчик, какие файлы где должны лежать??
1 В папке нет ли .htaccess ? 2 Попробуйте перейти по пути котрый вы прописали в настройках оплаты. 3 /bitrix/php_interface/include/sale_payment/ я лично копил суда обробочик вебмани. webmoney_web_result.php
...
Код
//если ошибок в ответе нет
if ($bCorrectPayment){
$strPS_STATUS_DESCRIPTION = "";
//Состовляем письмо то что будет приходить на мыло....
if ($_POST["LMI_MODE"] != 0)
$strPS_STATUS_DESCRIPTION .= "тестовый режим, реально деньги не переводились; ";
$strPS_STATUS_DESCRIPTION .= "кошелек продавца - ".$_POST["LMI_PAYEE_PURSE"]."; ";
$strPS_STATUS_DESCRIPTION .= "номер счета - ".$_POST["LMI_SYS_INVS_NO"]."; ";
$strPS_STATUS_DESCRIPTION .= "номер платежа - ".$_POST["LMI_SYS_TRANS_NO"]."; ";
$strPS_STATUS_DESCRIPTION .= "дата платежа - ".$_POST["LMI_SYS_TRANS_DATE"]."";
$strPS_STATUS_MESSAGE = "";
$strPS_STATUS_MESSAGE .= "кошелек покупателя - ".$_POST["LMI_PAYER_PURSE"]."; ";
$strPS_STATUS_MESSAGE .= "WMId покупателя - ".$_POST["LMI_PAYER_WM"]."; ";
if (isset($_POST["LMI_PAYMER_NUMBER"]) && strlen($_POST["LMI_PAYMER_NUMBER"])>0)
$strPS_STATUS_MESSAGE .= "номер ВМ-карты - ".$_POST["LMI_PAYMER_NUMBER"]."; ";
if (isset($_POST["LMI_PAYMER_EMAIL"]) && strlen($_POST["LMI_PAYMER_EMAIL"])>0)
$strPS_STATUS_MESSAGE .= "paymer.com e-mail покупателя - ".$_POST["LMI_PAYMER_EMAIL"]."; ";
if (isset($_POST["LMI_TELEPAT_PHONENUMBER"]) && strlen($_POST["LMI_TELEPAT_PHONENUMBER"])>0)
$strPS_STATUS_MESSAGE .= "телефон покупателя - ".$_POST["LMI_TELEPAT_PHONENUMBER"]."; ";
if (isset($_POST["LMI_TELEPAT_ORDERID"]) && strlen($_POST["LMI_TELEPAT_ORDERID"])>0)
$strPS_STATUS_MESSAGE .= "платеж в Телепате - ".$_POST["LMI_TELEPAT_ORDERID"]."";
$arFields = array(
"PS_STATUS" => "Y",
"PS_STATUS_CODE" => "-",
"PS_STATUS_DESCRIPTION" => $strPS_STATUS_DESCRIPTION,
"PS_STATUS_MESSAGE" => $strPS_STATUS_MESSAGE,
"PS_SUM" => $result["ORDER_AMOUNT"],
"PS_CURRENCY" => $arOrder["CURRENCY"],
"PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))),
"USER_ID" => $arOrder["USER_ID"]
);
//Установка статуса оплаты товара...
$arFields["PAYED"] = "Y";
$arFields["DATE_PAYED"] = Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG)));
$arFields["EMP_PAYED_ID"] = false;
CSaleOrder::Update($arOrder["ID"], $arFields);
//соотвецвенно вам нужно вписать код суда или перед установкой статуса.)
}
...
Я думаю гдето стоит .htaccess который не пускает сервис к скрипту) у меня так было.
Если это поможет, то при оплате заказа не изменяется статус на Оплачен по причине "не совпадает подпись". Если это можно устранить без создания пользовательского обработчика буду очень рад)))
Спасибо за ответ!! То есть в папке /bitrix/php_interface/include/sale_payment/ должен лежать конкретный файл обработчика ответа, а не вся папка с обработчиком? А как он должен называться тогда? Подозрительных .htaccess не нашел. В настройках оплаты прописал путь http://my_site.ru/order_res.php, где соответсвенно order_res.php - страница с размещенным на ней компонентом "Подключение обработчика результата платежной системы". Страница сама по себе открывается все нормально, просто компонент вызывает обработчик не из /bitrix/php_interface/include/sale_payment/, а из bitrix/modules/sale/payment/.
Приведенный кусок кода ранее это для примера что и куда вставлять когда получили оплату. Все обработчики выглядят одинаково сперва проверки проверки составление письма потом обновление статуса заказа.
Оригиналы платежки хранятся в папке /public_html/test/bitrix/modules/sale/payment. для вас это будет так /public_html/test/bitrix/modules/sale/payment/chronopay/result_rec.php.
Если браузер свободно попадет на эту страницу и получает ответ то и сервис оплаты должен тоже попасть. Фактически эта проблема у меня и была.
Все равно не очень понятно... В папке bitrix/modules/sale/payment/chronopay/ есть два файла - один отвечает за формирование данных, отправляемых на сайт chronopay - payment.php, второй за прием ответа - result_rec.php. Мне нужно не оригинал файла изменить, а заставить компонент работать с копией файла, чтобы сохранить возможность обновлять продукт. Непонятно куда и какие файлы я должен скопировать, чтобы заработало... В справке написано что
Код
Для изменения шаблонов под свои нужды скопируйте их в каталог /bitrix/php_interface/include/sale_payment/.
Суда /bitrix/php_interface/include/sale_payment/ копируем файлы из папки /bitrix/modules/sale/payment/chronopay/ тока файл result_rec.php
Далее идем в админку http://ваш_сайт/bitrix/admin/sale_pay_system_edit.php?lang=ru&LID=s1 Переходим на вкладку Обычный Выбираем Обработчик: chronopay Далее ждем пару сек пока подгрузется настройки.
Находим: Адрес при успешной оплате URL скрипта (на веб-сайте продавца) обрабатывающего оповещения о результате платежа Суда и вписываем наш оброботчик http://ваш_сайт/bitrix/php_interface/include/sale_payment/chronopay_result_rec.php Ну и соответственно другие обязательные поля.
да верно не весь обработчик тока result_rec.php который вы можете модефицировать и этот путь вы и должны будете прописать в настройке оплаты.
А как в таком случае нужно назвать файл?
В настройке оплаты я не могу прописать путь непосредственно к файлу result_rec.php, его должен вызвать битрикс, иначе не будет доступа. Соответственно надо как-то заставить компонент "Подключение обработчика результата платежной системы" работать не с оригинальным файлом, а со скопированным.
которая запрещает непосредственный доступ к файлу. Если ее поменять, можно в настройках оплаты прописать путь непосредственно на файл http://ваш_сайт/bitrix/php_interface/include/sale_payment/chronopay_result_rec.php, но менять ее не хочется, это мне кажется несколько неправильно. Как заставить компонент вместо стандартного пути /bitrix/modules/sale/payment/chronopay/ работать с нужным мне /bitrix/php_interface/include/sale_payment/chronopay ?