267  /  382
Справочник

Собственный обработчик онлайн-кассы

Просмотров: 25954
Дата последнего изменения: 13.11.2023
Татьяна Старкова
Сложность урока:
4 уровень - сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
1
2
3
4
5
Недоступно в лицензиях:
Стандарт, Малый бизнес

Не подходит стандартный обработчик онлайн-кассы? Используйте API продукта и напишите свой обработчик. Для этого вам необходимо:

  • Унаследовать класс \Bitrix\Sale\Cashbox\Cashbox и реализовать необходимые методы:
    Примечание: дополнительно вы можете использовать следующие интерфейсы:
    • \Bitrix\Sale\Cashbox\IPrintImmediately - необходим для отправки чека на печать сразу же после его создания;
    • \Bitrix\Sale\Cashbox\ICheckable - необходим, если требуется запрашивать информацию о результатах печати чека.
    use \Bitrix\Sale\Cashbox\Cashbox,
    	\Bitrix\Sale\Cashbox\Check,
    	\Bitrix\Sale\Cashbox\IPrintImmediately,
    	\Bitrix\Sale\Cashbox\ICheckable;
    
    class CashboxCustom extends Cashbox implements IPrintImmediately, ICheckable
    {
    	/**
    	 * @param Check $check
    	 * @return array
    	 */
    	public function buildCheckQuery(Check $check)
    	{
    		// построение запроса с информацией по чеку
    	}
    
    	/**
    	 * @param $id
    	 * @return array
    	 */
    	public function buildZReportQuery($id)
    	{
    		// построение запроса на печать z-отчета
    		// если печать z-отчета не требуется, возвращается пустой массив
    	}
    	
    	public function printImmediately(Check $check)
    	{
    		// алгоритм отправки чека на печать
    	}
    	
    	public function check(Check $check)
    	{
    		// алгоритм запроса состояния чека
    	}
    
    	/**
    	 * @return string
    	 */
    	public static function getName()
    	{
    		// название обработчика
    		return Localization\Loc::getMessage('SALE_CASHBOX_CUSTOM_TITLE');
    	}
    	
    	/**
    	 * @param array $data
    	 * @throws Main\NotImplementedException
    	 * @return array
    	 */
    	protected static function extractCheckData(array $data)
    	{
    		// извлечение данных по чеку дальнейшего сохранения
    	}
    	public static function getVersion() ?: float
    	{
    		// версия ФФД, с которой работает обработчик
    		return null; 
    	}
    }
  • Подключить обработчик кассы к системе с помощью события OnGetCustomCashboxHandlers. Обработчик события должен возвращать массив вида: array(полное_имя_класса => путь_к_файлу):
    AddEventHandler("sale", "OnGetCustomCashboxHandlers", 'myCashboxFunction');
    
    function myCashboxFunction()
    {
    	return new \Bitrix\Main\EventResult(
    		\Bitrix\Main\EventResult::SUCCESS,
    		array(
    		'\CashboxCustom' => '/bitrix/php_interface/include/cashboxcustom.php',
    		)
    	);
    }
    

В результате в административном разделе сайта в настройках кассы появится ваш обработчик.

Список ссылок по теме:



9
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии