Yandex Metrika
sanches.free

Платёжные обработчики в Битрикс Sale (D7)

С чего начинается платёжный обработчик Sale D7

В новой модели платёжная интеграция оформляется как отдельный каталог под /bitrix/php_interface/include/sale_payment/ или /local/php_interface/include/sale_payment/. Внутри лежит handler.php с описанием сервиса, .description.php с параметрами из административной части и подшаблоны в каталоге template. Для живого образца стоит заглянуть в поставочные решения каталога /bitrix/modules/sale/handlers/paysystem/.

Согласованность имени класса и каталога

Класс должен наследовать Bitrix\Sale\PaySystem\ServiceHandler, а фрагмент имени до суффикса Handler должен совпадать с именем папки. Иначе ядро поднимет сценарий совместимости и не распознает обработчик как полноценный D7. Если обработчик лежит в local, проверьте опцию path2user_ps_files — путь должен указывать на тот же префикс.

Ключевые точки жизненного цикла

initiatePay формирует дополнительные параметры и отдаёт шаблон оплаты. getPaymentIdFromRequest извлекает идентификатор оплаты из обратного запроса банка. Для валют реализуйте getCurrencyList. Обратные уведомления обрабатываются через /bitrix/tools/sale_ps_result.php: пара getIndicativeFields и isMyResponseExtended отфильтровывает «свой» ответ, после чего вызывается processRequest, где вы выставляете статусы и суммы согласно протоколу ПС.

namespace Sale\Handlers\PaySystem;

use Bitrix\Sale\PaySystem;

class DemoGatewayHandler extends PaySystem\ServiceHandler
{
    // Реализация initiatePay, getPaymentIdFromRequest, processRequest и т.д.
}

Диагностика

Ошибки фиксируются через PaySystem\ErrorLog::add. Их можно прочитать из таблицы b_sale_pay_system_err_log (в т.ч. через perfmon в админке) или небольшим PHP-скриптом с PaySystemErrLogTable::getList.

\Bitrix\Main\Loader::includeModule('sale');
$it = \Bitrix\Sale\Internals\PaySystemErrLogTable::getList(['order' => ['ID' => 'DESC']]);
while ($row = $it->fetch()) {
    print_r($row);
}

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии