Примеры запросов в Partner API
Предполагаемые данные для интеграции в CRM систему:
1. Интеграция списка клиентов из UDS в CRM систему и тегов клиента
2. Интеграция заказов из UDS в CRM систему
3. Интеграция списка операций из UDS в CRM систему
4. Интеграция товаров
Интеграция построена на обработке входящих вебхуков от UDS CRM системой.
Для настройки вебхука нужно зайти в Настройки UDS Бизнес в раздел Интеграция, включить настройку вебхуки и указать адрес Вашего сервера, который будет обрабатывать отправляемые данные.
Важно! Для отправки вебхуков необходимо сгенерировать API Key, если он отсутствует
В UDS Бизнес Вы можете настроить вебхуки на следующие события:
Появление нового клиента в компании.
Проведение стандартной операции.
Получение нового заказа.
UDS отправляет вебхук методом POST с JSON-объектом в теле запроса. Для безопасности вебхуки хешируются с помощью md5, что позволяет Вашему серверу убедиться, что данные отправляются именно от UDS.
1. Интеграция клиентов
У каждого клиента в компании есть свой уникальный идентификатор - его можно посмотреть в личном кабинете UDS Бизнес, в выгрузке Excel по клиентам, в запросе по API метод find customer или получить в вебхуке при присоединении нового клиента.
Интеграционный модуль должен обрабатывать входящий вебхук о присоединении нового клиента.
При наличии номера телефона, имени клиента интеграционный модуль должен сопоставить клиента из UDS с клиентом из CRM и указать клиенту из CRM идентификатор из UDS participant -> id
При отсутствии клиента в CRM системе интеграционный модуль должен создать клиента в CRM и заполнить необходимые поля из вебхука от UDS. С описанием полей можно ознакомится тут
Пример вебхука:
{ "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": "Иван Иванов" }
Интеграционный модуль должен уметь актуализировать список клиентов с идентификатором UDS из CRM системы. Список можно обновлять GET запросами в Partner API UDS:
- по каждому отдельному клиенту по его идентификатору https://api.uds.app/partner/v2/customers/{идентификатор клиента} - из списка клиентов по идентификатору клиента из ответа https://api.uds.app/partner/v2/customers?max=10&offset=0Примечание:
Если оплата проводится по номеру телефона клиента, незарегистрированного в UDS,то во входящем вебхуке для такого клиента в displayName будет указан номер телефона, в поле uid будет null - таким образом можно определить зарегистрирован ли клиент в UDS.
Интеграци должна поддердивать работу с сегментированием клиентов. Инструкция по сегментированию клиентов
2. Интеграция операций
У каждой операции в UDS есть свой уникальный идентификатор - его можно посмотреть в личном кабинете UDS Бизнес, в выгрузке Excel по операциям, в запросе по API метод get transaction или получить в вебхуке при проведении новой операции.
Интеграционный модуль должен обрабатывать входящий вебхук о проведении новой операции.
Интеграционный модуль должен сопоставить новую операцию с клиентом в CRM по идентификатору клиента UDS из поля customer -> id (соответствует идентификатору клиента из пункта 1) и записать новую операцию клиенту в CRM (то есть у клиента в CRM должна эта операции записать в историю сделок, оплат и т.п.)
При отсутствии клиента с идентификатором customer -> id в CRM интеграционный модуль должен создать клиента в CRM, отправив GET запрос в Partner API UDS (https://api.uds.app/partner/v2/customers/{идентификатор клиента}) и из ответа заполнить требуемые поля. С описанием полей можно ознакомится тут
Пример вебхука:
{ "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 }
Интеграционный модуль должен уметь актуализировать список операций, ее статус из UDS в CRM. Список можно обновлять GET запросами в Partner API UDS:
- по каждой отдельной операции по ее идентификатору https://api.uds.app/partner/v2/operations/{идентификатор операции} - из списка операций по идентификатору операции из ответа https://api.uds.app/partner/v2/operations?max=10&cursor=cursor
Возможные статусы операции: NORMAL - стандартная операция, REVERSAL - операция возврата, CANCELED - операция, по которой сделан возврат.
Если в CRM системе статус NORMAL, а из ответа Partner API UDS статус операции CANCELED - это означает, что по операции в UDS совершен возврат и ее статус в CRM также надо сменить на соответствующий.
Для операции со статусом REVERSAL в запросе передается также идентификатор операции, по которой сделан возврат, в объекте origin -> id.
Если операция по идентификатору не найдена, то означает, что она удалена в UDS и ее в CRM также надо удалить или указать на соответствующий статус.
3. Интеграция заказов
У каждого заказа в UDS есть свой уникальный идентификатор - его можно посмотреть в личном кабинете UDS Бизнес или получить в вебхуке при получении нового заказа.
Интеграционный модуль должен обрабатывать входящий вебхук о получении нового заказа.
Интеграционный модуль должен сопоставить новый заказ с клиентом в CRM по идентификатору клиента UDS из поля customer -> id (соответствует идентификатору клиента из пункта 1) и записать новый заказ клиенту в CRM (то есть у клиента в CRM должна этот заказ записать в историю сделок, оплат и т.п.)
При отсутствии клиента с идентификатором customer -> id в CRM интеграционный модуль должен создать клиента в CRM, отправив GET запрос в Partner API UDS (https://api.uds.app/partner/v2/customers/{идентификатор клиента}) и из ответа заполнить требуемые поля. С описанием полей можно ознакомится тут
Интеграционный модуль должен создавать открытую сделку в CRM системе, указать данные по заказу (список товаров, адрес доставки, самовывоза, способ оплаты и т.п.). С описанием полей можно ознакомится тут
Если в составе заказа меняется список товаров через CRM, то интеграционный модуль должен отправить методом PUT измененный заказ в Partner API UDS для актуализации состава заказа в UDS.
Если заказ из UDS переходит в CRM в статус завершенных, то его также нужно завершить в UDS, отправив POST запрос с идентификатором заказа
https://api.uds.app/partner/v2/goods-orders/{идентификатор заказа}/complete
Пример вебхука:
{ "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" }
Интеграционный модуль должен уметь актуализировать статус заказа из UDS в CRM. Заказ можно обновлять GET запросом в Partner API UDS:
- по каждому отдельному заказу по его идентификатору https://api.uds.app/partner/v2/goods-order/{идентификатор заказа}
Возможные статусы операции: NEW - новый заказ, COMPLETED - заказ завершен, DELETED - заказ отменен.
Если в CRM системе статус NEW, а из ответа Partner API UDS статус заказа COMPLETED или DELETED - это означает, что заказ завершен или отменен в UDS и его статус в CRM также надо сменить на соответствующий.
Примечание:
Если у заказа статус COMPLETED или DELETED, то статус в UDS больше смениться не может и запросов по этому заказу в Partner API UDS не нужно отправлять.
4. Интеграция товаров
Если в CRM используется товароучет, то данные по товарам можно загружать в UDS или выгружать в CRM. Более подробно можно ознакомиться в отдельной инструкции по интеграции товаров тут