RUS
  • ENG
  • RUS

Вебхуки

Последние изменения: 23.01.2025

Вебхук (Webhook) -  механизм оповещения системы о событиях, которые отправляются на указанный сторонний сервис.

Описание метода webhook

Примеры запросов в Partner API

. Вебхуки позволяют получать уведомления о следующих событиях:

  • Появление нового клиента в компании.

  • Проведение стандартной операции.

  • Получение нового заказа.

Настройка вебхуков:

  1. Перейдите в раздел «Настройки» UDS Бизнес.

  2. Выберите вкладку «Интеграция».

  3. Включите опцию «Вебхуки» и укажите URL вашего сервера для обработки данных.

Важно: Для отправки вебхуков необходимо сгенерировать API Key, если он отсутствует.

Технические детали:

  • UDS отправляет вебхуки методом POST с JSON-объектом в теле запроса.

  • Для безопасности данные хешируются с помощью MD5, что позволяет вашему серверу убедиться в подлинности отправителя.

  • При успешной обработке сервер должен ответить HTTP-кодом 200 в течение 5 секунд. В противном случае UDS повторит попытку отправки через 5 минут (максимум три попытки).

mceclip0.png


Примеры отправляемых вебхуков

  • Присоединение нового клиента 

{
  "phone": +78007754524,
  "gender": "NOT_SPECIFIED",
  "uid": "18c354ec-278b-41cd-a003-0214f448f299",
  "birthDate": "1999-06-21",
  "avatar": null,
  "participant": {
    "cashbackRate": 11,
    "dateCreated": "2021-06-21T09:46:28.054Z",
    "discountRate": 0,
    "id": 1099123456789,
    "inviterId": 1090123456789,
    "lastTransactionTime": null,
    "membershipTier": {
      "conditions": {
        "effectiveInvitedCount": null,
        "totalCashSpent": null
      },
      "name": "Базовый",
      "rate": 11,
      "uid": "base"
    },
    "points": 100
  },
  "displayName": "Иван Иванов"
}

 

  • Получение нового заказа

{
  "cash": 270,
  "onlinePayment": null,
  "purchase": {
    "cash": 270,
    "discountAmount": 0,
    "certificatePoints": 0,
    "maxPoints": 10,
    "extras": {},
    "netDiscount": 10,
    "points": 10,
    "netDiscountPercent": 3.57,
    "cashBack": 9.9,
    "total": 280,
    "cashTotal": 270,
    "skipLoyaltyTotal": 180,
    "pointsPercent": 3.57,
    "discountPercent": 0
  },
  "delivery": {
    "address": null,
    "branch": {
      "displayName": "ул. Мира, 1, Москва, Россия, 123456",
      "id": 2199023540548
    },
    "deliveryCase": null,
    "receiverName": "Иван Иванов",
    "receiverPhone": "+78007754524",
    "type": "PICKUP",
    "userComment": "Комментарий от клиента"
  },
  "certificatePoints": 0,
  "customer": {
    "displayName": "Иван Иванов",
    "id": 1099123456789,
    "membershipTier": {
      "conditions": {
        "effectiveInvitedCount": null,
        "totalCashSpent": null
      },
      "name": "Базовый",
      "rate": 11,
      "uid": "base"
    },
    "uid": "18c123ec-278b-41cd-a003-0214f448f299"
  },
  "comment": null,
  "dateCreated": "2021-06-21T09:47:29.372Z",
  "points": 10,
  "id": 876619,
  "total": 280,
  "items": [
    {
      "externalId": "coffee_cappuccino1",
      "id": 1594565,
      "name": "Капучино",
      "price": 90,
      "qty": 2,
      "sku": "1,
      "type": "VARYING_ITEM",
      "variantName": "Маленький 100 мл"
    },
    {
      "externalId": null,
      "id": 1463419,
      "name": "Шарф",
      "price": 100,
      "qty": 1,
      "sku": "",
      "type": "VARYING_ITEM",
      "variantName": "черный"
    }
  ],
  "paymentMethod": {
    "name": null,
    "type": "CASH"
  },
  "state": "NEW"
}

 

  • Проведение операции

{
  "id": 296982952,
  "dateCreated": "2021-06-21T09:43:40.605Z",
  "action": "PURCHASE",
  "state": "NORMAL",
  "customer": {
    "id": 1099123456789,
    "uid": "aa11d203-d643-4cce-bb2b-e70efcab74a5",
    "displayName": "Иван Иванов",
    "membershipTier": {
      "uid": "f91234fc-3f24-45ea-8eb1-16d00a7370d2",
      "name": "PLATINUM",
      "conditions": {
        "totalCashSpent": {
          "target": 10000
        }
      },
      "rate": 21
    }
  },
  "cashier": {
    "id": 2712234337919,
    "displayName": "UDS Admin"
  },
  "points": -10,
  "cash": 990,
  "total": 1000,
  "receiptNumber": null
}

Помогла ли вам статья?