gamification.shop.product.order

Scope: gamification

Кто может вызывать: Любой авторизованный пользователь; параметр userId — только администратор портала. Подробнее: Права доступа

Оформить заказ на товар из магазина бонусов: списать BAL, создать запись заказа, отправить уведомления.

HTTP: POST

Побочные эффекты: списывает BAL у пользователя, уменьшает доступный остаток товара, создаёт запись заказа, запускает бизнес-процесс (если настроен), отправляет уведомления.

Параметры метода

Параметр Тип Обяз. Описание
id int да ID товара (псевдоним: productId)
offerId int условно ID варианта товара (торгового предложения). Обязателен, если у товара есть варианты; для простого товара не передаётся
siteId string нет ID сайта (псевдоним: SITE_ID). По умолчанию — текущий сайт или s1
userId int нет Только администратор портала. ID покупателя — активного пользователя. По умолчанию — текущий пользователь. Свой ID можно передать любому

С userId заказ оформляется на покупателя с теми же проверками, что и в магазине интерфейса: доступ покупателя к магазину на сайте, баланс BAL покупателя, остаток товара. Элемент заказа создаётся от покупателя (CREATED_BY), бизнес-процесс согласования запускается для покупателя (целевой пользователь БП).

Для товара с вариантами покупается выбранный вариант: цена и остаток берутся у варианта, в заказ записываются товар (product_id) и вариант (offer_id), а название заказа — «Товар, Вариант».

Возвращаемые данные

result.result — сведения об оформленном заказе:

Поле Тип Описание
id int ID товара
name string Название товара
offerId int ID купленного варианта, 0 для простого товара
offerName string Название купленного варианта, пустая строка для простого товара
price float Списанная сумма BAL (цена варианта или товара)
balance float Баланс BAL после списания
balanceFormatted string Баланс BAL после списания, отформатированный для вывода
siteId string ID сайта
userId int ID покупателя

Обработка ошибок

Справочник кодов ошибок.

Код Описание
UNAUTHORIZED Пользователь не авторизован
VALIDATION_ERROR Не передан id, userId не целое положительное число
ACCESS_DENIED Нет доступа к магазину на сайте; userId другого пользователя передал не администратор
USER_NOT_FOUND Покупатель не найден или неактивен
NOT_FOUND Товар не найден
OFFER_REQUIRED У товара есть варианты, а offerId не передан
OFFER_NOT_FOUND Вариант с offerId не принадлежит товару
OFFER_NOT_AVAILABLE Вариант недоступен для заказа (неактивен, без цены, закончился) или у товара нет ни одного доступного варианта
OUT_OF_STOCK Товар недоступен для заказа (нет запаса или продажи отключены)
INSUFFICIENT_BALANCE Недостаточно BAL

Пример запроса (POST)

curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/gamification.shop.product.order.json" \
          -H "Content-Type: application/json" \
          -d '{"id": 1110, "offerId": 1111}'
        

Пример ответа:

{
          "result": {
            "result": {
              "id": 1110,
              "name": "Футболка",
              "offerId": 1111,
              "offerName": "Футболка S красная",
              "price": 100,
              "balance": 400,
              "balanceFormatted": "400",
              "siteId": "s1"
            },
            "total": null,
            "next": null,
            "error": null
          }
        }
        

Пример ошибки, если у товара есть варианты, а offerId не передан:

{
          "result": {
            "result": null,
            "error": {
              "code": "OFFER_REQUIRED",
              "message": "offerId is required for a product with offers",
              "details": {"id": 1110}
            }
          }
        }