Промокоды

Промокоды генерируются и раздаются клиентам. Промокоды в SHM привязываются к произвольным Шаблонам. Каждый раз, когда клиент использует промокод, вызывыается привязанный Шаблон, который выполняет какие-то действия в системе SHM.

Таким образом, Промокод может выполнять практически любые задачи:

  • Зачислять бонусы
  • Регистрировать тарифы
  • Выполнять какие-то внешние задачи, например отправлять HTTP запросы

Генерация промокодов

Создайте и выполните этот шаблон для генерации промокодов:

{{
  codes = promo.generate(
    template_id = 'template_promo'
    count = 1
    length = 10
    prefix = 'TEST_'
    settings = { amount = 123, tariff = 1, foo = 'bar' }
  )
}}

{{ FOR code IN codes }}
{{ code }}

{{ END }}

где:

  • template_id - название шаблона для выполнения при применении промокода
  • count - кол-во прокомодов, которое нужно сгенерировать
  • length - длина промокода без учета длины префикса
  • prefix - префикс для промокода, если нужен
  • settings - любые данные в формате JSON для использованиях их при выполнении Шаблона (при необходимости)

Использование промокодов

Для того, чтобы использовать промокод необходимо выполнить следующий код:

promo.apply( ПРОМОКОД )

Использование промокодов с помощью внешней ссылки

Создайте Шаблон для публичного использования с именем: my_promo:

Запишем туда следующий код:

{{ IF user.switch( request.params.uid ).id }}
    {{ IF promo.apply( request.params.code ) }}
        Ваш промокод успешно применен
    {{ ELSE }}
        Ошибка: промокод не найден
    {{ END }}
{{ ELSE }}
Ошибка: пользователь не найден
{{ END }}

Теперь, для использования промокода, мы можем давать клиентам ссылки вида: https://myshm.ru/shm/v1/public/my_promo?uid=123&code=XXXXXX

где:

  • my_promo - имя шаблона
  • uid - идентификатор пользователя
  • code - промокод

Примеры шаблонов для промокодов

Шаблон для зачисления пользователю бонусов

Создайте шаблон с именем указанным при создании промокода и поместите туда следуюший код:

{{ user.add_bonus( promo.settings.amount, 'Зачисление бонусов по промокоду: ' _ promo.id ) }}

При использовании промокода, созданного для этого шаблона, будет прочитано кол-во бонусов для зачисления (amount), и бонусы будут начислены.

Шаблон для регистрации тарифа

Создайте шаблон с именем указанным при создании промокода и поместите туда следуюший код:

{{
  service.create_for_api(
    service_id = promo.settings.tariff
    check_allow_to_order = 0
  )
}}

При использовании промокода, созданного для этого шаблона, будет зарегистрирован тариф с идентификатором promo.settings.tariff.

Тариф будет зарегистрирован даже, если у него не стоит галка “Доступен к заказу”, из-за того, что мы используем флаг check_allow_to_order = 0.

Изменено 25.09.2024: dnk: fixup (680f93c)