API
Для того, чтобы проверить актуальность промокода, введённого пользователем, и (если он корректный) активировать его, необходимо сделать GET/POST запрос по следующему url:
https://promocodes-platcore.ru/api/check?event_id=ID_СОБЫТИЯ&promocode=ПРОМОКОД_ВВЕДЕННЫЙ_ПОЛЬЗОВАТЕЛЕМ
Например,
https://promocodes-platcore.ru/api/check?event_id=1&promocode=b09yz1
В случае успешного запроса Вы получите в ответ JSON с параметром status = 'OK'
и параметром category_code
, содержащим символьный код категории, например:
{"status":"OK","category_code":"A"}
В случае неудачного ответа Вы получите в ответ JSON с параметром status = 'ERROR'
и параметром message
, содержащим описание ошибки, например:
{"status":"ERROR","message":"Промокод не найден"}
Список возможных значений параметра message
:
- Событие неактивно
- Категория неактивна
- Промокод не найден
- Промокод был активирован ранее
- event_id или promocode не были переданы
Внедрение на сайт
Какого-универсального способа подключения системы промокодов нет - для каждого случая требуется отдельное подключение и свои настройки.
В нашем примере, для подключения к лендингу на Tilda, использовался такой скрипт:
<script> $(document).ready(function(){ addListenerToForm(); }) function addListenerToForm() { if ($('#form843507073').length == 0) { setTimeout(() => { addListenerToForm(); }, 100); } else { $('#form843507073').on('tildaform:aftersuccess', function() { promocode = $('[data-input-lid="1733966954026"] input').val(); /* Отправляем данные POST-запросом */ var xhr = new XMLHttpRequest(); xhr.open('POST', 'https://promocodes-platcore.ru/api/check?event_id=1&promocode='+promocode); var obj = {}; xhr.send(JSON.stringify(obj)); xhr.onload = function () { if (xhr.response) { /* Какие-то действия, если данные дошли успешно */ result = JSON.parse(xhr.response); var link = document.createElement('a'); if (result.status == 'OK') { if (result.category_code == 'A') { link.href = '#block-a'; } if (result.category_code == 'B') { link.href = '#block-b'; } if (result.category_code == 'C') { link.href = '#block-c'; } if (result.category_code == 'D') { link.href = '#block-d'; } if (result.category_code == 'E') { link.href = '#block-e'; } } else { link.href = '#block-error'; } document.body.appendChild(link); link.click(); link.remove(); } }; hideSuccessFromForm(); }) } } function hideSuccessFromForm() { if ($('#form843507073').hasClass('js-send-form-success')) { $('#form843507073').removeClass('js-send-form-success') } else { setTimeout(() => { hideSuccessFromForm(); }, 100); } } </script>
и дополнительно был использован CSS
<style> .js-successbox.t-form__successbox { display: none!important; } </style>