Зміст

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 - звернемо увагу на нюанси:\

Трохи механіки

Робота цього функціоналу доволі нехитра: дивимося в таблицю платежів, забираємо з неї 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”. Хіба що на перший час після ввімкнення цього функціоналу або для траблшутингу.