Закрытие списаний с помощью Charge Closer

Модуль Charge Closer — фоновый процесс, следящий за системными сообщениями о завершении заказов. Эти сообщения содержат ID подписки и значение параметра Период удаления подписки для клиента (в сутках), установленное для нее в правиле предоставления (см. Создание правила предоставления). Charge Closer получает сообщение о завершении заказа и проверяет тип биллинга указанной подписки. Если тип биллинга подписки указан в настройках Charge Closer, то он вызывает API-метод Close charges для закрытия ее списаний от имени менеджера реселлера.

Для заказов на покупку, продление и переключение в зависимости от значения параметра Период удаления подписки для клиента (в сутках) модуль делает следующее:

  • Период удаления подписки для клиента (в сутках) равен -1 или 0 — сразу вызывает API-метод Close charges для закрытия ее списаний от имени менеджера реселлера.
  • Период удаления подписки для клиента (в сутках) больше 0 — создает отложенную операцию для вызова API-метода Close charges. Выполнение операции откладывается в зависимости от количества дней до следующего финансового дня для подписки:
    • Если количество дней до следующего финансового дня для подписки больше или равно значению параметра Период удаления подписки для клиента (в сутках), выполнение операции откладывается на N × 24 часа, где N — значение параметра. При этом для заказов на продление период, на который откладывается операция, может быть сокращен. Он сокращается на количество часов, прошедших после наступления даты истечения подписки, если заказ на продление завершается после даты истечения подписки, а в правиле предоставления задана настройка Истекшая подписка продлевается с даты истечения.
    • Если количество дней до следующего финансового дня для подписки меньше значения параметра Период удаления подписки для клиента (в сутках), выполнение операции откладывается до следующего финансового дня (в часовом поясе UTC+3). Списания закрываются в 00:00 в момент наступления финансового дня. Если до следующего финансового дня осталось меньше 1 часа, списания закрываются сразу.

Настройки Charge Closer хранятся в конфигурационном файле модуля и включают в себя:

  • URL для доступа к API v3 инсталляции.
  • Список типов биллинга, списания по которым необходимо закрывать.
  • Список пар значений ID реселлера и API-токена его менеджера для доступа к API. Списания по подпискам закрываются как для указанного реселлера, так и всех его нижестоящих реселлеров.

Если списания по подписке не удалось закрыть, Charge Closer вызывает API-метод еще раз. Всего выполняется до 5 попыток с интервалом 60 секунд. Результаты выполнения записываются в журнал модуля.