[POST] Генерация ссылки на покупку
Описание запроса
POST /v1/generate_buy_link
Запрос позволяет получить ссылку на покупку, с помощью которой:
- Покупатель переходит в корзину,
- В корзину добавляются все продукты с динамическими характеристиками, переданные в запросе,
- Данные покупателя для оформления заказа, перезаполняются данными, переданными в запросе.
В запросе передаются:
- Данные для авторизации (токен)
- Данные динамических продуктов
- (Опционально) Данные для подписки
- (Опционально) Данные покупателя
- (Опционально) Дополнительные параметры заказа
- (Опционально) Данные для up-sell предложения при входе в корзину
- (Опционально) Данные для up-sell предложения при выходе из корзины
Данные для отправки запроса
- Endpoint URL:
- Боевая среда: https://api.ecommerce.softline.com/v1/generate_buy_link
- Тестовая среда: https://api.ecommerce.softline.com.demoslweb.com/v1/generate_buy_link
- Метод: POST
- Формат: JSON
- Авторизация: с помощью токена
Авторизационный токен
- Формат значения:
Bearer [token]
- Вместо [token] подставьте значение token, полученное в ответ на запрос к Authentication API
Код валюты продажи продукта
Доступные валюты настраиваются при подключении в соответствии с вашим договором.
Доступные валюты настраиваются при подключении в соответствии с вашим договором.
- Формат: ISO 4217 alpha-3, 3 символа
- Варианты значений см. в справочнике
Идентификатор вашей корзины
Если идентификатор корзины передан и в этой корзине разрешена продажа в соответствующей валюте, то ссылка на покупку будет сформирована для этой корзины.
Если идентификатор корзины передан и в этой корзине разрешена продажа в соответствующей валюте, то ссылка на покупку будет сформирована для этой корзины.
- * - Обязательный параметр, если у вас есть несколько корзин с одинаковой валютой продажи, в ином случае можно не передавать
- Чтобы узнать идентификатор вашей корзины обратитесь в техподдержку
Список динамических продуктов
Каждый объект в массиве соответствует одному продукту, который нужно добавить в корзину.
Для каждого продукта вы передаете:
Каждый объект в массиве соответствует одному продукту, который нужно добавить в корзину.
Для каждого продукта вы передаете:
- Идентификатор базового продукта, из которого будут взяты настройки по умолчанию
- Значения свойств (название, цену и т,д), которые переопределят свойства базового продукта в корзине
Идентификатор базового продукта
Этот идентификатор продукта на нашей стороне, который должен быть предварительно настроен. Из этого продукта будут взяты значения свойств по умолчанию.
Если в запросе содержится несколько продуктов, то их id не могут совпадать. То есть в одном запросе не может быть два продукта с динамическими характеристиками на основе одного и того же базового продукта.
Этот идентификатор продукта на нашей стороне, который должен быть предварительно настроен. Из этого продукта будут взяты значения свойств по умолчанию.
Если в запросе содержится несколько продуктов, то их id не могут совпадать. То есть в одном запросе не может быть два продукта с динамическими характеристиками на основе одного и того же базового продукта.
Ваш артикул продукта
- Не более 40 символов
- Значение по умолчанию задано в базовом продукте
Ваш идентификатор продукта
- Не более 255 символов
- Значение по умолчанию задано в базовом продукте
Наименование продукта для закрывающих документов
Если передано, то используется в закрывающих документах по заказу (например, счет-фактура, товарная накладная) вместо названия продукта из параметра products.name.
Если передано, то используется в закрывающих документах по заказу (например, счет-фактура, товарная накладная) вместо названия продукта из параметра products.name.
Цена за единицу продукта
Используется при расчете итоговой стоимости продукта в корзине.
Используется при расчете итоговой стоимости продукта в корзине.
- Формат: число с 2 десятичными знаками, разделитель - точка, значение передается как строка
- Цена может быть равна нулю, если продукт является подарком, узнайте подробнее о том, как правильно добавить подарок к заказу
- Продажа продуктов с бесплатным пробным периодом по нулевой цене на текущий момент не доступна через данное API
Процент скидки на продукт
- Формат: число, до 6 десятичных знаков, разделитель - точка
- Значение должно отвечать условию: 0 < discount_percent ≤ 100
- Цена может быть равна 100%, если продукт является подарком, узнайте подробнее о том, как правильно добавить подарок к заказу
Количество продукта в корзине
Покупатель не сможет изменить это количество.
Покупатель не сможет изменить это количество.
Способ доставки продукта
Варианты значения:
Варианты значения:
- true - физическая доставка
- false - электронная доставка (лицензионная информация отправляется покупателю на email)
Запрет оплаты продукта в рассрочку
Варианты значения:
Возможность оплаты в рассрочку настраивается отдельно для корзины в целом. Узнайте подробнее об этой возможности.
Варианты значения:
- true - продукт нельзя оплатить в рассрочку.
Если хотя бы у одного продукта в запросе запрещена рассрочка, то она не будет предложена для оплаты заказа - false - продукт можно оплатить в рассрочку
Возможность оплаты в рассрочку настраивается отдельно для корзины в целом. Узнайте подробнее об этой возможности.
Начисление НДС при продаже продукта в российских рублях (RUB)
Варианты значения:
Если вы хотите переопределить настройки из базового продукта, то используйте следующие правила:
Если вы резидент РФ и не являетесь плательщиком НДС (используете УСН), или являетесь плательщиком НДС (используете ОСН), то:
Варианты значения:
- true - НДС начисляется
- false - продукт не облагается НДС
Если вы хотите переопределить настройки из базового продукта, то используйте следующие правила:
Если вы резидент РФ и не являетесь плательщиком НДС (используете УСН), или являетесь плательщиком НДС (используете ОСН), то:
- Если программа внесена в реестр российского ПО, то продажа осуществляется без НДС, в запросе нужно передавать vat_included: false
- Если программа не внесена в реестр, то продажа облагается НДС, и вы должны передавать в запросе vat_included: true
Дополнительные параметры для продукта
Это служебные информационные данные, которые не отображаются покупателю и не влияют на оформление заказа. Переданные значения будут сохранены для позиции заказа.
Внутри объекта additional_data можно передать несколько значений дополнительных параметров.
Это служебные информационные данные, которые не отображаются покупателю и не влияют на оформление заказа. Переданные значения будут сохранены для позиции заказа.
Внутри объекта additional_data можно передать несколько значений дополнительных параметров.
Значение дополнительного параметра
- Вместо [name] подставьте название параметра:
- Должно быть уникальным внутри одного объекта additional_data
- Допустимы только латинские буквы и цифры
- Не более 255 символов
- В значении допускается использование html-тегов, объем значения не ограничен.
Настройки подписки с автоматическим продлением (AR)
- Если для базового продукта сделаны предварительные настройки автопродления и параметр передан, то для динамического продукта в корзине будет доступна подписка с автоматическим продлением
- Если параметр не передан, то в корзине для продукта не будет доступно автопродление (независимо от настроек базового продукта)
Срок действия продукта, инициирующего подписку (родительского)
- * - Обязательный параметр, если передан параметр products.subscription
- Формат: ISO 8601: P[число][ед.измерения]
- Поддерживаемые единицы измерения: Y - год, M - месяц, D - день.
Например, "P1Y" соответствует сроку "1 год".
Название продукта для продления подписки (дочернего)
Если не передано, то будет использовано название продукта продления для базового продукта.
Если не передано, то будет использовано название продукта продления для базового продукта.
Цена за единицу продукта для продления подписки (дочернего)
Узнайте подробнее, как рассчитывается цена за продление.
Узнайте подробнее, как рассчитывается цена за продление.
- Число с 2 десятичными знаками, разделитель - точка. Передается как строка.
- Если не передано, то будет использована цена продукта продления для базового продукта.
Данные покупателя
Если данные переданы, то они будут предварительно заполнены в корзине. Покупатель может изменить эти значения.
Если данные переданы, то они будут предварительно заполнены в корзине. Покупатель может изменить эти значения.
Тип покупателя
Возможные варианты:
Возможные варианты:
- physical - физическое лицо
- juridical - юридическое лицо
Номер налогоплательщика покупателя
В том числе используется для заполнения ИНН при продажах в российских рублях. Предварительное заполнение номера будет выполнено, только если в корзине предусмотрено одно поле для ввода номера налогоплательщика (вид поля зависит от валюты продажи). В ином покупатель должен заполнить номер налогоплательщика самостоятельно.
Не более 255 символов.
В том числе используется для заполнения ИНН при продажах в российских рублях. Предварительное заполнение номера будет выполнено, только если в корзине предусмотрено одно поле для ввода номера налогоплательщика (вид поля зависит от валюты продажи). В ином покупатель должен заполнить номер налогоплательщика самостоятельно.
Не более 255 символов.
Юридический адрес компании покупателя
Не более 255 символов.
Не более 255 символов.
Фактический адрес компании покупателя
Не более 255 символов.
Не более 255 символов.
Страна покупателя
- Формат: ISO 3166-1
- Если страна передана и соответствует валюте запроса, то она автоматически будет выбрана в корзине
- Если страна не соответствует валюте запроса (currency), но доступна в корзине, то поле страны считается более приоритетным, валюта в корзине будет определена по переданной стране, см. примеры далее
Дополнительные параметры для заказа
Это служебные информационные данные, которые не отображаются покупателю и не влияют на оформление заказа. Переданные значения будут сохранены в заказ. Узнайте подробнее, как использовать дополнительные параметры. Обратите внимание, срок хранения дополнительных параметров в заказе ограничен.
Внутри объекта additional_data можно передать несколько значений дополнительных параметров.
Это служебные информационные данные, которые не отображаются покупателю и не влияют на оформление заказа. Переданные значения будут сохранены в заказ. Узнайте подробнее, как использовать дополнительные параметры. Обратите внимание, срок хранения дополнительных параметров в заказе ограничен.
Внутри объекта additional_data можно передать несколько значений дополнительных параметров.
Значение дополнительного параметра
Внутри additional_data может быть передан один или несколько вложенных параметров со значениями.
Внутри additional_data может быть передан один или несколько вложенных параметров со значениями.
- Вместо [name] подставьте название параметра:
- Должно быть уникальным внутри одного объекта additional_data
- Допустимы только латинские буквы и цифры
- Не более 255 символов
- В случае, если название равно referer1, referer2, .. и.д.д до referer12, то далее значения этих дополнительных параметров вы сможете передать в веб-сервис для получения лицензии
- В значении допускается использование html-тегов, объем значения не ограничен.
Данные для up-sell предложения при входе в корзину
Используйте, чтобы предложить покупателю заменить один из продуктов в корзине на более привлекательный. Это предложение будет показано покупателю сразу, как он перейдет в корзину по ссылке на покупку.
Узнайте подробнее, как работают up-sell предложения с динамическими продуктами
Используйте, чтобы предложить покупателю заменить один из продуктов в корзине на более привлекательный. Это предложение будет показано покупателю сразу, как он перейдет в корзину по ссылке на покупку.
Узнайте подробнее, как работают up-sell предложения с динамическими продуктами
Идентификатор продукта, для которого нужно показать up-sell предложение
Это один из продуктов, выбранных покупателем, который нужно добавить в корзину (products) и показать покупателю up-sell предложение заменить этот продукт на другой.
Это один из продуктов, выбранных покупателем, который нужно добавить в корзину (products) и показать покупателю up-sell предложение заменить этот продукт на другой.
- * - Обязательный параметр, если был передан параметр upsell
- Идентификатор, переданный в этом параметре, должен совпадать с одним из идентификаторов базовых продуктов products.id
Заголовок up-sell предложения
Отображается покупателю в up-sell предложении. Это может быть, например, название продукта, для которого предлагается замена в up-sell. Подробнее см. в описании шаблона up-sell предложения.
Отображается покупателю в up-sell предложении. Это может быть, например, название продукта, для которого предлагается замена в up-sell. Подробнее см. в описании шаблона up-sell предложения.
- * - Обязательный параметр, если был передан параметр upsell
- Не более 255 символов
Описание up-sell предложения
Отображается покупателю рядом с заголовком в up-sell предложении, если параметр передан. Подробнее см. в описании шаблона up-sell предложения.
Отображается покупателю рядом с заголовком в up-sell предложении, если параметр передан. Подробнее см. в описании шаблона up-sell предложения.
URL изображения для up-sell предложения
Up-sell может содержать изображение, которое расположено на вашей стороне и подгружается в окно предложения при его открытии. На текущий момент эта возможность доступна только для индивидуальных шаблонов up-sell предложений. Если вы хотите использовать индивидуальный шаблон предложения, отправьте запрос на email ecommerce@softline.com с описанием изменений шаблона по умолчанию.
При отображении изображение может быть отмасштабировано в соответствии с размером места, которое предусмотрено дизайном.
Up-sell может содержать изображение, которое расположено на вашей стороне и подгружается в окно предложения при его открытии. На текущий момент эта возможность доступна только для индивидуальных шаблонов up-sell предложений. Если вы хотите использовать индивидуальный шаблон предложения, отправьте запрос на email ecommerce@softline.com с описанием изменений шаблона по умолчанию.
- Требования к URL изображения:
- Валидный URL, который указывает на файл изображения на вашей стороне, находящийся в открытом доступе (доступ к файлу не требует авторизации)
- Допустим только https протокол
- Не более 255 символов
- Допустимые форматы изображения: *.gif, *.jpg, *,jpeg, *.png
- mimeTypes: 'image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png'
При отображении изображение может быть отмасштабировано в соответствии с размером места, которое предусмотрено дизайном.
Список продуктов на замену
Это продукты, которые будут показаны покупателю в up-sell предложении. Если покупатель выберет один из них, то этот продукт будет добавлен в корзину, а продукт, для которого было показано up-sell предложение (upsell.product_id), удален из корзины.
Каждый объект в массиве соответствует одному продукту, который нужно показать в up-sell предложении.
Это продукты, которые будут показаны покупателю в up-sell предложении. Если покупатель выберет один из них, то этот продукт будет добавлен в корзину, а продукт, для которого было показано up-sell предложение (upsell.product_id), удален из корзины.
Каждый объект в массиве соответствует одному продукту, который нужно показать в up-sell предложении.
- * - Обязательный параметр, если был передан параметр upsell
- В массиве должно быть передано от 1 до 3 продуктов
Идентификатор базового продукта для продукта на замену
- * - Обязательный параметр, если был передан параметр upsell
- Может совпадать с идентификатором продукта в корзине, для которого отображается up-sell предложение (upsell.product_id)
- Не должен совпадать с идентификаторами других продуктов в корзине, переданных в массиве products, за исключением того продукта, для которого отображается up-sell предложение upsell.product_id
- Можно использовать одинаковый базовый продукт для всех продуктов на замену, переданных в массиве upsell.products
Ваш артикул для продукта на замену
Не более 40 символов.
Не более 40 символов.
Ваш идентификатор для продукта на замену
Не более 255 символов.
Не более 255 символов.
Название продукта для корзины для продукта на замену
Это название будет отображено для продукта в корзине, после того, как покупатель выберет этот продукт в up-sell предложении
* - Обязательный параметр, если был передан параметр upsell
Обратите внимание, с помощью параметров upsell.products.name и upsell.products.name_for_upsell вы можете задать два разных названия для одного и того же продукта:
Это название будет отображено для продукта в корзине, после того, как покупатель выберет этот продукт в up-sell предложении
* - Обязательный параметр, если был передан параметр upsell
Обратите внимание, с помощью параметров upsell.products.name и upsell.products.name_for_upsell вы можете задать два разных названия для одного и того же продукта:
- С названием upsell.products.name_for_upsell покупатель увидит продукт в up-sell предложении, подробнее см. в описании шаблона up-sell предложения
- С названием upsell.products.name продукт будет добавлен в корзину, если покупатель выберет этот продукт в up-sell предложении
Название продукта для up-sell предложения
Это название будет отображено для продукта в up-sell предложении. См. описание использования в параметре upsell.products.name.
* - Обязательный параметр, если был передан параметр upsell.
Это название будет отображено для продукта в up-sell предложении. См. описание использования в параметре upsell.products.name.
* - Обязательный параметр, если был передан параметр upsell.
Название продукта для закрывающих документов для продукта на замену
Если передано, то используется в закрывающих документах по заказу (например, счет-фактура, товарная накладная) вместо названия продукта из параметра upsell.products.name.
Если передано, то используется в закрывающих документах по заказу (например, счет-фактура, товарная накладная) вместо названия продукта из параметра upsell.products.name.
Цена за единицу для продукта на замену
Используется в up-sell предложении и в корзине при расчете стоимости продукта.
Используется в up-sell предложении и в корзине при расчете стоимости продукта.
- * - Обязательный параметр, если был передан параметр upsell
- Формат: число с 2 десятичными знаками, разделитель - точка. Передается как строка
- Включите сумму VAT в цену, если это предусмотрено вашим договором. См. подробнее в описании предварительных настроек
- Если вы хотите предоставить скидку на продукт покупателю, то передайте в этом параметре цену с учетом скидки
- Цена должна быть больше нуля
Полная сумма выгоды (экономии) для продукта на замену
Отображается покупателю только в up-sell предложении. Это информационное значение, которое не влияет на стоимость продукта в up-sell предложении и в корзине. Подробнее см. в описании шаблона up-sell предложения.
Отображается покупателю только в up-sell предложении. Это информационное значение, которое не влияет на стоимость продукта в up-sell предложении и в корзине. Подробнее см. в описании шаблона up-sell предложения.
- Формат: число с 2 десятичными знаками, разделитель - точка. Передается как строка
- Должна быть передана полная сумма. Это значение никак не пересчитывается на нашей стороне, в том числе с учетом количества продукта и VAT
Количество продукта для продукта на замену
Используется в up-sell предложении и в корзине при расчете стоимости продукта. Покупатель не сможет изменить это количество.
* - Обязательный параметр, если был передан параметр upsell
Используется в up-sell предложении и в корзине при расчете стоимости продукта. Покупатель не сможет изменить это количество.
* - Обязательный параметр, если был передан параметр upsell
Начисление VAT для цены в рублях (RUB) для продукта на замену
Используется в up-sell предложении и в корзине при расчете стоимости продукта. Правило заполнения такое же, как для параметра products.vat_included
Используется в up-sell предложении и в корзине при расчете стоимости продукта. Правило заполнения такое же, как для параметра products.vat_included
Настройки подписки с автоматическим продлением (AR) для продукта на замену
Передайте этот параметр, чтобы добавить продукту на замену возможность подписки с автопродлением.
Вложенные параметры и правила заполнения такие же, как для параметра products.subscription.
Передайте этот параметр, чтобы добавить продукту на замену возможность подписки с автопродлением.
Вложенные параметры и правила заполнения такие же, как для параметра products.subscription.
Срок действия продукта, инициирующего AR подписку (родительского) для продукта на замену
Правило заполнения такое же, как для параметра products.subscription.period.
Правило заполнения такое же, как для параметра products.subscription.period.
Название продукта (дочернего) для продления подписки на продукт на замену
Правило заполнения такое же, как для параметра products.subscription.name.
Правило заполнения такое же, как для параметра products.subscription.name.
Цена за единицу продукта (дочернего) для продления подписки на продукт на замену
Правило заполнения такое же, как для параметра products.subscription.price.
Правило заполнения такое же, как для параметра products.subscription.price.
Дополнительные параметры для заказа с продуктом из up-sell предложения
Это служебные информационные данные, которые не отображаются покупателю и не влияют на оформление заказа. Узнайте подробнее, как использовать дополнительные параметры.
Если этот параметр был передан, и покупатель выбрал один из продуктов up-sell предложения, то значения из upsell.products.additional_data заменят значения из additional_data и products.additional_data (для соответствующего продукта) при совпадении названий параметров. А если названия не совпали, то значения будут добавлены к имеющимся дополнительным параметрам продукта и заказа. Посмотрите подробное описание и пример использования.
Это служебные информационные данные, которые не отображаются покупателю и не влияют на оформление заказа. Узнайте подробнее, как использовать дополнительные параметры.
Если этот параметр был передан, и покупатель выбрал один из продуктов up-sell предложения, то значения из upsell.products.additional_data заменят значения из additional_data и products.additional_data (для соответствующего продукта) при совпадении названий параметров. А если названия не совпали, то значения будут добавлены к имеющимся дополнительным параметрам продукта и заказа. Посмотрите подробное описание и пример использования.
Значение дополнительного параметра для заказа с продуктом из up-sell предложения
Внутри additional_data может быть передан один или несколько вложенных параметров со значениями.
Формат аналогичен значениям, переданным в additional_data.
Внутри additional_data может быть передан один или несколько вложенных параметров со значениями.
Формат аналогичен значениям, переданным в additional_data.
Данные для up-sell предложения при выходе из корзины
Используйте, чтобы предложить покупателю заменить один из продуктов в корзине на более привлекательный. Это предложение будет показано покупателю в случае, если:
Используйте, чтобы предложить покупателю заменить один из продуктов в корзине на более привлекательный. Это предложение будет показано покупателю в случае, если:
- Курсор мыши выходит за пределы активной области окна браузера, в котором открыта корзина
- И перед этим покупатель не заменял продукт в корзине на продукт из ранее показанного up-sell предложения (upsell)
Список допустимых параметров такой же, как для параметра upsell.
Пример запроса (только обязательные параметры)
{
"currency": "RUB",
"products": [
{
"id": 111111,
"name": "Демо продукт с динамическими характеристиками",
"price": "100.00",
"quantity": 1
}
]
}
Пример запроса (все параметры)
{
"currency": "RUB",
"products": [
{
"id": 111111,
"vendor_code": "12345",
"sku": "001",
"name": "Демо-продукт с динамическими характеристиками, лицензия на 3 месяца",
"name_for_invoice": "Демо-продукт",
"price": "100.00",
"discount_percent": 10,
"quantity": 1,
"is_delivery_needed": false,
"is_installments_unavailable": false,
"vat_included": false,
"additional_data": {
"referer7": "product=demo&project=test&upsell",
"referer8": "testA1",
"demo": "testB1"
},
"subscription": {
"period": "P1Y",
"name": "Продление лицензии на 1 год",
"price": "300.00"
}
}
],
"customer": {
"type": "juridical",
"email": "test@test.com",
"first_name": "Иван",
"last_name": "Петров",
"phone": "7999991111",
"vat_number": "12345654321",
"company_name": "ООО Компания",
"company_billing_address": "Москва, Ломоносовский пр-т, 12",
"company_delivery_address": "Москва, Ломоносовский пр-т, 12",
"country": "RU"
},
"additional_data": {
"referer7": "product=demo&project=test",
"referer8": "testA",
"demo": "testB1"
},
"upsell": {
"product_id": 111111,
"name": "Специальное предложение",
"description": "Купите Демо-продукт с расширенными возможностями",
"picture_url": "https://shop.com/offer-img.png",
"products": [
{
"id": 111111,
"vendor_code": "12346",
"sku": "011",
"name": "Демо-продукт с поддержкой на 1 год",
"name_for_upsell": "С расширенной поддержкой на 1 год",
"name_for_invoice": "Демо-продукт + поддержка",
"price": "200.00",
"benefit": "50.00",
"quantity": 1,
"vat_included": false,
"subscription": {
"period": "P1Y",
"name": "Продление лицензии на 1 год",
"price": "300.00"
},
"additional_data": {
"referer7": "product=demo&project=test&upsell",
"referer8": "testA1",
"demo": "testB1"
}
},
{
"id": 111111,
"vendor_code": "12347",
"sku": "012",
"name": "Демо-продукт с дополнительной лицензией на 4 устройства",
"name_for_upsell": "С дополнительными 4 лицензиями",
"name_for_invoice": "Демо-продукт + 4 лицензии",
"price": "1500.00",
"benefit": "300.00",
"quantity": 1,
"vat_included": false,
"subscription": {
"period": "P1Y",
"name": "Продление лицензии на 1 год",
"price": "1300.00"
},
"additional_data": {
"referer7": "product=demo&project=test&upsell",
"referer8": "testA2",
"demo": "testB1"
}
}
]
},
"upsell_exit": {
"product_id": 111111,
"name": "Специальное предложение",
"description": "Купите Демо-продукт с расширенными возможностями",
"picture_url": "https://shop.com/offer-img.png",
"products": [
{
"id": 111111,
"vendor_code": "12346",
"sku": "011",
"name": "Демо-продукт с поддержкой на 1 год",
"name_for_upsell": "С расширенной поддержкой на 1 год",
"name_for_invoice": "Демо-продукт + поддержка",
"price": "200.00",
"benefit": "50.00",
"quantity": 1,
"vat_included": false,
"subscription": {
"period": "P1Y",
"name": "Продление лицензии на 1 год",
"price": "300.00"
},
"additional_data": {
"referer7": "product=demo&project=test&upsell",
"referer8": "testA1",
"demo": "testB1"
}
},
{
"id": 111111,
"vendor_code": "12347",
"sku": "012",
"name": "Демо-продукт с дополнительной лицензией на 4 устройства",
"name_for_upsell": "С дополнительными 4 лицензиями",
"name_for_invoice": "Демо-продукт + 4 лицензии",
"price": "1500.00",
"benefit": "300.00",
"quantity": 1,
"vat_included": false,
"subscription": {
"period": "P1Y",
"name": "Продление лицензии на 1 год",
"price": "1300.00"
},
"additional_data": {
"referer1": "product=demo&project=test&upsell",
"referer8": "testA1",
"demo": "testA2"
}
}
]
}
}
Ответ на запрос
В ответ на запрос вы получите код ответа сервера, соответствующий результату обработки.
В зависимости от кода в теле ответа могут присутствовать дополнительные параметры.
Положительный ответ
При успешной обработке запроса вы получите код ответа сервера HTTP/1.1 200 OK. В теле ответа будет передана ссылка на покупку, сформированная в соответствии с данными в запросе.
Ссылка на покупку динамических продуктов, данные для которых были переданы в запросе.
- Имеет формат: https://[домен-корзины]/basket/flash/[идентификатор-динамической-корзины]
- При работе с тестовой средой в ответе будет возвращена ссылка на покупку для тестовой среды (ссылка будет иметь суффикс .demoslweb.ru).
- В случае, если при переходе по ссылке открывается пустая корзина (продукт не был добавлен), то такая проблема возникает, если базовый продукт не доступен для продажи на нашей стороне. Проверьте id базового продукта в запросе.
Идентификатор динамической корзины
Этот идентификатор создается при обработке запроса и является уникальным. То есть в ответ на каждый запрос вернется отдельный идентификатор.
Если покупатель оформляет заказ по ссылке на покупку, полученной в ответ на запрос, то этот идентификатор система сохраняет в заказ. Далее вы можете получить его, в информации о заказе, например, в webhook-оповещениях или через Orders API.
Этот идентификатор создается при обработке запроса и является уникальным. То есть в ответ на каждый запрос вернется отдельный идентификатор.
Если покупатель оформляет заказ по ссылке на покупку, полученной в ответ на запрос, то этот идентификатор система сохраняет в заказ. Далее вы можете получить его, в информации о заказе, например, в webhook-оповещениях или через Orders API.
Пример положительного ответа
{
"buy_link": "https://cart.checkout.softline.com/basket/flash/123456",
"external_id": "123456"
}
Ответ об ошибке
В случае ошибки при обработке запроса вы получите код ответа сервера, соответствующий результату обработки.
В зависимости от кода в теле ответа могут присутствовать дополнительные параметры.
Справочник HTTP-кодов ответа сервера при ошибке
Код ответа сервера | Описание |
HTTP/1.1 400 Bad Request | Запрос не валиден (ошибка в параметрах; не переданы необходимые данные и т.п.). В теле ответа будет передан дополнительный код ошибки (один или несколько). |
HTTP/1.1 401 Unauthorized | Неуспешная аутентификация. В теле ответа будет передан дополнительный код ошибки (один или несколько). |
HTTP/1.1 404 Not found | Неверный URL запроса. Проверьте адрес запроса. |
HTTP/1.1 500 Request Error | Ошибка на стороне сервера. Повторите запрос позднее или обратитесь в службу поддержки. |
Справочник дополнительных кодов ошибок для HTTP 400
Error | Message | Описание |
Если хотя бы одна ошибка из списка ниже найдена, то она возвращается в ответе на запрос, остальные ошибки не проверяются | ||
110 | JSON is not valid. | Структура полей запроса не валидна. Проверьте поля в теле запроса на соответствие формату JSON |
111 | Invalid data format (Content-type). | Неправильный заголовок запроса. Content-type должен быть равен application/json |
3120 | Unable to define cart settings for this currency. Please contact technical support. | Не получилось определить корзину или продукт для переданной валюты продажи (currency) |
3125 | Sales through this cart are impossible with this currency. Please contact technical support. | Не получилось определить корзину или продукт для переданной валюты продажи (currency) и корзины (market_id) |
Если хотя бы одна ошибка из списка ниже найдена, то проверка запроса не прерывается. В ответе может быть возвращено несколько ошибок |
||
3010 | Invalid field value: [название параметра] | Запрос не валиден, например, не передан обязательный параметр, неверно указано название параметра, значение параметра не соответствует указанному типу данных, неверный формат значения. В том числе ошибка будет возвращена, если в параметре передано значение null, и этот вариант значения не указан как допустимый в описании параметра |
3020 | Order price cannot be equal to zero. Change product price (price, discount_percent) or add product having non-zero price. | Стоимость продукта с учетом скидки равна нулю (products.price = 0 или products.discount_percent = 100), но в запросе нет другого продукта, у которого стоимость будет больше нуля |
3030 | Incorrect discount value. Discount_percent value must be strictly greater than zero and less than or equal to 100. | Неправильное значение скидки (products.discount_percent), значение должно отвечать условиям: 0 discount_percent <= 100 |
3040 | Purchase of this original product subscription is impossible. Change original product (id) or delete subscription data (subscription). | В запросе переданы данные для подписки (products.subscription), но для базового продукта создание подписки не доступно |
3050 | Purchase of this original product is impossible. Change original product (id). | В запросе передан базовый продукт (products.id), который не найден на нашей стороне |
3060 | Email field is filled out incorrectly. Expected format: [name]@[domain].[zone] | Передан не корректный email адрес (customer.email) |
3070 | Single request must contain products with different products.id values. | В запросе переданы данные нескольких продуктов, которые нужно добавить в корзину (products), но идентификаторы базовых продуктов совпадают (products.id). Используйте разные базовые продукты, чтобы добавить несколько продуктов в корзину |
3210 | Unable to show up-sell offer. The product id upsell.product_id must match at least one product in the cart (products.id). | В запросе переданы данные up-sell предложения (upsell), но идентификатор продукта, для которого нужно показать up-sell предложение (upsell.product_id) отсутствует среди продуктов, которые будут добавлены в корзину (products) |
3220 | Unable to show up-sell offer. The replacement product id (upsell.products.id) must not match the id of the product in the cart which is not upsell.product_id. | В запросе переданы данные up-sell предложения (upsell), но в списке продуктов на замену (upsell.products) есть продукт, который уже находится в корзине (products) и при этом не является продуктом, для которого отображается up-sell предложение (upsell.product_id) |
3230 | Unable to show up-sell offer. The cost of a replacement product cannot be zero (upsell.products.price). | Неправильная цена на продукт в up-sell предложении (upsell). Цена продукта на замену (upsell.products.price) не может быть равна нулю |
3240 | Unable to show up-sell offer. The number of replacement products must be 3 or less (upsell.products). | Неправильное количество продуктов, которые будут предложены на замену в up-sell предложении (upsell.products). Количество продуктов внутри массива должно быть от 1 до 3 |
3310 | Unable to show up-sell offer. The product id upsell_exit.product_id must match at least one product in the cart (products.id). | В запросе переданы данные up-sell предложения (upsell_exit), но идентификатор продукта, для которого нужно показать up-sell предложение (upsell_exit.product_id) отсутствует среди продуктов, которые будут добавлены в корзину (products) |
3320 | Unable to show up-sell offer. The replacement product id (upsell_exit.products.id) must not match the id of the product in the cart which is not upsell.product_id. | В запросе переданы данные up-sell предложения (upsell_exit), но в списке продуктов на замену (upsell_exit.products) есть продукт, который уже находится в корзине (products) и при этом не является продуктом, для которого отображается up-sell предложение (upsell_exit.product_id) |
3330 | Unable to show up-sell offer. The cost of a replacement product cannot be zero (upsell_exit.products.price). | Неправильная цена на продукт в up-sell предложении (upsell_exit). Цена продукта на замену (upsell_exit.products.price) не может быть равна нулю |
3340 | Unable to show up-sell offer. The number of replacement products must be 3 or less (upsell_exit.products). | Неправильное количество продуктов, которые будут предложены на замену в up-sell предложении (upsell_exit.products). Количество продуктов внутри массива должно быть от 1 до 3 |
Справочник дополнительных кодов ошибок для HTTP 401
Справочник этих ошибок одинаковый для всех API, которые используют авторизацию по токену.
Пример ответа об ошибке
{
"errors": [
{
"error": 3010,
"message": "Invalid field value: currency."
},
{
"error": 3010,
"message": "Invalid field value: name."
}
]
}