Собственная платежная система/терминал API (pay api)

Для чего это нужно:

  • вы можете сами наладить связь между вашей платёжной системой/терминалом и биллингом;
  • можете заполнять таблицу на списание средств с пользователя (доп. услуги);
  • возвращение средств пользователю по акции (например, за покупку роутера).

При запуске обработчика Pay API, через cron или консольную команду, проводятся все платежи, у которых:

  • атрибут `status` = 0 и
  • атрибут `creation_time` меньше текущего времени сервера.

В базе данных создана таблица "addons_pay_api". Вы её заполняете, а cron проводит платежи на пополнение/списание средств с пользователя в соответствием с наполнением таблицы с частотой раз в 5 минут (зависит от настройки в cron). Также можно вызвать обработку таблицы в "ручном режиме" из админки: "Дополнительно" → "Консольные команды" - написать "do_api_terminal_payments".

Мы настоятельно рекомендуем НЕ вызывать обработчик запланированных платежей отдельно от cron, так как это может привести к клонированию пополнений/списаний при одновременном запуске обработчика несколько раз.

Добавлять записи в таблицу `addons_pay_api` необходимо со `status` = 0. Пример кода SQL запроса для добавления в таблицу:

INSERT INTO `addons_pay_api` (`record_id`, `transaction_id`, `misc_id`, `category`, `user_ref`, `amount`, `creation_time`, `update_time`, `status`, `comment`)
  VALUES (NULL , 1333 , '' , 28 , 162 , 20.50 , NOW() , NOW() , 0 , 'спасибо, что Вы 2 года с нами');

Содержимое атрибута `comment` попадёт в комментарий проведённого платежа и будет видно в Личном Кабинете.

Если атрибут `amount` положительный, то сумма будет начислена на счёт абонента, если отрицательный - будет списана со счёта.

Отчёты по "Терминал API" можно посмотреть в админке:

  • "Отчёты" → "pay API" → "Общий отчёт" - все транзакции, дата создания которых припадает на выбранный период;
  • "Отчёты" → "pay API" → "Суммарный отчёт" - суммы по всем категориям (даже тем, которых нет в справочнике) за выбранный период.

Описание полей:

Атрибут Тип данных Default Value Описание
record_id BIGINT AI уникальный идентификатор платежа
transaction_id BIGINT 0 ссылка на платеж во внешней системе
misc_id VARCHAR(128) '' разное, например ссылка на терминал во внешней системе
category SMALLINT 0 категория платежа во внешней системе, несет чисто информационный характер, означает "за что этот платеж"
user_ref BIGINT UID пользователя, которому должен быть зачислен платеж
amount DECIMAL(19,4) сумма платежа, положительная либо отрицательная
creation_time TIMESTAMP 0000-00-00 00:00:00 время, после которого платёж будет активирован
update_time TIMESTAMP 0000-00-00 00:00:00 время последнего обновления статуса платежа в этой таблице
status SMALLINT 0 статус платежа
comment VARCHAR(128) комментарий к платежу

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

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

Атрибут `status` (значение статуса платежа можно посмотреть в справочнике 'pay API статусы'):

Числовое значение Пояснение
0 Ожидает обработки
1 Зачислен активному пользователю
2 Зачислен замороженному пользователю
3 Зачислен отключенному пользователю
4 Зачислен удаленному пользователю
5 Не обработан (пользователь не найден)

Категории платежей заполняются вручную в справочниках: 'Настройки' → 'Справочники' → 'pay API категории'.

ID категории может принимать значение от -32768 до 32767.

Рекомендуется использовать "отрицательные ID" для "не прибыльных" платежей, например: "возвращаем 20 грн. за покупку роутера каждый месяц".

Обработчик такой же, как и для всех остальных консольных команд. Добавьте вызов консольной команды "do_api_terminal_payments" в необходимый Вам скрипт, который вызывается cron'ом.
запуск_из_косноли

Добавить сумму категорий по следующим правилам:

  • Прибыль - суммирование по категориям, которые > 0
  • Списано - суммирование по категориям, которые < 0 и сама сумма < 0
  • Начислено - суммирование по категориям, которые < 0 и сама сумма > 0 (т.е. это не прибыль, а подарок пользователю на счёт)
  • billing/configuration/payment_api.txt
  • Последние изменения: 4 лет назад
  • — nickcool