• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Важно! Вебзацепы (Webhooks) в Woocommerce

D&B

Администратор
Команда форума
Местный
По существу веб хук (Webhook) – это напоминание о событие, с перенаправлением на любой URL по вашему выбору. Пользователи могут настроить их таким образом, чтоб можно было запустить события на одном сайте, которые повлекут за собой определенное поведение на другом.

Также веб хуки полезны для интеграции со сторонними сервисами и внешними API, которые их поддерживают.

Веб хуки в WooCommerce

Веб хуки впервые появились в WooCommerce 2.2, и они способны вызывать определенные события каждый раз, как вы добавляете, редактируете или удаляете заказы, товары, купоны или клиентов и все в таком роде. Также возможно использовать Веб хуки с экшенами WooCommerce, например, можно, создать Веб хук, который будет запускаться при добавлении товара в корзину, используя экшен woocommerce_add_to_cart.

С помощью Веб хуков гораздо проще интегрировать сторонние app’и с WooCommerce.

В настроечном меню (Settings menu) WooCommerce 2.3 появился удобный интерфейс для добавления, редактирования и удаления Веб хуков

Webhooks1.jpg

Создание, редактирование и удаление Веб хуков.

Создание веб хуков

Для создания нового хука кликните кнопку «Добавить веб хук» (“Add Webhook”) в “WooCommerce > Settings > Webhooks“.

Вот такие поля вы увидите:

Webhooks2.jpg

Name (Имя): при клике на кнопку, Веб хук автоматически создается с именем “Webhook created on [дата и время создания]”, такой стандарт, но вы можете изменить это имя.

Status(Статус): тут можно задать статус веб хука, можно выбрать “Active” (Активный, обеспечивает полноценную доставку), “Paused” (На паузе, без доставки) или “Неработоспособен ” (без доставки из-за сбоев доставки).

Topic (условие выполнения): здесь вы можете установить условие для включения Веб хука, у нас есть такие опции на выбор – “Order Created“(Заказ создан), “Product Deleted” (Товар удален) и“Customer Updated” (Профиль клиента обновлен) . Также есть опции “Action” (Экшен) и “Custom” (Пользовательский).

Action Event (Экшен-событие): эта опция активна, когда в поле Topic выбрано “Action”: здесь вам нужно вбить WooCommerce-экшен, типа woocommerce_add_to_cart для включения события при добавлении клиентом товара в корзину.

Custom Topic: здесь вы можете создать кастомный топик, эта функция пригодится только продвинутым пользователям. Есть возможность представить новые кастомизированные топики с использованием фильтра woocommerce_webhook_topic_hooks

Delivery URL (URL доставки): адрес, по которому доставляется загружаемый веб хук.

Secret: секретный ключ, который используется для генерации хэша доставляемого веб хука в заголовках запросов.

Если все готово, то жмите кнопку “Save Webhook”

Замечание: если веб хук сохранен первый раз с активным статусом, то он пошлет пинг на URL доставки.

Редактирование и удаление веб хуков

Веб хуки отображаются таким же списком, как записи или товары, и их можно редактировать и удалять, используя следующие ссылки:

Webhooks3.jpg

Если хотите что-то отредактировать, то взгляните на поля, описанные в части «Создание веб хуков»

Журналы всех хуков.

WooCommerce сохраняет записи о всех задействованных событиях, и вы можете увидеть их, кликнув «редактировать» (“edit”) веб хук (журналы вы найдете в самом низу страницы)

Webhooks4.jpg

Журналы дают вам великолепную возможность, узнать какие веб хуки были доставлены, и каковы были ответы сервера на доставку, благодаря чему упрощается процесс интеграции и устранения багов.

Источник
 
Последнее редактирование:

kvo

Форумчанин
А можно примеры чего-нибудь на основе хуков, что бы понять точнее для чего их можно с пользой использовать?
 

andrey3264

Новичок
Здравствуйте!
Спасибо за статью. При использовании полученных знаний возник вопрос. Событие срабатывает, в журнале есть отметка о срабатывании хука и о ответе вызываемого файла. Но как можно использовать параметры (та самая строчка "Содержание"), которые отображаются в журнале? Там написано, что "Метод: POST". Думал, что содержание появляется в массиве $_POST, но он абсолютно пуст. Вы знаете, как пользоваться переданным содержанием?
 

Mikeekb

Новичок
Здравствуйте!
Спасибо за статью. При использовании полученных знаний возник вопрос. Событие срабатывает, в журнале есть отметка о срабатывании хука и о ответе вызываемого файла. Но как можно использовать параметры (та самая строчка "Содержание"), которые отображаются в журнале? Там написано, что "Метод: POST". Думал, что содержание появляется в массиве $_POST, но он абсолютно пуст. Вы знаете, как пользоваться переданным содержанием?

Андрей, здравствуйте, у меня такая же проблема, вам удалось ее решить?

Еще может быть кто подскажет, как изменить JSON данные отправляемые вебхуком при заказе товара (Заказ создан), надо удалить некоторые поля, некоторые добавить.
 

alexv66

Новичок
надо читать входящий поток

$_POST = json_decode(file_get_contents('php://input'), true);
 

Mikeekb

Новичок
надо читать входящий поток

$_POST = json_decode(file_get_contents('php://input'), true);
Спасибо, до этого я тоже уже дошел)

А вот второй вопрос остался открытым. Я добавляю новое поле в заказе:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_inn']['label'] = 'ИНН';
$fields['billing']['billing_inn']['required'] = '1';
return $fields;
}

И мне надо, чтобы вебхуком (Заказ создан) отправлялись JSON данные с этим новым полем.
И желательно лишние поля, которых очень много - удалить.
 
Сверху Снизу