Модуль для работы с API магазина
Корзина
add
Добавление товаров в корзину
ajaxAPI.cart.add({
123456: 1,
123457: 3,
123450: 100
}, {
comments: { 123456: 'Ваш комментарий' },
coupon: 'test'
})
.done(function (onDone) { console.log ('onDone: ', onDone) })
.fail(function (onFail) { console.log ('onFail:', onFail) });
get
Получение состава корзины
ajaxAPI.cart.get()
.done(function (onDone) { console.log ('onDone: ', onDone) })
.fail(function (onFail) { console.log ('onFail:', onFail) });
remove
Удаление товара из корзины
/**
* @param {Number} variant_id - id модификации
*/
ajaxAPI.cart.remove(123123)
.done(function (onDone) { console.log ('onDone: ', onDone) })
.fail(function (onFail) { console.log ('onFail:', onFail) });
update
Обновление состава корзины.
Позволяет:
-
обновить состав корзины
-
удалить несколько позиций
-
добавить несколько позиций
-
изменить количество товаров позиции
-
установить комментарии к позициям
/*
* @param {Object} items - набор пар {variant_id: quantity, ...}. Если quantity = 0, то позиция удаляется из корзины, в противном случае устанавливается указанное кол-во
* @param {Object} options - дополнительные поля: comments, coupon
* @param {Object} options.comments - объект с комментариями вида {variant_id: comment, ...}
* @param {String} options.coupon - название купона
*/
var items = {
123456: 1,
123457: 3,
123450: 100
};
var options = {
comments: { 123456: 'Ваш комментарий' },
coupon: 'test'
}
ajaxAPI.cart.update(items, optins)
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) });
Клиент
get
Получение информации о посетителе сайта
/*
* Если пользователь залогинен, получим json с акутальной информацией о покупателе
* { status: "ok", client: { // информация о покупателе }}
*
* В случае, если пользователь не залогинен, получим
* { status: "error", message: "Not authorized", url: "/client_account/session/new" }
*/
ajaxAPI.shop.client.get()
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) })
Отзывы
Отправка отзыва к товару
/*
* @param {Object} review - объект с отзывом. ОБЯЗАТЕЛЬНО
* @param {String} review.author - автор отзыва. ОБЯЗАТЕЛЬНО
* @param {String} review.email - e-mail посетителя. ОБЯЗАТЕЛЬНО
* @param {String} review.content - тело отзыва.ОБЯЗАТЕЛЬНО
* @param {String} review.captcha_solution - капча. ОБЯЗАТЕЛЬНО
* @param {String} productUrl - url товара, к которому хотим оставить отзыв
*/
var reviewOption = {
author: 'Пользователь',
email: 'user@mail.ru',
content: 'Текст отзыва',
rating: 5
}
if ($('#recaptcha-token').length) {
reviewOption['g-recaptcha-response'] = $('#recaptcha-token').val();
}else{
reviewOption['captcha_solution'] = $('[name="review[captcha_solution]"]').val();
}
ajaxAPI.shop.review(reviewOption, '/collection/shop/product/main')
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) });
Комментарии к статье
Отправка комментария к статье
/*
* @param {Object} comment - объект с комментарием. ОБЯЗАТЕЛЬНО
* @param {String} comment.author - автор комментария. ОБЯЗАТЕЛЬНО
* @param {String} comment.email - e-mail посетителя. ОБЯЗАТЕЛЬНО
* @param {String} comment.content - тело комментария.ОБЯЗАТЕЛЬНО
* @param {String} comment.captcha_solution - капча. ОБЯЗАТЕЛЬНО
* @param {String} articleUrl - url статьи, к которому хотим оставить отзыв
*/
var commentOption = {
author: 'Пользователь',
email: 'user@mail.ru',
content: 'Текст'
}
if ($('#recaptcha-token').length) {
reviewOption['g-recaptcha-response'] = $('#recaptcha-token').val();
}else{
reviewOption['captcha_solution'] = $('[name="review[captcha_solution]"]').val();
}
ajaxAPI.shop.comment(commentOption, '/blogs/blog/aktsiya')
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) });
Обратная связь
Отправка сообщений обратной связи
/*
* @param {Object} message - объект с полями
* @param {string} message.content - тело сообщения. Обязательно
* @param {string} message.from - e-mail, с которого "отправлено" сообщение. Обязательно
* @param {string} message.phone - телефон, указывается в теле письма. По-умолчанию - пустое
* @param {string} message.name - имя, указывается в теле письма. По-умолчанию - пустое.
* @param {string} message['g-recaptcha-response'] - ключ Google reCaptcha
* @param {string} options.subject - тема письма.
*/
$('#myCustomForm').on('submit', (e) => {
e.preventDefault();
let feedback = {
"feedback[name]": 'Test',
"feedback[from]": 'test@insales.ru',
"feedback[phone]": '00000000000',
"feedback[subject]": 'Обратная связь',
"feedback[content]": 'Без сообщения',
}
// При отправке формы получаем элемент, в котором хранится ключ Google reCaptcha, где #myCustomForm это ID элемента вашей формы
let recaptchaElement = $('#myCustomForm [name="feedback[g-recaptcha-response]"]');
// Если посетитель поставил галочку "Я не робот", то достаём ключ и добавляем поле для отправки формы
if (recaptchaElement) {
feedback['g-recaptcha-response'] = recaptchaElement.val();
}
ajaxAPI.shop.message(feedback)
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) });
})
О методах подключения Google reCaptcha в различных шаблонах говорится здесь
Товары
getList
Получение информации о списке товаров
ajaxAPI.product.getList([123456,123457,123458,123459])
.done(function (onDone) {console.log('onDone: ', onDone) })
.fail(function (onFail) {console.log('onFail: ', onFail) });
Info
Все полученные товары кэшируются в local storage. Это означает, что при отправке новых запросов товары, которые уже были получены с сервера в предыдущих запросах, будут доставаться из кэша. Это работает только в рамках одной сессии. То есть, если перезагрузить страницу, то товары снова будут получены запросом. Если по каким-то причинам вам нужно, чтобы этого не происходило, то необходимо вторым аргументом передать объект со свойством no_cache
и значением true
.
Warning
В одном запросе можно получить не более 700 товаров. Если превысить этот лимит, то перед отправкой запроса на сервер массив будет обрезан.
get
Получение информации о товаре
ajaxAPI.product.get(123456)
.done(function (onDone) {console.log('onDone: ', onDone) })
.fail(function (onFail) {console.log('onFail: ', onFail) });
Категория
get
Получение информации о коллекции
/*
* @param {string} handle - пермалинк коллекции, объязателен.
* @param {Object} filter - объект с выбранными параметрами для фильтрации
* @param {Object} pager - объект с настройками пагинации
* @param {number} pager.page_size - размер разбивки на страницы
* @param {number} pager.page - номер страницы, по которой получаем информацию
*/
var filter = {
price_min: 4000,
price_max: 10000,
characteristics: [ 18775928, 18775929 ]
};
var pager = {
page_size: 25,
page: 2
}
ajaxAPI.collection.get('collection_handle', filter, pager)
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) });
Оформление заказа
Оформление заказа с указанием способа оплаты и доставки.
Warning
Все поля обязательны для заполнения!
/*
* @param {Object} client - объект с полями {email: почта, name: имя, phone: телефон}
* @param {string} client.email - почта
* @param {string} client.name - ФИО
* @param {string} client.phone - телефон
* @param {Object} order - объект с обязательными полями
* @param {number} order.delivery - id способа доставки
* @param {number} order.payment - id способа оплаты
*/
ajaxAPI.checkout.order({
email: 'user@mail.ru',
name: 'user',
phone: '79879991122'
}, {
delivery: 1111111,
payment: 2222222
})
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) });
Сравнение
add
Добавление товара в сравнение
ajaxAPI.compare.add(123456)
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) });
remove
Удаление товара из сравнения
ajaxAPI.compare.remove(123456)
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) });
get
Получение списка сравнения
ajaxAPI.compare.get()
.done(function (onDone) { console.log('onDone: ', onDone) })
.fail(function (onFail) { console.log('onFail: ', onFail) });