Вступление

Нотификации непосредственно клиенту выполняет только Zegoal. Биллинг нотифицирует внешнюю систему (Zegoal) через API о событиях. Все нотификации имеют тип и подтип (код нотификации), которые определяют событие, по которому было сформировано нотификацию и логику формирования (сроки, ...).

Описание API

REST API по HTTPS. Метод POST. Ключи (подпись) отправляются в заголовках сообщений.

В ответ получаем или успех (код = 200) или ошибку.

URL Zegoal

Для прод-сервера:
- основной сайт прода: `https://web.zegoal.com`
- нотификации будут обрабатываться по пути: `{subdomain}.zegoal.com/api/billing_notification/`
- пример subdomain: org1. Полный адрес обработки нотификации для каждого аккаунта храним в атрибуте contact.noti_user в account.
- пример пути для нотификаций для org1: https://org1.zegoal.com/api/billing_notification/

На стороне нашего клиента они используют отдельный сабдомен для КАЖДОГО АБОНЕНТА.
То есть один канал нотификации ожидает события ТОЛЬКО по одному абоненту.


Принимает POST запросы с форматом json. Ориентировалась на https://docs.true-item.com/display/ZEG/Notification+JSON+examples . Минимальная проверка - присутствие `billing_id`. Если обработка успешна - придёт http-код 2хх, конкретно сейчас приходит 201. Проблемы при обработке -> отрицательные коды(4хх или 5хх, в зависимости от степени проблемы).

Типы нотификаций

CodeОписаниеТриггер событияВремя доставки
ПриоритетUseCase
1InvoiceForNewPeriod

Выставленный счет (1-ого числа)

планировщикПо расписанию, раз в сутки

При выполнения триггера на формирования инвойсов "с 1 по 1".

Для всех аккаунтов в состоянии Active, Suspended, для которых сформировались инвойсы.

1
2InvoiceForNewProductВыставление счета при продаже нового продуктаreal time, планировщикСразу после генерирования

После выполнения продажи продукта (любого типа) для аккаунта с типом Prepaid и формирования инвойса на предоплату нового продукта.

Для всех аккаунтов в состоянии Trial, Active, Suspended.

1
3UnPaidInvoiceВсе еще неоплаченный счет, не покрытый полностью (5, 7, 9 дней с момента выставления)планировщикПо расписанию, раз в суткиДля всех аккаунтов в состояниях Trial, Active, Suspended проверить, есть ли для него инвойсы c атрибутом Paid = No.1
4AccountStateChangeСмена состояния аккаунта (с любого в любое)

real time, планировщик

Сразу после генерирования

После выполнения API SetLC.

Для всех аккаунтов в состоянии Trial, Active, Suspended.

1
5TrialReminderОстаток срока триального периода (5, 3, 1 день)планировщикПо расписанию, раз в суткиДля аккаунтов в состоянии Trial.11.7
6PercentOfBalanceUsed% задач или единиц продукта использовано (50, 80, 100)real timeСразу после генерирования
2
7ProductStateChangeАктивация/Деактивация продукта (любого)real time, планировщикСразу после генерирования

После выполнения API UpdateSoldProductLC.

Для всех аккаунтов в состоянии Trial, Active, Suspended.

1
8NewPaymentДля аккаунта создан платежreal timeСразу после генерирования

После выполнения API AddPayment. 

Для всех аккаунтов в состоянии Trial, Active, Suspended.

1

Подтипы нотификаций


