Nexto.API
Transkrypt
Nexto.API
e-Kiosk S.A. ul. Prosta 51, 00-838 Warszawa KRS: 0000304553, NIP: 895-182-75-13 Nexto.API Przykładowy klient PHP5/WSO2 do systemu NextoAPI Przygotował Rafał Ozga © 2004-2015 e-Kiosk S.A. Maj 2015, Maj 2015, Wersja: 1.5 strona 1 e-Kiosk S.A. ul. Prosta 51, 00-838 Warszawa KRS: 0000304553, NIP: 895-182-75-13 Historia zmian Lp. Data Zmiany 1 28/05/15 Zmiana danych firmy Maj 2015, Wersja: 1.5 strona 2 e-Kiosk S.A. ul. Prosta 51, 00-838 Warszawa KRS: 0000304553, NIP: 895-182-75-13 1. Wstep Biblioteka SOAP Extension, na której oparta jest implementacja prostego klienta PHP do składania zamówień poprzez system API, nie obsługuje niestety wielu standardów związanych z Web-Servicami, m.in. tzw. MTOM(Message Transmission Optimization Mechanism), umożliwiającego efektywne przesyłanie plików binarnych dołączanych do SOAPowych wiadomości (a na tym standardzie bazuje WebService NextoAPI, udostępniający partnerom API pliki XMLowe). A zatem rozszerzenie naszego pierwszego klienta PHP o funkcję pobierania plików XMLowych okazało się niemożliwe. Zdecydowaliśmy się zatem na implementację nowego klienta PHP, opartego na bibliotece oferującej znacznie większy wachlarz możliwości niż SOAP Extension, a mianowicie WSO2 . Aby korzystać z naszego klienta PHP/WSO2 konieczna jest więc wcześniejsza instalacja samej biblioteki WSO2 łącznie z wymaganymi przez nią komponentami. 2. Implementacja W skład dystrybucji do pobrania z panelu administracyjnego NextoAPI wchodzą następujące komponenty: • • • • orderservice_client.php - klient do składania i powtórnego pobierania zamówień do NextoAPI xmlfiles_downloader.php - klient do pobierania plików XMLowych z NextoAPI NextoAPICert.pem - CA certyfikat NextoAPI potrzebny klientom do łączenia się z NextoAPI po SSL *.wsdl - pliki WSDLowe opisujące WebServicy oferowane przez NextoAPI (implementacja klientów jest oparta na wsdlach) 2.1. Ściąganie plików XMLowych Schemat działania modułu jest następujący: 1. Utwórz odpowiedni obiekt WSPolicy, ustawiając właściwy WSSecurityToken: $security_options = array("useUsernameToken" => TRUE ); $policy_obj = new WSPolicy(array("security" => $security_options)); $security_obj = new WSSecurityToken(array("user" => "some-api-id", "password" => "some-pass")); Tutaj bez niespodzianek: podobnie jak w pierwszy kliencie PHP podajemy po prostu odpowiednio opakowane api_id oraz hasło (jako że z mechanizmów WS-Policy wykorzystujemy tylko WSSecurityToken) Maj 2015, Wersja: 1.5 strona 3 e-Kiosk S.A. ul. Prosta 51, 00-838 Warszawa KRS: 0000304553, NIP: 895-182-75-13 2. Utwórz klienta do NextoAPI, opartego na XMLDataAccessService.wsdl $client = new WSClient(array ("wsdl" =>"XMLDataAccessService.wsdl", // specyfikujemy certyfikat serwera: "CACert"=>"NextoAPICert.pem", // specyfikujemy mapiing pomiędzy klasami php a strukturami xmlowymi "classmap" => $class_map, // ustawienia związane z obsługą WS-Security "useWSA" => TRUE, "policy" => $policy_obj, "securityToken" => $security_obj, // aktywujemy MTOM, zeby moc odbierac pliki binarne: "useMTOM" => "swa", // adres WebServicu, do którego się łączymy "to" => "https://www.nextoapi.pl/services/XMLDataAccessService", // używamy tzw. XML-binary Optimized Packaging (XOP) "responseXOP" => TRUE)); 3. Zbuduj żądanie pobrania pliku XMLowego od NextoAPI $xmlFileReqWrapper = new downloadNextoXMLFile(); $xmlFileReq = $xmlFileReqWrapper->xmlFileRequest = new xmlFileRequest(); $xmlFileReq->api_id="some-api-id"; $xmlFileReq->pass="some-pass"; // drugą mozliwą wartościa dla typu pliku xmlowego jest CATEGORIES_TREE $xmlFileReq->xmlType="PRODUCTS_LIST"; 4. Wywołaj operację pobrania pliku od NextoAPI i zapisz odebrany plik na dysku: $response = $proxy->downloadNextoXMLFile($xmlFileReqWrapper); file_put_contents(’products_list.gz’, $response->xmlFileResponse->xmlData); 2.2. Ściąganie plików XMLowych Schemat implementacji jest bardzo podobny do opisanej powyżej (z dokładnością do niektórych opcji jak useMTOM, która w tym przypadku jest wyłączona oraz oczywiście WebServicu do którego klient sie łączy oraz funkcji która na nim wykonuje) Maj 2015, Wersja: 1.5 strona 4