В этой теме разберём, что такое 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());
}
}
Другие примеры 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