Промокоды
Промокоды генерируются и раздаются клиентам. Промокоды в 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
.