Тип (code)Подтип (Код нотификации)Описание
1InvoiceForNewPeriodFromFirstToFirstНовый счет по периоду с 1 по 1 число месяца
2InvoiceForNewProductNewPrepaidProductСчет для предоплаты нового продукта
3UnPaidInvoiceUnPaid5DaysВсе еще неоплаченный счет 5 дней с момента выставления
4
UnPaid7DaysВсе еще неоплаченный счет 7 дней с момента выставления
5
UnPaid9DaysВсе еще неоплаченный счет 9 дней с момента выставления
6AccountStateChangeAllStateChangesНотификация по всем сменам состояния
7TrialReminder5DayReminder5 дней до завершения триального периода
8
3DayReminder3 дня до завершения триального периода
9
1DayReminder1 день до завершения триального периода
10PercentOfBalanceUsed50TasksИспользовано 50% баланса задач за текущий период
11
80TasksИспользовано 80% баланса задач за текущий период
12
100TasksИспользовано 100% баланса задач за текущий период
13
50ProductUserИспользовано 50% баланса единиц продукта (пользователей) за текущий период
14
80ProductUserИспользовано 80% баланса единиц продукта (пользователей) за текущий период
15
100ProductUserИспользовано 100% баланса единиц продукта (пользователей) за текущий период
16ProductStateChangeAllStateChangesИзменения состояния продуктов любого типа для аккаунта
17NewPaymentCreatedAllTypePaymentДля аккаунта создан новый платеж

Структура нотификаций

Нотификации состоят из корневых атрибутов (шапка) и атрибутов конкретного сообщения, которые могут отличаться для всех типов нотификаций.

Корневые атрибуты

описание
1ID сообщения
2timestamp, когда произошло событие, по которому надо послать нотификацию
3timestamp, когда было сгенерировано сообщение
4timestamp, когда отправилась нотификация
5

Тип события (например, "PercentOfBalanceUsed" - нотификация по достижению порогового значения)

6

Код нотификации (например, "80% задач использовано")

7Внутренний ID аккаунта (абонента) - Ti-Rate Account ID
8Внешний ID аккаунта (абонента) - тот, который важен для ZeGoal
9

Атрибуты события (тело нотификации)

10

Код языка аккаунта  TAD-1923 - Getting issue details... STATUS

11

Код валюты аккаунта  TAD-1923 - Getting issue details... STATUS

Атрибуты событий по типам


Тип нотификацииDescription and attributes
1InvoiceForNewPeriod

Содержит

  • ссылку на PDF файл счета
  • ID инвойса 
  • Тип инвойса
  • Период
  • URL to pay ( TAD-1992 - Getting issue details... STATUS )

На каждый инвойс высылается отдельное сообщение.

2InvoiceForNewProduct

Содержит

  • ссылку на PDF файл счета
  • ID инвойса 
  • Тип инвойса
  • Период
  • URL to pay ( TAD-1992 - Getting issue details... STATUS )

На каждый инвойс высылается отдельное сообщение.

3UnPaidInvoice

Содержит

  • ссылку на PDF файл счета
  • ID инвойса
  • Дата выставления
  • Дата истечения срока
  • Не оплачен, дней
  • Количество дней до автоматической приостановки сервиса (блокировки)

На каждый неоплаченный инвойс отдельная нотификация.

4AccountStateChange

Содержит

  • причина смены
  • детали нового состояния
    • состояние
    • дата с
    • дата до (может быть пустая)
  • детали старого состояния
    • состояние
    • дата с
    • дата до
5TrialReminder

Содержит

  • Дата начала триального периода
  • Текущая дата
  • Остаток дней
6PercentOfBalanceUsed

Содержит

  • Название баланса
  • Начислено в начале периода
  • Использовано, %
  • Текущее абсолютное значение
7ProductStateChange

Содержит

  • Действие (Активация / Деактивация)
  • Продукт
  • Тип продукта
  • Внутренний код продукта (Ti-Rate Product ID)
  • Код проданного продукта аккаунта  TAD-1952 - Getting issue details... STATUS
  • Внешний код продукта
  • Действие (активация, добавление, блокировка, удаление)
  • детали нового состояния
    • состояние (Активен / Неактивен)
    • дата с
    • дата до (может быть пустая)
  • детали старого состояния
    • состояние (Активен / Неактивен)
    • дата с
    • дата до
8NewPaymentCreated

Содержит

  • Канал платежа
  • Название баланса
  • Внешний ID платежа
  • ID инвойса - массив с перечнем ID инвойсов, которые были частично/полностью покрыты последним платежом 
  • Сумма платежа
  • Баланс до платежа
  • Баланс после платежа