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>