Как настроить платёжную систему или подключить новую?

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (9)

просмотр истории страницы
{toc:maxLevel=2} {toc:maxLevel=3}

h2. Введение
Ниже рассмотрим какие параметры для чего нужны.

h4. declare \-A elexnet

В первой строке задается системное имя вашей ПС (в примере - elexnet), далее определяется массив с этим же именем.
Личный кабинет использует общий обработчик запроса для всех платежных систем. Вам необходимо добавить в него условия для вашей платежной системы.

Это необходимо, если абонент начинает оплату в личном кабинете. Это создаёт идентификатор платежа в биллинге, который будет использован при обработке уведомления от платёжной системы.

Изменения в модуле не нужны, если абонент оплачивает без захода в личный кабинет: платёжный терминал, банковское приложение, сайт платёжной системы.

Работа с файлом похожам на работу с [кастомным модулем личного кабинета|CarbonBilling:Пользовательские модули в cabinet_modules].

Файл размещается по пути */app/asr_cabinet/usr/local/lib/cabinet_modules/modules/Payment.php*


Код для вашей ПС будет выглядеть аналогично.
Когда модуль будет готов, его необходимо скопировать в каталог хранения:
{code}/app/asr_cabinet/var/cabinet_modules/{code}

Так пользовательский модуль не исчезнет во время обновления, а также попадёт в бекап личного кабинета.

{note}
{color:#ff0000}{*}Внимание\!*{color} Файлы из каталога хранения затирают более старые файлы в рабочем каталоге (для того, чтобы можно было заменять стандартные модули)

Это значит, что если в каталоге хранения будет находиться файл, не являющийся модулем, может перестать работать личный кабинет.
{note}


h2. Шаблон формы запроса платежа

{code}

h3. Параметры dbwork обработчика уведомлений

h4. Параметр обработчика уведомлений ACT

Указывает на необходимое действие с платежом

* CHECK - проверка доступности пополнения счета и статуса транзакции.
* CHECK_ABONENT - проверка доступности пополнения счета без проверки транзакции.
* ADD - создание транзакции. В ответе содержит идентификатор транзакции, по этому PAY_ID нужно будет совершать остальные действия.
* PAY - подтверждение транзакции, пополняет счёт абонента.
* CANCEL - отмена транзакции, сторнирование пополнения.

h4. Другие параметры обработчика

* PAY_ID - поле ID заказа, идентификатор транзакции в системе биллинга.
* ACCOUNT - поле для поиска абонента. Содержимое должно соответствовать настройкам из [статьи "поле для идентификации абонента"|CarbonBilling:Платежные системы. Общее]. Если заказ был ранее создан в личном кабинете или методом ADD, то можно не указывать.
* SUMMA - сумма заказа. Если заказ был ранее создан в личном кабинете или методом ADD, то можно не указывать.
* OPERATOR_DATE - время операции, по умолчанию текущее.
* PREVENT_SUBMIT_CHECK - флаг для отключения отправки чеков. Используется для платёжных систем с собственной отправкой чеков.
* DATE_FROM - Фильтр даты для получения списка транзакций в команде CHECK.
* DATE_TO - Фильтр даты для получения списка транзакций в команде CHECK.

h3. Результат работы dbwork обработчика уведомлений

Метод возвращает результат в виде массива, где под ключом *res* содержится код, а под ключом *msg* текстовое описание.

Коды обрабатываются в методе *prepare_result()*, по умолчанию следующие:

* 0 - OK, успешно.
* 20 - Платеж уже проведен, возвращаем старые данные. Транзакция была подтверждена ранее. Код 20 превращается в код 0 в методе *prepare_result*.
* 20 - Сумма дублирующего платежа не совпадает с оригиналом. Транзакция была подтверждена ранее, но сумма в ней отличается от суммы, переданной в текущем запросе. Код 20 превращается в код 0 в методе *prepare_result*.
* 20 - Дата дублирующего платежа не совпадает с оригиналом. Транзакция была подтверждена ранее, но дата в ней отличается от даты, переданной в текущем запросе. Код 20 превращается в код 0 в методе *prepare_result*.
* 51 - Не указан параметр для поиска абонента. Нужно указать хотя бы один параметр для поиска абонента. Код 51 превращается в код 4 в методе *prepare_result*.
* 52 - В платеже не указана сумма. Код 52 превращается в код 7 в методе *prepare_result*.
* 52 - User is deleted. Абонент найден, но удалён в коризну. Код 52 превращается в код 7 в методе *prepare_result*.
* 52 - User or group is disabled. Абонент найден, но заблокирован администратором или в системной блокировке. Код 52 превращается в код 7 в методе *prepare_result*.
* 53 - Абонент не найден. Код 53 превращается в код 5 в методе *prepare_result*.
* 71 - Неизвестный оператор. Нужно передать имя платёжной системы.
* 73 - Неизвестная команда. Нужно указать корректный параметр ACT.
* 81 - Невозможно получить старые данные. Транзакция была подтверждена ранее, но не удаётся получить данные из соответствующей финансовой операции.
* 99 - Неизвестная ошибка. Код 99 превращается в код 300 в методе *prepare_result*.
* 102 - Транзакции не существует. Код 102 превращается в код 0 в методе *prepare_result*.
* 202 - Транзакция уже отменена.
* 300 - Неизвестная ошибка. Все неизвестные коды превращаются в код 300 в методе *prepare_result*.

h2. Отладка обработчика уведомлений

{code}

Добавленные таким образом записи будут сохранены в лог */app/asr_fiscal/var/log/paysystems/название_обработчика.log*



h2. Отправка чеков в налоговую по ФЗ-54

По-умолчанию чеки по онлайн платежам отправляются в налоговую если настроена интеграция с [онлайн-кассами|CarbonBilling:Передача данных [онлайн-кассами|Онлайн-кассы (передача чеков ОФД по ФЗ-54)].
Если Ваша платёжная система сама отправляет чеки, Вы можете добавить её в список исключений. Для этого укажите _operator_name_ ("Payment_elexnet" из примера выше) платёжной системы в конфигурационном файле */app/asr_fiscal/cfg/config* в опцию "no_cheque_for". Если платёжных систем несколько, перечислите их идентификаторы через пробел, например:
{code}app['no_cheque_for']='Payment_elexnet OSMP_custom'{code}