Страница 1 из 1

ИНТЕГРАЦИЯ WOOCOMMERCE И SABY PRESTO (рабочий вариант)

Добавлено: 07 дек 2025, 20:24
MarkT
⠀⠀⠀⠀Хочу в так сказать онлайне разобраться со своим случаем. Шаги решения буду озвучивать здесь.
⠀⠀⠀⠀Техзадание:
⠀⠀⠀⠀На WOOCOMMERCE есть интернет-магазин STOLOVKA.PRO. С его помощью формируются заказы и заполняются определенные, нестандартные нужные поля. Такие как: Имя клиента, телефон, адрес, подъезд, квартира, время к которому произвести доставку, состав заказа (номенклатура), скидки, наценки.
⠀⠀⠀⠀На точке общепита установлена программа SABY PRESTO. Документация по API по ССЫЛКЕ
⠀⠀⠀⠀Cуть в том, что SABY PRESTO использует сервисную авторизацию: сначала происходит запрос токена доступа в котором нужно указать свой идентификатор и защитный ключ и сервисный ключ. После этого в ответе получается токен доступа. После этого данный токен используется при каждом запросе.

Скриншот 07-12-2025 201459.jpg
Скриншот 07-12-2025 201459.jpg (56.53 КБ) 140 просмотров
⠀⠀⠀⠀Данный протокол называется OAuth 2.0
⠀⠀⠀⠀Структура запроса понятна. Даже написать все это можно. Но непонятна схема (система) или на базе чего должен быть сделан первоначальных обмен ключами и получения токена. Я сначала думал, что необходим некий дополнительный программный шлюз, на который необходимо завязать эндопоинты обоих приложений и там сформировать что-то вроде логического буфера, через который потом будет идти весь обмен.
⠀⠀⠀⠀Либо непосредственно на стороне WOOCOMMERCE установить плагин, который сможет выполнять данные функции.
⠀⠀⠀⠀Я пробовал устанавливать на сервер что то вроде шлюза, но пока не разобрался - не хватает знаний. Так же на стороне сайта сейчас стоит плагин WPGetAPI

Re: НЕОБХОДИМА ПОМОЩЬ С API

Добавлено: 09 дек 2025, 19:16
MarkT
Ну что....
Сервисная авторизация на стороне ИМ магазина прошла. Все было использовано через сервисную авторизацию.

Открываем мануал к SABY PRESTO и смотрим как получить токен доступа. Копируем скрипт "функция с URL" и подставляем свои значения, полученные из SABY. И втыкаем в нужные места. В нашем случае под циферку 2 (рис.1). Остальное и так понятно.

В аддоне к плагину WPGetAPI на стороне Интернет Магазина есть функция авторизации OAuth 2.0. Выглядит это следующим образом:


Скриншот 09-12-2025 190518.jpg
Скриншот 09-12-2025 190518.jpg (141.63 КБ) 110 просмотров
Запускаем тест и получаем:


Скриншот 09-12-2025 191221.jpg
Скриншот 09-12-2025 191221.jpg (99.63 КБ) 110 просмотров
Successfully authorized! You can now make calls to your API. The keyword 'wpgetapi_oauth_token' should be used (without quotes) where you need to add your token & the plugin will automatically replace this keyword with your actual token.
Перевод:
Авторизация прошла успешно! Теперь вы можете обращаться к своему API. Ключевое слово "wpgetapi_oauth_token" должно быть использовано (без кавычек) там, где вам нужно добавить свой токен, и плагин автоматически заменит это ключевое слово на ваш реальный токен.
Из мануала: Чтобы выполнять запросы к API, необходимо передавать токен доступа в заголовке каждого запроса:

Код: Выделить всё

X-SBISAccessToken: <token>
Это обязательный параметр, без которого API-команды не будут обработаны.

Иными словами, теперь можно делать запрос в шапку которого необходимо вместо "token" воткнуть "wpgetapi_oauth_token" и полученный токен авторизации будет подтягиваться в это поле самостоятельно.

Теперь пробую делать тестовый запрос. Первоначальная задача в том, чтобы сделать заказ на сайте и в SABY должен прилететь заказ на доставку с хотя-бы указанным номером телефона в заказе и именем.

Читаю дальше мануал....

Re: НЕОБХОДИМА ПОМОЩЬ С API

