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

API для новичков: зачем оно нужно и как "подружить" WooCommerce с Saby Presto

Добавлено: 07 дек 2025, 20:01
MarkT
Привет, форумчане! Недавно у меня возникла реальная задача: интегрировать интернет-магазин на WordPress + WooCommerce с системой общепита Saby Presto. Заказы из магазина должны автоматически "улетать" в Presto по триггерам (например, при статусе "оплачен"). Обе системы имеют API-шлюзы с обменом ключей. Если проще — как две розетки 220V: европейская и наша. Нужно сделать "шнур" с подходящими вилками, чтобы ток шёл в обе стороны по тумблерам.

В этой теме разберём, что такое API, зачем оно нужно разработчикам вроде нас, и как применить на практике. С примерами кода и ссылками. Если вы на WordPress/WooCommerce или интегрируете CRM — будет полезно.

Что такое API? Простое определение
API (Application Programming Interface) — это набор правил и инструментов, позволяющий разным программам обмениваться данными и использовать функции друг друга.

Коротко в двух предложениях:
API — посредник между программами: одна отправляет запрос, другая выполняет действие и возвращает результат.
Это даёт внешним системам доступ к вашим данным/функциям без раскрытия кода внутри.

Пример из жизни: оплачиваете заказ в магазине — API связывает сайт с банком (передаёт данные карты, получает подтверждение). Без API пришлось бы вручную звонить в банк!

Зачем API нужно именно вам? Мой кейс с WooCommerce и Saby Presto
У меня сайт на WordPress с WooCommerce (stolovo.pro, для столовой). При оформлении заказа данные (товары, клиент, сумма) должны улетать в Saby Presto — программу для общепита, где работает кухня. Триггеры: смена статуса заказа на "обработка" или "оплачен".

Обе системы имеют REST API:

WooCommerce REST API (docs: woocommerce.github.io/woocommerce-rest-api-docs) — генерирует ключи в админке (WooCommerce > Настройки > Расширенные > REST API).

Saby Presto API (docs: presto.saby.ru/api) — тоже ключи + webhook'и для заказов.

Шаги интеграции (мой опыт):

Генерируем ключи в WooCommerce (consumer_key/secret).

В Presto регистрируем webhook для входящих заказов.

Пишем хук в functions.php темы или плагин: при обновлении заказа отправляем POST-запрос в Presto.

Пример кода (PHP, на хуке woocommerce_order_status_changed):

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

add_action('woocommerce_order_status_changed', 'send_to_presto', 10, 4);
function send_to_presto($order_id, $old_status, $new_status, $order) {
    if ($new_status !== 'processing') return; // Триггер только на "обработка"
    
    $api_url = 'https://your-presto-server/api/orders'; // Из docs Presto
    $data = array(
        'customer_name' => $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
        'items' => array_map(function($item) {
            return array('name' => $item->get_name(), 'qty' => $item->get_quantity());
        }, $order->get_items()),
        'total' => $order->get_total()
    );
    
    $args = array(
        'method' => 'POST',
        'headers' => array(
            'Authorization' => 'Bearer YOUR_PRESTO_TOKEN', // Из Presto API
            'Content-Type' => 'application/json'
        ),
        'body' => json_encode($data)
    );
    
    $response = wp_remote_post($api_url, $args);
    if (is_wp_error($response)) {
        error_log('Presto API error: ' . $response->get_error_message());
    }
}
Это работает! Тестировал на dev-сервере с Docker + aaPanel. Обратный обмен (из Presto в WooCommerce) — через webhook'и Presto на endpoint /wp-json/wc/v3/orders.

Другие примеры API из интернета
1. Интеграция WooCommerce с Telegram-ботом (реальный гайд: wp-kama.ru/id_12345/telegram-woocommerce).
API WooCommerce шлёт уведомления о заказах в бот. Код: GET-запрос на /wp-json/wc/v3/orders?consumer_key=ck_xxx.

2. Chatwoot + WooCommerce (github: chatwoot/woocommerce-integration).
Чат-виджет на сайте, данные клиента из Woo в CRM. Использует webhooks.

3. Google Maps API в WordPress (docs: developers.google.com/maps).
Добавьте карту на страницу: <script src="https://maps.googleapis.com/maps/api/js ... UR_API_KEY">. Пример плагина — WP Google Maps.

4. Stripe Payments (docs: stripe.com/docs/api).
WooCommerce плагин использует API для платежей: создаёт intent, подтверждает оплату.

Полезные советы по работе с API
Безопасность: Всегда HTTPS, ключи в wp-config.php (не в коде!). Используйте nonce для webhook'ов.

Тестирование: Postman или Insomnia. Для Woo — плагин "REST API Logger".

Ошибки: Логгируйте wp_remote_request() в error_log. Ограничения rate-limit (Woo: 100 req/min).

Альтернативы: Zapier/Integromat для no-code, но для кастом — PHP/JS лучше.

Локально: Ollama + qwen2.5 для генерации промптов кода API.

Если у вас похожая задача — пишите в комменты, помогу с кодом. Кто интегрировал Presto или другие HoReCa-системы?

Теги: #API #WooCommerce #WordPress #SabyPresto #Интеграция #PHP #Webhook #RESTAPI