Magento 2 Allegro Integration module. Supports Magento 2 >= v2.3
Our partners helps to develop this project.
If you like to help our project - please let us know at [email protected]
- Multi variants
- Multi sellers account handling
- Price policy & price automation
- Mass offers issuing
- Manual order handling - choosing correct simple product from configurable
- Mapping Allegro categories to Magento
- Mapping Allegro attributes to Magento
Magento 2 - Allegro Integration Module source code is completely free and released under the MIT License.
- Dodać konfiguracje kolejki w MySQL MQ lub RabbitMQ
- Przejść do konfiguracji wtyczki oraz wybrać odpowiedni typ konta (Sklepy->Konfiguracja->Allegro->Konfiguracja)
- Połączyć się z kontem Allegro
- Wyłączyć import zamówień
- Włączyć lub wyłączyć (według preferencji) synchronizacje stanów magazynowych oraz wysyłkę numerów przesyłek
- Powiązać metody dostawy oraz płatności
- Powiązać oferty z produktami na Allegro
- Włączyć import zamówień (według preferencji)
Import zamówień powinien zostać włączony, dopiero gdy wszystkie produkty są już powiązane z ofertami na Allegro - w przeciwnym wypadku zamówienie może zostać pominięte z powodu braku produktu, który odpowiadałby ofercie na Allegro.
Aby połączyć sklep Magento z aplikacją Allegro należy wykonać następujące kroki:
- Zalogować się na koncie Allegro i przejść na adres https://apps.developer.allegro.pl lub https://apps.developer.allegro.pl.allegrosandbox.pl dla konta sandboxowego, aby zarejestrować nową aplikację.
- Wprowadzić nazwę aplikacji i adres URI do przekierowania - powinien on być w formacie {backend_url}/index.php/admin/allegro/system/authenticate/ - np. 'http://example.com/index.php/admin/allegro/system/authenticate/'.
- Zalogować się w panelu admina w Magento i przejść do sekcji Sklepy -> Konfiguracja -> Allegro -> Konfiguracja
- Wprowadzić w konfiguracji Magento wartości Client ID i Client Secret wygenerowane dla aplikacji Allegro i zmienić typ konta, jeśli działamy na koncie sandboxowym, a następnie zapisać zmiany.
- Kliknąć przycisk "Połącz z kontem Allegro" aby otrzymać token z aplikacji Allegro. Jeśli połączenie zostanie nawiązane pomyślnie, token będzie zapamiętany w aplikacji Magento, co umożliwi dalszą integrację z kontem Allegro.
Przed włączeniem importu zamówień należy powiązać już istniejące oferty na Allegro z odpowiadającymi im produktami w sklepie Magento, aby to zrobić należy wykonać następujące kroki:
- Wejść w zakładkę "Moje oferty" na koncie Allegro
- Skopiować ID oferty znajdujące się pod jej nazwą
- Wejść na stronę edycji produktu w Magento, który odpowiada ofercie Allegro
- Wkleić skopiowane wcześniej ID oferty do pola Allegro→ Numer oferty Allegro i zapisać produkt
Jednym z wielu zadań wtyczki jest dopilnowanie, aby liczba danego produktu na sklepie Magento, powiązanego z odpowiednią ofertą w Allegro była stale taka sama zarówno na sklepie, jak i w Allegro. Zadanie to spełnia realizując poniższe czynności:
- Monitoruje każdorazowe wystąpienie zmiany w liczbie produktu (zakup lub ręczna zmiana w panelu admina Magento) i pobiera ID produktu, w którym doszło do zmian.
- Następnie przy pomocy RabbitMQ lub MySQL MQ przekazuje pobrane wcześniej ID produktu do kolejki, aby synchronizacja przebiegała stopniowo, przechodząc po kolei po każdej wystąpionej zmianie stanu magazynowego (dzięki temu stany magazynowe aktualizowane są na bieżąco zgodnie z kolejnością zmian i odciąża system, ponieważ zmiany nie są wykonywane jednocześnie).
- Gdy w kolejce zaczynają pojawiać się nowe ID produktów, Consumer - klasa odpowiadająca za modyfikowanie stanów magazynowych ofert na Allegro, odbiera pierwszy ID z kolejki, a następnie przy jego pomocy wyciąga informacje o aktualnym stanie magazynowym danego produktu i przesyła go do Allegro w celu aktualizacji.
Synchronizację stanów magazynowych można włączać lub wyłączać w konfiguracji wtyczki.
Po nawiązaniu połączenia sklepu z aplikacją Allegro możemy włączyć w konfiguracji import zamówień.
Po włączeniu tej opcji API Allegro będzie odpytywane co 5 minut o zdarzenia dotyczące zamówień. W ramach tego zapytania zamówienia będą importowane w sklepie Magento - dla nowych zamówień dodanych w Allegro będą tworzone zamówienia w sklepie Magento, a dla już istniejących będzie przeprowadzana ich aktualizacja.
W konfiguracji sklepu możemy również ustawić widok sklepu, do którego zamówienia z Allegro będą importowane.
W ramach importu zamówień z Allegro w sklepie Magento zapisywane są informacje o cenie i ilości zamówionego produktu, dane zamawiającego, dane o płatności i wysyłce oraz wiadomość do sprzedającego, która trafia do zakładki "Historia komentarzy" na stronie zamówienia.
Moduł obsługuje standardową logikę dla składania zamówień w Magento. Dostosowanie importowanych produktów można w projekcie przeprowadzić poprzez utworzenie obserwera dla eventu z nazwą "allegro_order_import_before_quote_save". Obserwer ten ma przekazane w parametrze wszystkie informacje udostępniane przez API Allegro dla zapytania o szczegóły zamówienia (https://developer.allegro.pl/en/orders/#04).
W konfiguracji wtyczki możemy definiować mapowanie metod płatności dla zamówień przychodzących z Allegro do sklepu Magento.
Dla mapowania metod dostawy mamy do dyspozycji dynamiczną listę, do której możemy dodawać kolejne pozycje, w których wybieramy w liście po lewej stronę jedną z metod dostawy dostępnych w Allegro, a w liście po prawej stronie nazwę metody dostawy dostępnej i aktywnej w konfiguracji sklepu Magento. Poniżej dynamicznej listy możemy wybrać domyślną metodę dostawy, która będzie przypisana do zamówienia w momencie, gdy z Allegro otrzymamy metodę, dla której nie zdefiniowaliśmy mapowania.
Dla mapowania metod płatności mamy do dyspozycji dwie listy rozwijane, w których możemy wybrać po jednej z dostępnych i aktywnych w konfiguracji sklepu Magento metod płatności - dla zamówień przychodzących z Allegro z płatnością online i dla zamówień z płatnością przy pobraniu.
Aby klient mógł śledzić przesyłkę z jego zamówieniem należy wprowadzić w Allegro jej numer oraz informacje o przewoźniku. Dzięki wtyczce można, to zrobić z poziomu Magento:
- Należy wejść na stronę zamówienia, które zostało wcześniej zaimportowane z Allegro i otworzyć zakładkę 'Dostawa'.
- Następnie kliknąć 'Dodaj numer przesyłki', wybrać nazwę przewoźnika i wprowadzić numer do śledzenia przesyłki.
- Można również wybrać, które produkty znajdują się w przesyłce poprzez ustawienie ilości produktu do wysłania:
- 0 - produkt nie znajduje się w przesyłce.
- liczba większa od 0 - produkt znajduje się w przesyłce w podanej ilości.
- Można dodać wiele numerów przesyłek w zależności od ilości produktów w zamówieniu.
Wysyłkę numerów przesyłek można włączać lub wyłączać w konfiguracji wtyczki.
W panelu Allegro można ustawić automatyczną zmianę statusów na "Wysłane" po wprowadzeniu listu przewozowego do danego zamówienia. Należy jednorazowo wprowadzić ręcznie numer przesyłki dla danego zamówienia lub edytować już istniejący i zaznaczyć checkbox "Automatycznie zmieniaj status wszystkich zamówień na WYSŁANE po dodaniu numeru przesyłki". Aby to zrobić należy:
- W panelu Magento, wygenerować etykietę wysyłkową dla zamowienia zaimportowanego z Allegro
- Skopiować wygenerowany numer przesyłki
- Zalogować się do platformy Allegro i wybrać zamówienie, do którego chcemy wprowadzić numer przesyłki lub zmienić już istniejący
- Na liście zamówień na Allegro, przy zamówieniu do którego chcemy wprowadzić numer przesyłki, klikamy w listę rozwijaną AKCJE → wybieramy opcję NUMERY PRZESYŁEK
- Otworzy nam się osobne okno z opcja do wybrania przewoźnika oraz do wprowadzenia numeru przesyłki.
- W otwartym oknie należy zaznaczyć checkbox "Automatycznie zmieniaj status wszystkich zamówień na WYSŁANE po dodaniu numeru przesyłki" i kliknąć "ZAPISZ"
Po tym ustawieniu wszystkie zamówienia, które są na Allegro, które otrzymają z Magento numer listu przewozowego, mają status "Wysłane".
Za pomocą wtyczki możemy wystawiać produkty z Magento na Allegro. Aby to zrobić należy:
- Na koncie Allegro utworzyć cennik dostaw
- Dodać informacje o zwrotach, reklamacji oraz gwarancji na Allegro (wymagane tylko dla konta firmowego)
- Uzupełnić informacje o loklizacji (Sklepy->Konfiguracja->Allegro->Konfiguracja->Pochodzenie) Po wprowadzeniu wymaganych danych można zacząć wystawiać oferty z poziomu Magento. Należy wybrać produkt, który chcemy wstawić, wejść na jego stronę i kliknąć przycisk "Dodaj na Allegro".
Zostaniemy przekierowani na stronę formularza wystawiania aukcji, na którym znajdują się pola:
- Nazwa oferty - pobierana z produktu
- Opis oferty - pobierany z produktu
- Cena - pobierana z produktu
- Ilość - pobierana z produktu
- Cennik dostaw, warunki reklamacji, warunki zwrotów, warunki gwarancji - pobierane z podłączonego konta Allegro
- Czas wysyłki, opcje faktury - uniwersalne parametry Allegro
- Wybór kategorii
- Parametry zależne od wybranej kategorii
Wszystkie pola w formularzu mają walidację, niektóre parametry mogą być wymagane do wystawienia aukcji. Oferta wystawiana jest ze zdjęciami pobranymi z produktu.
Po uzupełnieniu wszystkich pół i kliknięciu "Zapisz" - zostanie wystawiony szkic oferty na Allegro i zostaniemy przekierowani na stronę edycji oferty. Teraz wystarczy kliknąć "Opublikuj", aby oferta stała się aktywna. W każdej chwili możemy edytować ofertę, zakończyć ją, a potem następnie aktywować. Produkt jest już teraz powiązany z ofertą na Allegro.
dodać kolejkę w tabeli queue
w bazie danych
INSERT INTO queue (name) VALUES ('allegro.api');
konfiguracja w pliku config.php
<?php
return [
'modules' => [
// ...
'Magento_Amqp' => 0, // important disable rabbitmq
'Magento_MysqlMq' => 1,
// ...
]
konfiguracja kolejki w pliku env.php
'queue' => [
'topics' => [
'allegro.change.stock.db' => [
'schema' => [
'schema_value' => 'Macopedia\Allegro\Api\Consumer\MessageInterface'
],
'response_schema' => [
'schema_value' => 'Macopedia\Allegro\Api\Consumer\MessageInterface'
],
'publisher' => 'allegro.change.stock.db',
],
],
'publishers' => [
'allegro.change.stock.db' => [
'name' => 'allegro.change.stock.db',
]
],
'consumers' => [
'allegro.change.stock.db' => [
'queue' => 'allegro.api', // `name` from db table `queue`
'name' => 'allegro.change.stock.db',
'handlers' => [
[
'type' => 'Macopedia\Allegro\Model\Consumer',
'method' => 'processMessage'
]
],
'consumerInstance' => 'Magento\Framework\MessageQueue\Consumer',
'instance_type' => 'Magento\Framework\MessageQueue\Consumer',
'connection' => 'db',
'maxMessages' => 2000,
'max_messages' => 2000
]
],
'exchange_topic_to_queues_map' => [
'allegro.change.stock.db--allegro.change.stock.db' => [
'allegro.api' // `name` from db table `queue`
]
]
],
konfiguracja consumera w pliku env.php
'cron_consumers_runner' => [
'cron_run' => true,
'max_messages' => 20000,
'consumers' => [
'AllegroApiQueueDb'
]
]
konfiguracja w pliku config.php
<?php
return [
'modules' => [
// ...
'Magento_Amqp' => 1, // important enable rabbitmq
// ...
]
konfiguracja kolejki w pliku env.php
'queue' => [
'amqp' => [
'host' => 'amqp',
'port' => '5672',
'user' => 'guest',
'password' => 'guest',
],
],
konfiguracja consumera w pliku env.php
'cron_consumers_runner' => [
'cron_run' => true,
'max_messages' => 20000,
'consumers' => [
'AllegroApiQueue'
]
]