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

Podobne dokumenty