Добавлено: 30 дек 2025, 08:14
MarkT
Прошло некоторое время. Был очень занят, но понимая, что заказов через интернет-магазин становится все больше и больше, то оператор становится очень значимой фигурой в плане зависимости от нее: заболела, не вышла на работу, ошибки в оформлении заказов, не там галочку поставила, не позвонила тому-то или тому. Ну и физически уперлись в то, что на оформление одной заявки необходимо время а их много + корректировка. Поэтому пришлось поторопиться и наконец-то был получен результат. Результат это API запрос - лист сборки (см. рис.1). Соответственно заказ подвешен в saby presto.
photo_5375595589418028158_y.jpg
photo_5375595589418028158_y.jpg (234.41 КБ) 46 просмотров
Повторюсь, что это тестовый заказ и до полноценной интеграции нужно еще пару дней новогодних праздников 2026г. Полноценная интеграция - это когда в запрос подтягиваются требуемые поля из заказа на сайте.
Используемые инструменты для написания правильного запроса:
- Мануал по САБИ
- POSTMAN
- Сервисный доступ
- Плагин API для woocommerce

Еще картинка заказа, но уже в самой системе:
photo_5377655198035151693_y.jpg
photo_5377655198035151693_y.jpg (48.75 КБ) 46 просмотров
Долго расписывать не буду, но согласно мануалу запрос примерно таой:

Код: Выделить всё

import requests
import json

url = "https://api.sbis.ru/retail/order/create?"

payload = json.dumps(
    {
        "product": "delivery",
        "pointId": 15727956,
        "comment": "заказ",
        "customer": {
            "externalId": null,
            "name": "Иван",
            "lastname": "Иванов",
            "email": null,
            "phone": "89051224747",
        },
        "datetime": "2025-10-26 13:25:00",
        "nomenclatures": [
            {
                "id": 10,
                "priceListId": 4,
                "count": 5,
                "cost": null,
                "name": "Блин с ветчиной и сыром",
                "modifiers": [
                    {
                        "cost": 50.0,
                        "hierarchicalId": 12591,
                        "hierarchicalParent": 10002132,
                        "id": 2195,
                        "count": 1,
                        "isParent": null,
                        "name": "Крендель с корицей",
                    }
                ],
            }
        ],
        "delivery": {
            "addressJSON": {
                "Address": "Тверь, Центральный район, улица Дарвина, 6",
                "AptNum": "9999",
                "DoorCode": "b9999",
                "Entrance": "999",
                "Floor": "9",
                "Locality": "Тверь",
                "Coordinates": {"Lat": 56.84929206118923, "Lon": 35.89677546993761},
            },
        },
        "persons": null,
        "isPickup": false,
        "baseURL": "https://online.sbis.ru",
        "successURL": "https://google.com?param1=adsads&param2=sdf",
        "errorURL": "ya.ru",
    },
)
headers = {
    "Content-Type": "application/json",
    "X-SBISAccessToken": "JVdyQEFGalZ3RX5GbGxmMCNia09lUlsjZUdoOVJUfmx2dTt4Vmopdy04ZUZBZmxHKG9sYiwpQHN5Yi1JW3ZVUTIwMjQtMTItMTggMTc6MjQ6NTMuNjc4Nzg3",
}

response = requests.post(url, headers=headers, data=payload)

print(response.text)
Фактически он отличается от того, что вывше. И на то, чтобы сформировать правильный запрос, было убито очень много времени. Как говорится теперь, когда знаешь, все просто. )

Re: ИНТЕГРАЦИЯ WOOCOMMERCE И SABY PRESTO (рабочий вариант)

Добавлено: 01 янв 2026, 12:07
MarkT
Прошли сутки с момента кая я начал работать над кодом интеграции Woocommerce и sabi presto. И могу с уверенностью сказать, что я очень далеко продвинулся. Все это время с 31.12 по 01.01.2026 я взаимодействовал с ИИ и мы вместе сделали невозможное!
Был создан плагин для woocommerce более 520 строк кода. Что умеет плагин:
- Производить сервисную авторизацию и записывать на 1 час в кеш полученный от сервера токен
- Подставлять токен в необходимые запросы
- Отправлять необходимые данные в САБИ ПРЕСТО и формировать заказ
Так же организована логика по отправке или не отправке тех или иных товаров в саби престо, логика выведения комментариев, логика работы с купонами бесплатной доставки.
Фактически у меня раньше оператор все эти заказы перепечатывала вручную и допускались ошибки. Теперь, после тестов, я удивлен надежности всего этого.
Прямо сейчас производится работа по обмену статусами заказов.
Могу уверенно сказать, что только сейчас я получил колоссальный опыт по работе с API, который, как уже понимаю я реализую в написании своего приложения для андроида. Ибо все очевидное стало явным.
С Новым Годом, уважаемые участники!