Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Данный пост не будет содержать какого-либо готового решения, я лишь попытаюсь рассказать, как написать свой обработчик(или хотя бы дать малейшее представление), т.к. уж очень много спрашивают об этом службу ТП Не все в курсе какие файлы нужны в папке обработчика или если и знаю, то не в курсе зачем каждый из них существует.
Обработчики платёжных систем хранятся в папке /bitrix/modules/sale/payment и /bitrix/modules/sale/ru/payment.
Пользовательские обработчики помещаются в папку /bitrix/php_interface/include/sale_payment/
Обработчик представляется из себя папку с набором файлов.
В папке обработчика должны быть следующие файлы:
.description.php - файл содержит определение переменных описание ПС, названия и здесь же определяется массив свойств, которые можно получить в файле payment.php методом CSalePaySystemAction::GetParamValue(), входящим метода параметром является код свойства обработчика. Пример определения массива свойств обработчика платёжной системы деньги@mail.ru. Каждый ключ массива - код свойства обработчика, значение - массив описания свойства: название, описание, значение по умолчанию и тип. Тип может быть например ORDER(данные заказа) или PROPERTY(свойства заказа, которые пользователь ввёл при оформлении), это определяет выпадающий список значений свойств.
После определения этого массива в административной части сайта свойства выглядят так:
Назначение свойств обработчика: хранение нужных данных для проведения платежа или иных запросов к серверу ПС. Свойствах будут храниться секретные ключи, идентификаторы магазинов (присваиваются платёжными системами), суммы даты и другие данные, использование которых требует документация той или иной платёжной системы.
payment.php - файл, который подключается на последнем шаге оформления заказа, в нём доступны данные заказа и свойства самого обработчика(CSalePaySystemAction::GetParamValue()). Обычно в данном файле осуществляется вывод квитанции на экран или форма, которая отправляется на сайт платёжной системы нужные для оплаты данные. Тут могут подготавливаться данные и осуществляться запросы на сервер платёжной системы в соответствие с её документацией. Тут им могут понадобиться данные, которые сохранены в свойствах обработчика. Пример. Подготовка данных для запрос на деньги@mail.ru:
Формирование URL с параметрами запроса подготовленных данных:
Получаем номер платёжки ($invoice_number), что означает выставление счёта пользователю в платёжной системе деньги@mail.ru. Фиксируем номер платёжки в заказ:
Файл payment.php сделал своё дело.
Теперь пользователь в любое время может оплатить заказ на сайте money.mail.ru. Тут и встаёт задача, как узнать оплатил ли пользователь заказ или нет.
Для решения этой задачи в папке обработчика создаются файлы result.php или result_rec.php.
result.php - файл, в котором осуществляется запрос к серверу платёжной системы с нужными параметрами в соответствие с документацией платёжной системы. Если данный файл существует в папке обработчика, то в административной части сайта при просмотре заказа появляется кнопка "запросить" - нажимаем и исполняется файл result.php. В нём аналогично payment.php получить нужные данные, подготовить, сформировать запрос, отправить и получить ответ о сервера платёжной системы в документированном формате.
В зависимости от ответа сервера производить манипуляции с заказом используя API Битрикса. Пример такой схемы тут:
\bitrix\modules\sale\payment\money.mail\result.php
result_rec.php - обработчик результата оплаты в публичной части.
В настройках ПС нужно указать кодировку, поместить компонент bitrix:sale.order.payment.receive и настроить его на платёжную систему.
Путь к странице с компонентом обычно указывается в настройках магазина, зарегистрированного на стороне платёжной системы. Сервер платёжной системы сам будет делать запрос на указанную вами страницу и передавать данные об оплате, который обрабатываются в файле result_rec.php.
Также в папке обработчика создаются папки с идентификаторами языков для подключения соответствующих языковых файлов в файлах обработчика.
Более подробно вы можете посмотреть упомянутые файлы в папках обработчиков, которые находятся сами теперь знаете где =)
Выглядит всё примерно так:
Если всё сделать правильно, то при создании платёжной системы в списке обработчиков вы сможете увидеть свой.
Конец.
Назад в раздел
то ждем ваше обращение в нашей службе тех поддержки.
Как написать свой обработчик платёжной системы
Привет,Данный пост не будет содержать какого-либо готового решения, я лишь попытаюсь рассказать, как написать свой обработчик(или хотя бы дать малейшее представление), т.к. уж очень много спрашивают об этом службу ТП Не все в курсе какие файлы нужны в папке обработчика или если и знаю, то не в курсе зачем каждый из них существует.
Обработчики платёжных систем хранятся в папке /bitrix/modules/sale/payment и /bitrix/modules/sale/ru/payment.
Пользовательские обработчики помещаются в папку /bitrix/php_interface/include/sale_payment/
Обработчик представляется из себя папку с набором файлов.
В папке обработчика должны быть следующие файлы:
.description.php - файл содержит определение переменных описание ПС, названия и здесь же определяется массив свойств, которые можно получить в файле payment.php методом CSalePaySystemAction::GetParamValue(), входящим метода параметром является код свойства обработчика. Пример определения массива свойств обработчика платёжной системы деньги@mail.ru. Каждый ключ массива - код свойства обработчика, значение - массив описания свойства: название, описание, значение по умолчанию и тип. Тип может быть например ORDER(данные заказа) или PROPERTY(свойства заказа, которые пользователь ввёл при оформлении), это определяет выпадающий список значений свойств.
$arPSCorrespondence = array( "KEY" => array( "NAME" =>GetMessage("MM_KEY"), "DESCR" => GetMessage("MM_KEY_DESC"), "VALUE" => "", "TYPE" => "" ), "BUYER_EMAIL" => array( "NAME" => GetMessage("MM_EMAIL"), "DESCR" => GetMessage("MM_EMAIL_DESC"), "VALUE" => "EMAIL", "TYPE" => "PROPERTY" ), "SHOULD_PAY" => array( "NAME" => GetMessage("MM_SHOULD_PAY"), "DESCR" => GetMessage("MM_SHOULD_PAY_DESC"), "VALUE" => "PRICE", "TYPE" => "ORDER" ), "CURRENCY" => array( "NAME" => GetMessage("MM_CURRENCY"), "DESCR" => GetMessage("MM_CURRENCY_DESC"), "VALUE" => "CURRENCY", "TYPE" => "ORDER" ), "ORDER_ID" => array( "NAME" => GetMessage("MM_ORDER_ID"), "DESCR" => "", "VALUE" => "ID", "TYPE" => "ORDER" ), "DATE_INSERT" => array( "NAME" => GetMessage("MM_DATE_INSERT"), "DESCR" => GetMessage("MM_DATE_INSERT_DESC"), "VALUE" => "DATE_INSERT", "TYPE" => "ORDER" ), ); |
После определения этого массива в административной части сайта свойства выглядят так:
Назначение свойств обработчика: хранение нужных данных для проведения платежа или иных запросов к серверу ПС. Свойствах будут храниться секретные ключи, идентификаторы магазинов (присваиваются платёжными системами), суммы даты и другие данные, использование которых требует документация той или иной платёжной системы.
payment.php - файл, который подключается на последнем шаге оформления заказа, в нём доступны данные заказа и свойства самого обработчика(CSalePaySystemAction::GetParamValue()). Обычно в данном файле осуществляется вывод квитанции на экран или форма, которая отправляется на сайт платёжной системы нужные для оплаты данные. Тут могут подготавливаться данные и осуществляться запросы на сервер платёжной системы в соответствие с её документацией. Тут им могут понадобиться данные, которые сохранены в свойствах обработчика. Пример. Подготовка данных для запрос на деньги@mail.ru:
$SITE_NAME = COption::GetOptionString("main", "server_name", ""); $dateInsert = (strlen(CSalePaySystemAction::GetParamValue("DATE_INSERT")) > 0) ? CSalePaySystemAction::GetParamValue("DATE_INSERT") : $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"]; $arParams['issuer_id'] = $ORDER_ID; $arParams['access_key'] = (strlen(CSalePaySystemAction::GetParamValue("KEY")) > 0) ? CSalePaySystemAction::GetParamValue("KEY") : $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["KEY"]; $arParams['shouldPay'] = (strlen(CSalePaySystemAction::GetParamValue("SHOULD_PAY")) > 0) ? CSalePaySystemAction::GetParamValue("SHOULD_PAY") : $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"]; $arParams['buyer_email'] = (strlen(CSalePaySystemAction::GetParamValue("BUYER_EMAIL")) > 0) ? CSalePaySystemAction::GetParamValue("BUYER_EMAIL") : $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"]; $arParams['currency'] = (strlen(CSalePaySystemAction::GetParamValue("CURRENCY")) > 0) ? CSalePaySystemAction::GetParamValue("CURRENCY") : $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"]; $arParams['buyer_ip'] = $_SERVER['REMOTE_ADDR']; $arParams['description'] = base64_encode((ToUpper(SITE_CHARSET) != ToUpper('windows-1251')) ? $APPLICATION->ConvertCharset(GetMessage("MM_DESC",Array('#ORDER_ID#' => $ORDER_ID, '#DATE#' => $dateInsert, '#SITE_NAME#' => $SITE_NAME)), SITE_CHARSET, 'windows-1251') : GetMessage("MM_DESC", Array('#ORDER_ID#' => $orderID, '#DATE#' => $dateInsert, '#SITE_NAME#' => $SITE_NAME))); |
Формирование URL с параметрами запроса подготовленных данных:
$sHost = "merchant.money.mail.ru"; $sUrl = "/api/invoice/make"; $sVars ="key=".$arParams['access_key']."&buyer_email=".$arParams['buyer_email']."&sum=".(str_replace(",", ".", $arParams['shouldPay']))."¤cy=".$arParams['currency']."&description=".$arParams['description']."&buyer_ip=".$arParams['buyer_ip']."&issuer_id=".$arParams['issuer_id']; $invoice_number = QueryGetData($sHost, 443, $sUrl, $sVars, $errno, $errstr, "GET", "ssl://"); |
Получаем номер платёжки ($invoice_number), что означает выставление счёта пользователю в платёжной системе деньги@mail.ru. Фиксируем номер платёжки в заказ:
if (is_numeric($invoice_number)) CSaleOrder::Update($ORDER_ID, Array('PAY_VOUCHER_NUM' => $invoice_number, 'PAY_VOUCHER_DATE' => $dateInsert)); |
Файл payment.php сделал своё дело.
Теперь пользователь в любое время может оплатить заказ на сайте money.mail.ru. Тут и встаёт задача, как узнать оплатил ли пользователь заказ или нет.
Для решения этой задачи в папке обработчика создаются файлы result.php или result_rec.php.
result.php - файл, в котором осуществляется запрос к серверу платёжной системы с нужными параметрами в соответствие с документацией платёжной системы. Если данный файл существует в папке обработчика, то в административной части сайта при просмотре заказа появляется кнопка "запросить" - нажимаем и исполняется файл result.php. В нём аналогично payment.php получить нужные данные, подготовить, сформировать запрос, отправить и получить ответ о сервера платёжной системы в документированном формате.
В зависимости от ответа сервера производить манипуляции с заказом используя API Битрикса. Пример такой схемы тут:
\bitrix\modules\sale\payment\money.mail\result.php
result_rec.php - обработчик результата оплаты в публичной части.
В настройках ПС нужно указать кодировку, поместить компонент bitrix:sale.order.payment.receive и настроить его на платёжную систему.
Путь к странице с компонентом обычно указывается в настройках магазина, зарегистрированного на стороне платёжной системы. Сервер платёжной системы сам будет делать запрос на указанную вами страницу и передавать данные об оплате, который обрабатываются в файле result_rec.php.
Также в папке обработчика создаются папки с идентификаторами языков для подключения соответствующих языковых файлов в файлах обработчика.
Более подробно вы можете посмотреть упомянутые файлы в папках обработчиков, которые находятся сами теперь знаете где =)
Выглядит всё примерно так:
Если всё сделать правильно, то при создании платёжной системы в списке обработчиков вы сможете увидеть свой.
Конец.
Назад в раздел
Подписаться на новые материалы раздела: