RUS
  • ENG
  • RUS

Интеграция с заказами UDS

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

Процесс работы интегрированной учетной системы с заказами UDS:


  1. Клиент набирает товары в корзину в приложении UDS App или через Веб-версию.

  2. Клиент выбирает способ получения Доставка или Самовывоз (Компания в настройках указывает возможные способы получения заказов).

  3. Клиент указывает количество списываемых бонусов и выбирает способ оплаты Онлайн (сразу картой), При получении или другой способ (Компания в настройках указывает способы оплаты).

  4. Клиент совершает заказ в UDS.

  5. Заказ поступает на email, в личный кабинет UDS Бизнес и отправляется вебхук (запрос) в учетную систему с информацией о новом заказе (UDS отправляет POST запрос на адрес интеграциооного модуля для обработки заказ).

  6. Данный заказ попадает в кассу согласно адресу филиала для самовывоза. В случае доставки заказ может быть отправлен на “дежурную” кассу или в сервис приема заказов ( если такой имеется у клиента).

  7. Информация о заказе, составе заказа, клиенте, списываемых бонусах отображается в учетной системе и оператор обрабатывает заказ. Если заказ требует подтверждения перед оплатой (статус NEED_ACK), то оператор проверяет состав заказа и после проверки интеграционный модуль должен отправить POST запрос для смены статуса на Ожидает оплату (WAITING_PAYMENT). После оплаты отправится повторно вебхук по заказу со статусом NEW

  8. Если в заказе установлена скидка, применялись бонусы, то сумма заказа понижается на размер скидки и количество списываемых бонусных баллов. Например, заказ по позициям на 1000, списано 100 бонусных баллов, итого клиент должен оплатить 900 рублей.

  9. При изменении статуса готовности заказа (например, Передан на кухню, Ожидает получения и т.п.) интеграционный модуль отправляет POST запрос на изменения статуса заказа в UDS

  10. Оператор закрывает заказ в учетной системе, он автоматически закрывается в UDS (модуль должен отправить запрос в UDS на закрытие заказа)  и печатается чек (или оплата происходит в облачной кассе). Из ответа от UDS в базу данных интеграционного модуля записывается идентификатор операции в UDS и в кассе.

  11. В случае возврата заказа,который создан из UDS, возврат также должен быть осуществлен в UDS

    Для этого в UDS отправляется POST запрос возврата операции с данными из базы данных интеграционного модуля с id операции в UDS и в теле запроса указывается параметр

    partialAmount (сумма всех возвращаемых товаров в чеке возврата с учетом сторонних скидок);

    Если статус ответа от UDS на запрос возврата 200, то отобразить информацию сотруднику об успешном возврате в UDS

    Если статус ответа от UDS на запрос возврата отличается от 200, то отобразить информацию сотруднику о неудачной попытке возврате в UDS

  12. В случае отмены заказа интеграционный модуль отправляет POST запрос для отмены заказа в UDS 


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

Логическая схема по заказам

 

Основные моменты:  

  • После того как клиент сформирует заказ и отправит его (выше пункты 1,2,3,4) отправляется Webhook о новом заказе на URL, указанный в настройках личного кабинета UDS Бизнес методом POST.

  • Интеграционный модуль обрабатывает полученный вебхук и создает в учетной системе заказ.

  • Для идентификации товаров из заказа UDS в учетной системе у товаров в UDS есть поле внешний идентификатор (externalId) или артикул (sku) - с помощью этого параметра можно сотнести товары в вебхуке и в учетной системе.

  • Если заказ изменяется в учетной системе, заказ также должен быть изменен в UDS.

  • При изменении списка товаров в заказе методом PUT должен передастся весь список товаров, которые должны быть в заказе.

  • Если заказ оплачен онлайн в UDS, то такой заказ не может быть изменен.

  • Интеграционный модуль должен определить способ оплаты заказа и корректно отобразить его в учетной системе.

  • Интеграционный модуль должен определить способ получения заказа и адрес филиала компании для исполнения заказов. В случае заказа для самовывоза клиент сам определяет адрес самовывоза и достаточно соотнести адрес филиала в вебхуке и адрес компании. При оформелнии заказа для доставки интеграционный модуль должен самостоятельно определить адрес филиала для исполнения заказа по адресу доставки в заказе.

  • Если в компании установлена настройка оплаты заказа после подтверждения, но при оформлении заказа сначала отправится вебхук со статусом NEED_ACK для согласования заказа, затем после оплаты отправится вебхук о новом заказе.


