Дата последнего изменения: 13.11.2023
Средства системы позволяют кастомизировать и добавлять свои собственные платежные системы, причем в магазине на ядре D7 они представляют из себя классы. Следовательно, можно использовать механизм наследования:
Собственный обработчик платёжной системы необходимо добавлять в пространство имён \Sale\Handlers\PaySystem\
, иначе он не подключится.
Пример наследования для платежных систем:
class YandexHandler extends ServiceHandler implements IReturn, IHold { public static function initiatePay(Payment $payment) { $params = array('URL' = > $this->getUrl($payment, 'pay')); $this->setExtraParams($params); return $this->showTemplate($payment, "template"); } public static function getIndicativeFields() { return array('BX_HANDLER' => 'YANDEX'); } }
Система будет искать обработчик в следующих директориях:
protected static $handlerDirectories = array( 'CUSTOM' => путь берется из опции path2user_ps_files (по умолчанию "/php_interface/include/sale_payment/") 'LOCAL' => '/local/php_interface/include/sale_payment/', 'SYSTEM' => '/bitrix/modules/sale/handlers/paysystem/' 'SYSTEM_OLD' => '/bitrix/modules/sale/payment/' )
Если при копировании не изменить имя (оставить /bitrix/php_interface/include/sale_payment/yandex
), то в настройках платежных систем можно будет использовать только кастомный обработчик. Системный (тот, который копировался) не будет доступен, то есть кастомный обработчик подменяет системный.
Из этого вытекает следующее: если при копировании системного обработчика в свое пространство имен его имя меняется, то необходимо переименовать класс. Например, если мы скопировали системный yandex в /bitrix/php_interface/include/sale_payment/yandexnew
, то в файле handler.php наследование должно быть так:
class YandexNewHandler extends PaySystem\BaseServiceHandler
/bitrix/php_interface/include/sale_payment/yandexnew
конечная папка yandexnew не должна содержать слово handler. Название папки должно быть в нижнем регистре.Вы можете ограничить использование платежной системы по каким-либо параметрам. Например, по службе доставки. Для этого применяйте стандартные ограничения. Если же необходимо что-то особенное, то создайте собственные типы ограничений.
Структура массива с описанием настроек обработчика платежной системы хранится в переменной $data и имеет вид:
$data = array( 'NAME' => 'название_платежной_системы', 'SORT' => 500, 'CODES' => array( // массив параметров, необходимых для настройки "КОД_ПАРАМЕТРА" => array( "NAME" => 'НАЗВАНИЕ_ПАРАМЕТРА', "DESCRIPTION" => 'ОПИСАНИЕ_ПАРАМЕТРА', 'SORT' =>100, 'GROUP' => 'КОД_ГРУППЫ', 'DEFAULT' => array( // значение по умолчанию 'PROVIDER_KEY' => 'КЛЮЧ', // тип значения: (PAYMENT, ORDER, SHIPMENT, USER, COMPANY, VALUE) 'PROVIDER_VALUE' => 'DATE_BILL' // значение: поля из конкретной сущности, либо произвольное значение ) ), ... ) );
Для вывода описания при создании обработчика необходимо объявить переменную $description:
$description = array( 'MAIN' => 'ОПИСАНИЕ ОБРАБОТЧИКА' );