Процесс работы интегрированной учетной системы с заказами UDS:
- Клиент набирает товары в корзину в приложении UDS App или через Веб-версию.
- Клиент выбирает способ получения Доставка или Самовывоз (Компания в настройках указывает способ получения).
- Клиент указывает количество списываемых бонусов и выбирает способ оплаты Онлайн (сразу картой), При получении или другой способ (Компания в настройках указывает способы оплаты).
- Клиент совершает заказ в UDS.
- Заказ поступает на email, в личный кабинет UDS Бизнес и отправляется Webhook (запрос) в учетную систему с информацией о новом заказе.
- Информация о заказе отображается в учетной системе и оператор обрабатывает заказ.
- Оператор закрывает заказ в учетной системе, он автоматически закрывается в UDS и печатается чек (или оплата происходит в облачной кассе).
Ниже описано более подробно и с методами
Предполагаемый бизнес процесс работы учетной системы при реализованной интеграции с UDS:
- После того как клиент сформирует заказ и отправит его (выше пункты 1,2,3,4) отправляется Webhook о новом заказе на URL, указанный в настройках методом POST.
Webhook настраивается в Настройках UDS Бизнес в разделе Интеграция и указывается адрес, куда будет отправляться Webhook.
Пример информации в Webhook по заказу, которая отправляется при создании заказа:
{ "cash": 2899, "onlinePayment": null, "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 }, "delivery": { "address": "Город, моя улица, д.1", "branch": null, "deliveryCase": { "name": "Курьерская доставка", "value": 100 }, "receiverName": Иванов Иван", "receiverPhone": "88007754524", "type": "DELIVERY", "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" }, "state": "NEW" }
где total, points и cashTotal- это общий счет, количество списываемых бонусов и сколько клиент должен оплатить деньгами (с учетом платной доставки) соответственно,
receiverName- имя клиента,
receiverPhone- номер телефона клиента,
type- указывается способ получения Доставка или Самовывоз (указывается филиал branch)
onlinePayment- если клиент оплатил Онлайн, то здесь указывается статус оплаты
Items- в этом разделе отображаются заказанные позиции
- Заказ автоматически вводится в учетную систему и вводится количество списываемых бонусов (нельзя списывать больше или меньше бонусов, чем указано в заказе).
Если заказ отредактировали в учетной системе, добавили или удалили какие-то позиции, то необходимо отправить соответствующий запрос, чтобы он так же изменился и в UDS.
Пример запроса:
curl -H "accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Origin-Request-Id: $(uuidgen)" \
-H "X-Timestamp: $(date --iso-8601=seconds --utc)" \
-u "<companyId>:<api_key>"
-d '{ \ "deliveryCase": {"name": "new zone", "value": 0}, \
"items": [{
"id": 111, \
"variantName": "red", \
"qty": 2 \
},{ \
"externalId": 22222, \
"name": "new green apple", \
"price": 110.0, \
"qty": 2, \
"skipLoyalty": true \
}] \
}' \
-X PUT "https://api.uds.app/partner/v2/goods-orders/{id}"
где {id}- это id заказа в UDS, который можно получить из вебхука
Важно! В запросе редактирования заказа необходимо отправлять информацию о всем заказе (а не только редактируемой части).
- Заказ закрывается в учетной системе.
Для реализации закрытия заказа есть два варианта:
Вариант 1 (полностью автоматический, рекомендуемый):
При закрытии заказа отправляется соответствующий запрос в UDS.
Пример запроса:
curl -H "accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Origin-Request-Id: $(uuidgen)" \
-H "X-Timestamp: $(date --iso-8601=seconds --utc)" \
-u "<companyId>:<api_key>"
-X POST "https://api.uds.app/partner/v2/goods-orders/{id}/complete"
где {id}- это id заказа в UDS, который можно получить из вебхука
Вариант 2 (через код клиента, 6 цифр, из заказа):
Данный вариант проще в реализации, если учетная система уже интегрирована с UDS по стандартному проведению оплаты: когда клиент приходит и показывает с мобильного приложения свой код (6 цифр) и по нему проводится оплата.
В этом случае для закрытия заказа необходимо получить код клиента из заказа, отправив запрос.
Пример запроса:
curl -H "accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Origin-Request-Id: $(uuidgen)" \
-H "X-Timestamp: $(date --iso-8601=seconds --utc)" \
-u "<companyId>:<api_key>"
-X POST "https://api.uds.app/partner/v2/goods-orders/{id}/code"
где {id}- это id заказа в UDS, который можно получить из вебхука
В дальнейшем проводится стандартная оплата с помощью данного кода клиента. После проведения оплаты, заказ автоматически закрывается в UDS.
Важно! Сгенерированный код клиента живет 40 минут, т.е. оплата должна быть проведена не позже чем 40 минут после генерации кода. Код клиента рекомендуется генерировать непосредственно перед оплатой