Инструменты пользователя

Инструменты сайта


Боковая панель

Разделы

Общее описание
История изменений
Рекомендации к обновлению
Планы на будущее
Известные проблемы
Онлайн демо
Случайная статья
Видео
Помощь проекту
Люди

FAQ



Редактировать сайдбар

opayzsmsnotify

SMS-уведомления OpenPayz

Начиная с релиза 1.2.7 появилась возможность отсылки уведомлений об успешном пополнении счёта абонентам, которые произвели оплату через OpenPayz(терминалы, банк-клиенты, etc). Да, на манер сообщений от мобильных операторов об успешном пополнении баланса.

Включение и сопутствующие опции

Собственно - опции alter.ini:

OP_SMS_NOTIFY_ENABLED=0
OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL=5
OP_SMS_NOTIFY_USE_EXTMOBILES=0
OP_SMS_NOTIFY_FORCED_TRANSLIT=0
OP_SMS_NOTIFY_DEBUG_ON=0
OP_SMS_NOTIFY_TEXT="Vash rakhunok popovneno na {ROUNDPAYMENTAMOUNT} grn. Zalyshok na vashomu rahunku skladae {ROUNDBALANCE} grn. Dyakuemo za te, scho vy z namy." 
OP_SMS_NOTIFY_RESPECT_REMINDER_TAGID=0

Так как подавляющее большинство из них вполне себе self-explanatory - обратим внимание на нюансы:

  • Включение, естественно, производится опцией OP_SMS_NOTIFY_ENABLED
  • Текст нотификашек задается опцией OP_SMS_NOTIFY_TEXT. Тут стоит отметить два на данный момент поддерживаемых макроса:
    • {ROUNDPAYMENTAMOUNT} - округленная до копеек сумма пополнения
    • {ROUNDBALANCE} - округленный до копеек баланс абонента ПОСЛЕ пополнения
  • OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL - пожалуй единственная опция, на которой стоит сделать акцент:
    • во-первых - она задаёт интервал в МИНУТАХ. не в секундах, не в миллисекундах, не в часах, не в чём либо ещё. В__ М И Н У Т А Х.
    • во-вторых - этот интервал(количество этих самых минут) должен быть больше, чем частота запуска вызова opayzsmsnotify из RemoteAPI. Да, хотя бы на единицу больше. Почему так - читаем в секции ниже.
  • OP_SMS_NOTIFY_RESPECT_REMINDER_TAGID - контролирует наличие тега REMINDER_TAGID у юзера при отправке СМС уведомления. Если тега нет - например, юзер отключил СМС уведомления в ЛК - уведомление не производится.

Немного механики

Работа данного функционала довольно незамысловата: смотрим в таблицу платежей, забираем из нее OpenPayz платежи за последние OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL минут, складываем их в отдельную служебную табличку(перед тем проверив существование в ней уже «пронотифицированнх» из только что выбранных и исключив их), производим отправку уведомлений, проставляем статус «отправлено» в служебной табличке. Почему важно, чтобы OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL был хотя бы на единицу больше, чем частота вызовов opayzsmsnotify из RemoteAPI? - чтобы избежать «проигноренных» платежей. При выборке платежей для процессинга из таблицы платежей на текущую_дату_время сервис опирается только в самом начале, в момент самого первого запуска, а всё остальное время он берёт дату_время последнего обработанного(пронотифицированного) платежа, и уже именно из этого таймстампа вычетает те самые OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL минуты, получая дату_время, начиная с которой и будут забираться платежи из таблицы платежей. Да, несмотря на то, что «приняты все возможные меры» - существует вероятность, что конкретно взятый OpenPayz платёж попадёт где-то в «зазор» между запусками из крона и OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL и будет попросту проигнорирован, так как по времени не попадёт в выборку.
Именно потому настоятельная рекомендация: если строка в кронтабе у вас выглядит как-то так:

*/2 * * * *    /bin/ubapi "opayzsmsnotify"

то OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL сделайте равной 3(а то и 4 - хуже от этого никому особо не станет). Ну и наоборот: установив OP_SMS_NOTIFY_PAYMENTS_PULL_INTERVAL в какое-то значение не забудьте несколько увеличить частоту вызовов opayzsmsnotify, уменьшив интервал вызовов.

А - да - опцию OP_SMS_NOTIFY_DEBUG_ON в продакшене юзать категорически не рекомендуется - она крайне «verbose». Разве что на первое время после включения данного функционала или для траблшутинга.

opayzsmsnotify.txt · Последние изменения: 2022/05/10 22:05 — bobr