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>