Для чего это нужно:
При запуске обработчика Pay API, через cron или консольную команду, проводятся все платежи, у которых:
В базе данных создана таблица «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 года с нами');
Описание полей:
Атрибут | Тип данных | 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 грн. за покупку роутера каждый месяц».
Добавить сумму категорий по следующим правилам: