Webhooki w Magento 2 – jak działają i najlepsze rozwiązania

12.11.2020 Angelika Siczek
najlepsze rozwiązania dla sklepów online

Usprawnianie przebiegu pracy to bardzo ważny element prowadzenia każdego biznesu. Robi się to  przede wszystkim po to, aby zredukować liczbę mało znaczących obowiązków lub zautomatyzować często powtarzalne czynności. Dzięki temu jesteśmy w stanie zaoszczędzić czas oraz środki finansowe. Do tego samego dążą także sprzedawcy Magento, którym zależy na zautomatyzowaniu rutynowych obowiązków, by móc skupić się na bardziej opłacalnych procesach biznesowych lub na innych skomplikowanych i wymagających większej uwagi sprawach. Nie ma też co ukrywać, że takie podejście pozwala spożytkować wolne chwile w nieco przyjemniejszy sposób i po prostu oderwać się od pracy. W jaki sposób to zrobić? Za sprawą Webhooków Magento 2 oraz automatyzacji, którą gwarantują. Zobacz, czym są i jak działają Webhooki w Magento 2 oraz poznaj najlepsze rozwiązania opracowane, by przekształcić obciążenia handlu elektronicznego w procesy zachodzące w tle.

Czym są wWebhooki i jak działają?

Co to są Webhooki?

Na wstępie warto podkreślić, że Webhooki nie są domyślnie dostępne w Magento 2. Na szczęście bardzo elastyczna architektura platformy umożliwia ich zaadaptowanie i dostosowanie do potrzeb danej firmy. Bez problemu więc stworzysz wraz z nimi nawet bardzo złożoną automatyzację i zrealizujesz cele specyficzne dla Twojego przedsiębiorstwa.

Czym są Webhooki? To elementy, które reprezentują sposób komunikowania się pomiędzy aplikacjami. Interakcja ta wymaga jednak zewnętrznego wpływu. Jak to działa? Ustawiasz system i funkcjonuje on zgodnie z Twoimi wytycznymi, natomiast wszystkie procesy zachodzą automatycznie w tle. Aby lepiej zrozumieć zjawisko – prezentujemy przykład Paypal. Cały serwis polega na Webhookach, które informują Twoją aplikację księgową o pojawieniu się nowych płatności. Nie musisz więc samodzielnie poszukiwać nowych transakcji, ponieważ wiesz o nich od razu.

Po co używać Webhooków w Magento 2, skoro platforma oferuje swój natywny interfejs API, będący wystarczająco elastyczny, aby umożliwić każdą synchronizację? Sprawa nie jest aż tak prosta. Mimo że platforma Magento zawiera API, nadal trzeba się mocno namęczyć, aby dostosować ją do indywidualnych wymagań. Im bardziej są one złożone i nietypowe, tym więcej czasu i pieniędzy musisz na nie poświęcić. Dzięki Webhookom w niektórych przypadkach w radykalny sposób możesz zmniejszyć ponoszone koszty w porównaniu do tego, gdy korzystałbyś jedynie z interfejsu API.

Różnice pomiędzy Webhook a API

Magento 2 API to z pewnością numer jeden, jeśli chodzi o integrację. Jest bardzo skutecznym wsparciem każdego sprzedawcy. Mankamentem wykorzystania API jest konieczność ciągłego dopytywania o dane. W pierwszej kolejności należy więc wysłać prośby o uzyskanie niezbędnych danych, zanim te ulegną dezaktualizacji. Niestety takie działanie jest czasochłonne i może być dość uciążliwe, ponieważ komunikacja zabiera więcej zasobów, niż powinna. Im częstsze są Twoje zapytania, tym system staje się bardziej przeciążony. Jeśli więc jakaś operacja wymaga częstych aktualizacji, ta metoda może się nie sprawdzić. Wówczas na ratunek przychodzą Ci Webhooki. Ich zasada działania jest przeciwieństwem interfejsu API. Nie musisz samodzielnie zadawać pytań, Webhooki same poinformują Cię o istotnych danych.

Jak działają Webhooki?

Najważniejszą kwestią jest to, że aplikacja lub witryna innej firmy jest dostawcą Webhooka. Oznacza to, że zaraz po wystąpieniu określonej akcji, wysyła sygnał do Twojej strony – Magento 2. Ta z kolei zawiera tzw. „słuchacza”, czyli adres URL przeznaczony do wykonywania dwóch czynności. Po pierwsze – otrzymuje odpowiedź od Webhooków. Po drugie – wkrótce po tym wykonuje predefiniowaną czynność.

W ramach doprecyzowania – Webhooki to zdefiniowane przez użytkownika wywołania zwrotne HTTP. Są one małymi fragmentami kodu, powiązanymi z aplikacją internetową. Uruchamia się je przez określone zdarzenia. Tak wygląda kluczowy algorytm tej technologii:

  1. Zdarzenie wyzwalające pojawia się w źródłowej witrynie lub połączonej aplikacji.
  2. Element Webhook wykrywa dane zdarzenie.
  3. Następuje zbieranie odpowiednich danych.
  4. Element Webhook wysyła zebrane informacje pod określony adres URL – „słuchacza”.

Technologia ta jest tak elastyczna, że możesz skonfigurować zdarzenie w jednej witrynie, aby uruchomić wybraną akcję na innej stronie.

A zaznaczając różnicę pomiędzy interfejsem API a Webhookami, warto podkreślić, że ten pierwszy opiera się na mechanizmach wyjściowych opartych na żądaniach, z kolei elementy webhookowe zawierają zasady wyjściowe oparte na zdarzeniach.

Podsumowując – Webhooki to natychmiastowe powiadomienia o określonych wydarzeniach, spełniających podane kryteria. Wstępnie żądane dane przenoszone są do innych aplikacji w czasie rzeczywistym, w przeciwieństwie do typowego interfejsu API, w którym konieczne jest częste, samodzielne żądanie danych. W efekcie dzięki Webhookom zyskuje się większą wydajność!

Przykłady użycia Webhooków poza Magento 2

Z Webhookami zapewne spotykasz się częściej, niż myślisz podczas codziennego korzystania z dobrodziejstw internetu. Jeśli używasz np. MailChimp do automatyzacji e-mail marketingu, kojarzysz procesy takie jak subskrypcja, anulowanie subskrypcji, aktualizacje profilu itp. We wszystkich tych działaniach biorą udział właśnie Webhooki. Jeśli prowadzisz cotygodniowy newsletter, system powiadamia Cię, gdy subskrybent zmieni swój identyfikator e-mail. Dzięki temu możesz zaktualizować odpowiedni rekord w swoim systemie CRM lub w innym miejscu, nie tracąc na to zbędnego czasu.

Kolejnym przykładem jest Shopify. Tam zestaw Webhooków informuje Cię o aktualizacji danych produktu, koszyka, kasy, zamówienia i zwrotu. Platforma robi wszystko, aby uniknąć sytuacji, w których zamówienie zostanie pominięte lub inne realne zmiany pozostają niezauważone. Takie działanie zapewnia naprawdę sprawną obsługę klienta.

Magento 2 – warunki wstępne korzystania z Webhooków

Jak doszło do tego, że Webhooki stały się częścią Magento 2? Przyjrzyjmy się temu bliżej!

Magento 2 REST API

Warto zaznaczyć, że Magento udostępnia różne punkty końcowe (tzw. endpointy) REST. Wybór konkretnego zależy od rodzaju żądania użytkownika. Jednak uzyskanie informacji jest możliwe dopiero po wysłaniu danego zapytania. Ze względów bezpieczeństwa do uzyskania dostępu do punktów endpointów API REST klienta i administratora wymagany jest specjalny token. Sprawia to, że wymiana danych jest dosyć skomplikowana.

Punkty końcowe REST są podzielone na grupy według typu użytkownika:

  1. Punkty końcowe interfejsu API REST administratora.
  2. Punkty końcowe interfejsu API REST klienta.
  3. Punkty końcowe interfejsu API REST gościa.

Ważną cechą interfejsu API REST jest również to, że umożliwia on asynchroniczne uruchamianie punktów końcowych POST, PUT, PATCH i DELETE. Cały proces odbywa się, gdy kolejka komunikatów async.operations.all jest aktywna. Celem tego typu endpointa sieci Web jest informowanie użytkownika o trasach asynchronicznych, ładunkach i odpowiedziach. Te informacje nie przekładają się bezpośrednio na funkcjonowanie Webhooków Magento 2, jednak są w tej chwili niezbędne, aby przedstawić całość funkcjonowania tego narzędzia.

Magento 2 GraphQL

Po co Magento 2 zawiera  GraphQL? Odpowiedź jest prosta – aby spełnić różne potrzeby użytkowników. Używa on języka zapytań danych jako alternatywy dla internetowych API REST i SOAP ze względu na lepszy rozwój frontendu.

Już od wersji Magento 2.3.4 możesz wykorzystać następujące funkcje GraphQL:

  1. Obsługiwać wszystkie typy produktów, a także metody płatności i wysyłki.
  2. Korzystać z czasu mniejszego niż 0,5 sekundy odpowiedzi dla 500 jednoczesnych żądań.
  3. Używać nawigacji warstwowej korzystającej z GraphQL.

W kolejnych wersjach Magento plany obejmują pełne pokrycie GraphQL dla B2C. Na przykład, jeśli zespół programistów wykonuje działania, aby usprawnić ponowne składanie zamówień, odbiory w sklepie związane z zarządzaniem zapasami, historię zamówień dla zalogowanych klientów, pakowanie prezentów, metody płatności itp., powinien uwzględnić pokrycie dla scenariuszy B2B.

Event i observer

Event i observer stanowią jeden z głównych sposobów rozszerzenia domyślnej funkcjonalności Magento 2, włączając wzorzec publikuj-subskrybuj. Ten ostatni uruchamia niestandardowy kod w odpowiedzi na natywne działanie Magento lub zdarzenia niestandardowe.

W Magento 2 moduły mogą wysyłać zdarzenia po określonych działaniach (eventach). System oferuje elastyczne wysyłanie zamówień, ponieważ dozwolone są zarówno warunki domyślne, jak i niestandardowe. Kiedy któryś z nich zostanie dostarczony, dane są przekazywane obserwatorom w celu ich śledzenia. Z kolei obserwatorzy reprezentują określony typ klasy Magento, która może wpływać na ogólne zachowanie całej witryny e-commerce, zmieniając jej wydajność lub logikę biznesową. Śledzą wydarzenia, których mają pilnować. Kiedy takie zdarzenia są wysyłane, pojawiają się właściwi obserwatory. Algorytm wydarzeń i obserwatorów nieco przypomina Webhooki, jednak to nie jest ten sam mechanizm.

Projektowanie API na stronę internetową

Webhooki w Magento 2

Z badań i obserwacji wynika, że koncepcja zdarzeń Magento oferuje już logiczne miejsce dla implementacji Webhooków. Pojawiają się jednak problemy, które temu zapobiegają – jakie?

Dobrze byłoby, aby wywołania Webhooków było wykonywane asynchronicznie. Pomogłoby to  uniknąć spowolnienia przetwarzania głównego wątku. Ponieważ nikt nie chce, aby kod PHP był blokowany z powodu wolnego zewnętrznego adresu URL, może to być główny powód do niepokoju związany z Webhookami Magento 2.

Poza powyższym problemem pojawia się to, że wydarzenia często przechodzą zajęcia. Co to oznacza? Wyobraź sobie sytuację, w której musisz wysłać dane do zdalnego punktu końcowego. Aby osiągnąć ten cel, trzeba serializować odpowiednie dane z klasy. Konsekwencją serializacji jest więc struktura danych, taka jak JSON lub XML, które są przesyłane POST do skonfigurowanego adresu URL. Niestety, procedura nie może być zakończona bez serializacji kodu.

Dlatego właśnie pierwszym pomysłem stojącym za Webhookami Magento 2 było zaimplementowanie przykładowego modułu, który uruchamia Webhook poprzez zarejestrowanie obserwatora. Ten ostatni wysyła następnie żądanie HTTP do zdalnego punktu końcowego. Następnie tworzy się plik Observer.php w module Magento_CacheInvalidate. To właśnie prosta implementacja dla obserwatora, która zawiera plik events.xml oraz odniesienie do curl. Jeśli chodzi o moduł Magento_CacheInvalidate, jego zadaniem jest przeprowadzenie przez obserwatora implementacji Webhooka i powiadomienie zewnętrznego adresu URL, kiedy należy opróżnić jego pamięć podręczną.

Jak wygląda algorytm takiego projektu?

  1. Plik events.xml w katalogu etc wiąże różne zdarzenia z funkcjami w klasie Observer.
  2. Konstruktor Observer zawiera odniesienie do Magento, Framework, HTTP, Adapter, Curl. Istnieje framework do wstawiania zależności, który zapewnia obserwatorowi tę instancję, której jedynym celem jest komunikacja z biblioteką PHP curl. Ta ostatnia jest biblioteką klienta HTTP wbudowaną w PHP.
  3. invalidateVarnish () powoduje, że przykładowy kod, który wyodrębnia informacje ze zdarzenia, tworzy dane wysyłane do Varnish. Natomiast sendPurgeRequest () jest wywoływana w celu umieszczenia ciągu znaków w polu nagłówka HTTP. Nie ma problemu z dostosowaniem go do generowania ładunku JSON lub XML.
  4. Funkcja flushAllCache () przedstawia przykład wysyłania wywołania elementu Webhook. Żadne dane nie są pobierane z eventu.

Należy podkreślić, że brana jest tutaj pod uwagę niestandardowa logika. Dla przykładu – ustawienia konfiguracji służą do sprawdzenia, czy włączona jest opcja Varnish. Ta czynność nie jest wymagana w przypadku zwykłego elementu Webhook. Funkcja invalidateVarnish () wyszukuje poprawny ciąg nagłówka Varnish. Aby zaimplementować elementy Webhook w Magento 2, bierzemy tutaj funkcję flushAllCache () i usuwamy niepotrzebne struktury danych. Ta metoda ilustruje złożoność wymaganego kodu, jednak nie powinno się jej stosować.

W efekcie kod niezbędny do zaimplementowania Webhooka w Magento 2 jest stosunkowo krótki. Nie ma potrzeby dodawania fragmentu kodu, aby wyodrębnić dane ze zdarzenia, zakładając, że chce się wysłać te dane do endpointa. Jednocześnie jest to całkiem łatwe w języku PHP, ponieważ domyślnie obsługuje on JSON i XML.

Rozszerzenia Magento 2 Webhooks

Nie jesteś biegły w kodowaniu, ale chcesz zautomatyzować część procesów, używając Webhooków Magento 2? Na szczęście twórcy pomyśleli o przyjaznej dla użytkownika alternatywie. Są to rozszerzenia, które wykorzystują zasady wyjścia opartego na zdarzeniach. Sprawdź poniżej, co do nich należy!

Magento 2 Webhooks firmy Wizkunde

To moduł, który zapewni Twojej witrynie e-commerce połączenie z ERP, z usługą realizacji lub z innym systemem posiadającym interfejs REST za 199 EUR. Podobnie jak w przypadku innych gotowych modułów nie ma potrzeby pisania żadnego kodu. Korzystając z tej wtyczki Webhooks Magento 2, możesz połączyć Magento 2 z interfejsem API zgodnym z REST o dowolnej złożoności, otrzymując dane klientów, katalogów i sprzedaży w czasie rzeczywistym.

Kluczową zaletą tego rozszerzenia jest to, że nie przeciąży ono Twojej witryny Magento 2. Ponieważ, jak już wspomnieliśmy, elementy Webhook Magento 2 wysyłają dane tylko wtedy, gdy są spełnione określone warunki. W konsekwencji zasoby systemowe są wykorzystywane najbardziej efektywnie jak to możliwe. Jeśli chodzi o strony internetowe o dużym natężeniu ruchu, wszystkie dane są przesyłane w sposób w pełni kontrolowany. Nic więc nie dzieje się bez Twojej wiedzy.

Co więcej, rozszerzenie Magento 2 Webhooks przesyła nie tylko dane w czasie rzeczywistym, ale także wszystkie aktualne informacje wymagane do integracji. Historyczne dane sklepu są przenoszone do punktu końcowego REST API przy użyciu trybu Burst Queue.

Rozszerzenie jest bezpieczne pod kątem poufnych informacji. Wystarczy polegać na HTTPS jako punkcie końcowym. W związku z tym samo połączenie jest szyfrowane przez SSL. Nagłówki HMAC stanowią kolejny środek bezpieczeństwa. Rozszerzenie Magento 2 Webhooks pozwala na użycie go do weryfikacji integralności danych po stronie REST API podczas automatyzacji wielu procesów backendowych. Aby to zrobić, musisz więc użyć szyfrowanego klucza ustawionego w zapleczu Magento 2, weryfikując podpis w stosunku do przesłanych danych. To dodatkowe zabezpieczenie, które wzmacnia bezpieczeństwo przechowywanych danych.

Warto również wspomnieć, że rozszerzenie Magento 2 Webhooks jest naprawdę łatwe w użyciu. Po zainstalowaniu modułu należy przeprowadzić przyjazną dla użytkownika konfigurację. Elastyczne warunki pozwalają wysyłać elementy Webhook do wymaganych punktów końcowych, określając jedynie właściwy adres URL. Każdy sklep internetowy Magento 2 można ustawić na osobny identyfikator, aby rozróżnić sposób wysyłania Webhooków i nie mieć wątpliwości, który, do jakiej witryny się odnosi. Ponadto możesz określić, które elementy Webhook mają być używane. Włączyć lub wyłączyć przepływy danych, których wymaga przeprowadzana integracja.

Korzystając z tego modułu, wysyłasz dane Webhooka z kolejki, zmniejszając obciążenie strony. Aby jeszcze bardziej zwiększyć produktywność, możesz określić maksymalną liczbę elementów do przesunięcia w ramach całego cyklu. Czyż to nie wspaniałe rozwiązanie?

Webhook dla Magento 2 firmy Mageplaza

Firma Megaplaza posiada swój własny punkt widzenia na rozszerzenia Webhook Magento 2. W przeciwieństwie do wyżej wymienionych narzędzi to jest bezpłatne. Jak funkcjonuje?

Wtyczka pomaga w ustalaniu żądań API do konfigurowalnych miejsc docelowych, takich jak narzędzia CRM lub do e-mail marketingu po określonych zdarzeniach, takich jak np. porzucenie koszyka. Moduł rejestruje żądania i odpowiedzi oraz wysyła alerty o powstałych w żądaniach błędach.

Będąc administratorem sklepu, możesz tworzyć hooki na podstawie następujących zdarzeń:

  • tworzenia nowych zamówień, faktury, przesyłki lub noty kredytowej,
  • otrzymania komentarza do nowego zamówienia,
  • aktualizowania, udostępniania lub usuwania danych klientów,
  • aktualizowania lub usuwania danych o produktach,
  • aktualizowania lub usuwania danych kategorii,
  • loginów klientów do konta zakupowego,
  • porzuconych koszyków zakupowych.

Przykładowo, jeśli użytkownik porzuci koszyk zakupowy w Twoim sklepie e-commerce, rozszerzenie Webhooks Magento 2 wysyła żądanie API. Następnie moduł wysyła powiadomienie do odpowiedniego działu w celu dalszego rozpatrzenia sprawy i ewentualnego naprawienia problemu.

Co więcej, za pomocą wtyczki możesz przekazywać dane do systemów CRM lub programu do e-mail marketingu. Jest ona w stanie automatycznie przesyłać nowe dane do takich usług zewnętrznych, bez konieczności udziału pracowników. W ten sposób moduł Mageplaza Webhooks umożliwia ustanowienie przepływu informacji między Magento 2 a dowolnym podłączonym systemem, aktualizując istotne dane w czasie rzeczywistym.

Zyskujesz też pełną kontrolę nad tym procesem, dzięki dziennikom przechwytywania (logom aplikacji). Możesz więc monitorować skuteczność całej automatyzacji. Każdy błąd jest starannie rejestrowany wraz z odpowiednim opisem, identyfikatorem, podmiotem itp. Poza tym moduł zapewnia Tobie i Twoim  administratorom otrzymywanie powiadomienia e-mail o błędach żądań API. Jeśli jednak chcesz wykasować powstałe błędy, możesz ustawić maksymalną liczbę rekordów i włączyć funkcję automatycznego czyszczenia. Możliwe jest również ponowne wysłanie nowego żądania po naprawieniu błędu.

Korzystanie z Webhooków w Magento 2 wydaje Ci się problematyczne? Nie musisz zajmować się tym samodzielnie! Oferujemy pełne wsparcie programistyczne przy obsłudze platformy Magento. Na pewno wybierzemy dla Ciebie najlepsze rozwiązanie i dostosujemy je do Twoich wymagań.

Cyfrowe newsy / Bądź na bieżąco

Od początku 2022 roku wchodzimy w skład Unity Group. Teraz zapisując się do naszego newslettera, będziesz na bieżąco z informacjami całej naszej organizacji.

    Wypełniając formularz wyrażasz zgodę na wysyłkę newslettera przez Unity S.A. z siedzibą we Wrocławiu. Zgodę możesz wycofać w każdej chwili. Więcej informacji na ten temat znajdziesz w naszej polityce prywatności.

    *Wymagane

    Andrzej-kurs-programowania

    Andrzej Szylar

    Chief Executive Officer

    E-mail:

    a.szylar@global4net.com
    Magda2

    Magdalena Paczyńska-Kamienik

    HR Manager

    Aleksandra

    Aleksandra Bielawska-Clegg

    HR Business Partner

    E-mail:

    Michal

    Michał Duława

    New Business Developer

    E-mail:

    Katarzyna

    Katarzyna Zajchowska

    Marketing Partner

    E-mail: