Wykorzystanie SOAP w Magento

Protokół SOAP umożliwia bardzo prostą, szybką i bezpieczną komunikację pomiędzy Magento, a zewnętrznymi systemami, takimi jak np. systemy ERP czy aplikacje mobilne.

Wykorzystując SOAP, język aplikacji zewnętrznej nie ma znaczenia. Możemy zarówno przesłać jak i odebrać informacje o produktach, klientach, zamówieniach i nie tylko. Przy odrobinie pracy możemy dodatkowo przygotować własne metody, które zwrócą nam potrzebne dane w odpowiednio sformatowany sposób.

Zanim zaczniemy

Magento wspiera SOAP w obu wersjach (wersja 1 i 2). Metody oraz adresy, do których się odwołujemy różnią się od siebie w zależności od wykorzystywanej wersji.

Adres dla SOAP v1

Adres dla SOAP v2

Przykładowa metoda dla SOAP v1

Ta sama metoda dla SOAP v2

W przykładach zostały użyte metody właściwe dla SOAP v1. Nic nie stoi jednak na przeszkodzie, aby używać SOAP v2.

Stworzenie użytkownika

Na samym początku należy stworzyć użytkownika oraz przypisać mu odpowiednie prawa. Można to zrobić w panelu administracyjnym Magento na stronie:

System Web Services SOAP/XML-RPC Users, a następnie klikając przycisk Add New User.

Tworząc nowego użytkownika, należy uzupełnić wszystkie pola. Należy pamiętać, że zawartość API Key oraz API Key Confirmation pełni rolę hasła, używanego przy połączeniu z API.

W zakładce User Role można przypisać użytkownika do odpowiedniego zestawu uprawnień. Zestawy uprawnień można tworzyć i edytować w następujący sposób:

System Web Services SOAP/XML-RPC Roles

Czy wszystko działa?

Mając już stworzonego użytkownika, możemy napisać prosty skrypt w PHP, aby sprawdzić czy wszystko działa tak jak powinno:

Odpowiedź powinna wyglądać jak poniżej:

Jeśli otrzymaliśmy prawidłową odpowiedź, możemy być pewni, że API zostało skonfigurowane prawidłowo i jest gotowe do użytku.

Zastosowanie SOAP

Używanie SOAP do komunikacji z Magento jest niezwykle proste.

 Przykład 1.

Załóżmy, że potrzebujemy listę wszystkich produktów z danymi takimi jak ProductId, Name, Sku, Type. Aby pozyskać te dane, wystarczy wykorzystać metodę catalog_product.list.

$result zawiera wszystkie potrzebne nam informacje zapisane w postaci tablicy.

Przykład 2.

Załóżmy, że chcemy stworzyć nową kategorię i przypisać ją do istniejącej, której CategoryId = 10.

Gdzie znaleźć metody i przykłady zastosowania SOAP?

Wszystkie metody oraz proste przykłady ich wykorzystania, można znaleźć na stronie Magento. Strona cały czas się rozwija, dlatego warto ją co jakiś czas odwiedzić.

Rozszerzenie funkcjonalności

Może się okazać, że domyślne metody są niewystarczające. W takiej sytuacji nic nie stoi na przeszkodzie, aby rozbudować API magento i dodać własne metody, które wykonają podany przez nas kod.

Przede wszystkim, należy dodać nowy moduł. Na potrzeby tego artykułu użyłem modułu Creativestyle_Newapi.

W dodanym module tworzymy nowy model o nazwie Api.php

Jeśli chcemy korzystać z SOAP v2, potrzebujemy dodatkowego modelu V2.php

W katalogu etc/ modułu musimy dodać plik api.xml

Gdy mamy już stworzoną strukturę, możemy zająć się tworzeniem właściwych metod.

 Przykład 1.

Załóżmy, że chcemy zwiększyć liczbę produktu w magazynie. Nie znamy Sku, ProductId, natomiast mamy unikalny atrybut dla danego produktu. W tym przykładzie ten atrybut to ISBN.

Po przygotowaniu funkcji musimy ją też dodać w pliku api.xml

UWAGA! Jeśli wykorzystujemy SOAP v2, musimy stworzyć jeszcze jeden plik – wsdl.xml, który umieszczamy w katalogu etc/ modułu.

W przypadku dodania kolejnych funkcji, wystarczy jedynie dodać informacje o nich do istniejącego już pliku wsdl.xml.

Powodzenia!

pluswerk