Вебхуки настраиваются в Настройках UDS Бизнес в разделе Интеграция и указывается адрес, куда будет отправляться вебхук.

В целях обеспечения безопасности запросов все вебхуки подписаны цифровой подписью, необходимо проверять подпись вебхука по заголовку X-Signature в запросе.  


Пример информации в Webhook по заказу, которая отправляется при создании заказа:

"state": "NEW"  //{
  "cash": 2899,
  "onlinePayment": null,  // "onlinePayment": {"completed":true //false, "id":111, "paymentProvider":"Cloud_payments"}
  "purchase": {
    "cash": 2799,
    "discountAmount": 0,
    "certificatePoints": 0,
    "maxPoints": 150,
    "extras": {
      "delivery": 100
    },
    "netDiscount": 150,
    "points": 150,
    "netDiscountPercent": 5.09,
    "cashBack": 587.79,
    "total": 2949,
    "cashTotal": 2899,
    "skipLoyaltyTotal": 0,
    "pointsPercent": 5.09,
    "discountPercent": 0,
    "certificatePoints":0
  },
  "delivery": {
    "address": "Город, моя улица, д.1",
    "branch": null,   // "branch" : {"id":12345, "displayName":"название филиала"}
    "deliveryCase": {
      "name": "Курьерская доставка",
      "value": 100
    },
    "receiverName": Иванов Иван",
    "receiverPhone": "88007754524",
    "type": "DELIVERY", //"PICKUP"
    "userComment": "Доставить к 12.00"
  },
  "certificatePoints": 0,
  "customer": {
    "displayName": "Support UDS",
    "id": 101232941037,
    "membershipTier": {
      "conditions": {
        "effectiveInvitedCount": {
          "target": 10
        },
        "totalCashSpent": {
          "target": 10000
        }
      },
      "name": "PLATINUM",
      "rate": 21,
      "uid": "f99434fc-3f24-45ea-8eb1-16d00a7370d2"
    },
    "uid": "aa31d203-d655-4cce-bb2b-e70efcab74a5"
  },
  "comment": null,
  "dateCreated": "2021-09-30T16:36:29.605Z",
  "points": 150,
  "id": 1068966,
  "total": 3049,
  "items": [
    {
      "externalId": null,
      "id": 821164,
      "name": "Американо",
      "price": 101,
      "qty": 1,
      "sku": null,
      "type": "ITEM",
      "variantName": null
    },
    {
      "externalId": null,
      "id": 1551263,
      "name": "Шоколадный торт 0,5 кг",
      "price": 1199,
      "qty": 2,
      "sku": "т01",
      "type": "ITEM",
      "variantName": null
    },
    {
      "externalId": "coffee_cappuccino",
      "id": 1490032,
      "name": "Капучино",
      "price": 150,
      "qty": 3,
      "sku": "2",
      "type": "VARYING_ITEM",
      "variantName": "Средний 200 мл"
    }
  ],
  "paymentMethod": {
    "name": "PayPal",   // 
    "type": "MANUAL"   //["CASH","CLOUD_PAYMENTS","CUSTOM"]
  },
  "orderStatus": null, //["ACCEPTED", "READY"]
  "state": "NEW"  //["NEED_ACK"]
}

После закрытия заказа в учетной системе необходимо закрыть заказ в UDS, отправив запрос на закрытие заказа

Как определить на какую кассу создавать заказ?

В UDS у каждого филиала есть свои идентификатор, по которому можно определить однозначно филиал.

В случае заказа на самовывоз в вебхуке приходит идентификатор филиала - можно филиалу UDS соотнести свои id кассы и по нему заказы разделять по кассам

В случае заказа на доставку определить на какую кассу отправлять заказ можно по адресу доставки или настраить одну кассу, на которую будут отправляться все заказы для доставки

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