Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Пользовательский обработчик платежной системы

00 голосов
9
Добрый день! Возникла задача немного изменить обработчик результата платежной системы 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
Ничего непонятно, кто-нибудь может толком объяснить как подключить обработчик, какие файлы где должны лежать??
спросил 04 Апр, 13 от RaZor (440 баллов)

9 Ответы

00 голосов
Если это поможет, то при оплате заказа не изменяется статус на Оплачен по причине "не совпадает подпись". Если это можно устранить без создания пользовательского обработчика буду очень рад)))
ответил 04 Апр, 13 от RaZor (440 баллов)
00 голосов
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 который не пускает сервис к скрипту) у меня так было.
ответил 04 Апр, 13 от hAWPeN (640 баллов)
00 голосов
Спасибо за ответ!!
То есть в папке /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/.
ответил 10 Июнь, 13 от RaZor (440 баллов)
00 голосов
Приведенный кусок кода ранее это для примера что и куда вставлять когда получили оплату.
Все обработчики выглядят одинаково сперва проверки проверки
составление письма потом обновление статуса заказа.


Оригиналы платежки хранятся в папке /public_html/test/bitrix/modules/sale/payment.
для вас это будет так /public_html/test/bitrix/modules/sale/payment/chronopay/result_rec.php.

Если браузер свободно попадет на эту страницу и получает ответ то и сервис оплаты должен тоже попасть.
Фактически эта проблема у меня и была.
ответил 13 Сен, 13 от hAWPeN (640 баллов)
00 голосов
Спасибо за ответ!!
То есть в папке /bitrix/php_interface/include/sale_payment/


да верно не весь обработчик тока result_rec.php который вы можете модефицировать и этот путь вы и должны будете прописать в настройке оплаты.
ответил 11 Дек, 13 от hAWPeN (640 баллов)
00 голосов
Все равно не очень понятно...
В папке bitrix/modules/sale/payment/chronopay/ есть два файла - один отвечает за формирование данных, отправляемых на сайт chronopay - payment.php, второй за прием ответа - result_rec.php. Мне нужно не оригинал файла изменить, а заставить компонент работать с копией файла, чтобы сохранить возможность обновлять продукт. Непонятно куда и какие файлы я должен скопировать, чтобы заработало... В справке написано что
Код
Для изменения шаблонов под свои нужды скопируйте их в каталог /bitrix/php_interface/include/sale_payment/.

но так не работает :(
ответил 25 Март, 14 от RaZor (440 баллов)
00 голосов
Суда /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
Ну и соответственно другие обязательные поля.
ответил 18 Июль, 14 от hAWPeN (640 баллов)
00 голосов
Цитата
да верно не весь обработчик тока result_rec.php который вы можете модефицировать и этот путь вы и должны будете прописать в настройке оплаты.


А как в таком случае нужно назвать файл?

В настройке оплаты я не могу прописать путь непосредственно к файлу result_rec.php, его должен вызвать битрикс, иначе не будет доступа. Соответственно надо как-то заставить компонент "Подключение обработчика результата платежной системы" работать не с оригинальным файлом, а со скопированным.
ответил 18 Ноя, 14 от RaZor (440 баллов)
00 голосов
В обработчике есть строка
Код
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();?>

которая запрещает непосредственный доступ к файлу. Если ее поменять, можно в настройках оплаты прописать путь непосредственно на файл http://ваш_сайт/bitrix/php_interface/include/sale_payme­nt/chronopay_result_rec.php, но менять ее не хочется, это мне кажется несколько неправильно. Как заставить компонент вместо стандартного пути /bitrix/modules/sale/payment/chronopay/ работать с нужным мне /bitrix/php_interface/include/sale_payment/chronop­ay ?
ответил 15 Март, 15 от RaZor (440 баллов)

Похожие вопросы

0 голосов
4 ответов
спросил 01 Март, 14 от UnLegal5 (320 баллов)
0 голосов
3 ответов
спросил 10 Март, 14 от Texnik (1,860 баллов)
0 голосов
0 ответов
спросил 19 Авг, 13 от ilYA007OY (120 баллов)
+1 голос
2 ответов
0 голосов
0 ответов