Witam
Ostatnimi czasy
zmuszony zostałem do integracji systemu z Elektronicznym Nadawcą.
Podczas tej integracji pojawiało się bardzo dużo pytań, które do
dziś się powtarzają, od współpracowników i osób
zainteresowanych taką integracją. Bloga stworzyłem aby ułatwić
sobie życie i nie musieć odpowiadać na te same pytania a
jednocześnie będzie to miejsce dokumentujące funkcjonalność
tego systemu.
Pierwszego posta
chciałbym poświęcić najbardziej podstawowej kwestii, jak stworzyć
klienta w PHP, który byłby w stanie łączyć się z webserwisem
Elektronicznego Nadawcy.
Najłatwiej będzie
to opisać w kilku krokach:
1. Ściągamy
konwerter WSDL2PHP ze strony
Po rozpakowaniu w
katalogu bin widzimy plik wsdl2php.php to on nas najbardziej
interesuje.
2. Ze strony
Elektronicznego Nadawcy ściągamy plik WSDL, w zależności od
potrzeb możemy ściągnąć go z jednego z poniższych adresów
lub
Na stronie
en-testwebapi znaleźć można funkcjonalność, która w najbliższej
przyszłości będzie dostępna na wersji produkcyjnej
e-nadawca.poczta-polska.pl.
Zaś lasb.wsdl różni
się od en.wsdl rozszeżonymi funkcjonalnościami.
Ściągnięty plik
zapisujemy do katalogu, w którym znajduje się plik wsdl2php.php
3. Odpalamy z linii
komend
php.exe wsdl2php.php
labs.wsdl
4. W wyniku tej operacji otrzymamy ładną bibliotekę
(ElektronicznyNadawca.php), którą nasz przyszły klient będzie
mógł wykorzystać do komunikacji.
Niestety, aby życie nie było za proste, najpierw trzeba dokonać
małej poprawki w nowo utworzonej bibliotece. A mianowicie, w dwóch
klasach
oczekiwanaGodzinaDoreczeniaType
oraz
oczekiwanaGodzinaDoreczeniaUslugiType
musimy poprawić nazwy stałych, które są źle generowane przez
użyty konwerter. To jedyny z dwóch zauważonych problemów z tym
konwerterem, który całkiem dobrze się spisuje.
Zmieniamy wszystkie nazwy stałych postaci
const
DO_08:00
na
const
DO_08_00.
Dla
wytrwałych!
Drugi
problem z konwerterem, który nie uniemożliwia z nim pracy ale czyni
ją niezbyt wygodną przy
developerce
jest brak dziedziczenia. W
klasach utworzonych w pliku ElektronicznyNadawca.php można ustawić
takie
dziedziczenie opierając się na pliku WSDL.
include "ElektronicznyNadawca.php"; class client { protected $guid = null; protected $login = "login"; protected $location = "https://en-testwebapi.poczta-polska.pl/websrv/labs.php"; protected $password = "hasło"; // ------------------------------------------------------------------------- public function testGetKarty() { echo "========testGetKarty===================="; $E = new ElektronicznyNadawca("labs.wsdl", array("login" => $this->login, "password" => $this->password, "location" => $this->location )); $tmp = new getKarty(); $response = $E->getKarty($tmp); var_dump($response); if(!is_array($response->karta)) $response->karta = array( $response->karta ); return $response->karta; } } $c = new client(); $c->testGetKarty();
Witam.
OdpowiedzUsuńMam pytanie. Czy jest możliwość hurtowej zmiany z przesyłki ekonomicznej na priorytetową która jest już w buforze? Chodzi mi o zmianę wszystkich przesyłek które znajdują się w buforze.
Witam
UsuńNiestety nie ma możliwości bezpośredniej modyfikacji przesyłek z bufora,
Można co najwyżej pobrać wszystkie przesyłki z bufora (getEnvelopeBufor),
wyczyścić bufor (clearEnvelope),
utworzyć nowy bufor (createEnvelopeBufor),
następnie z pobranych przesyłek, zmodyfikować wybrane i dodać wszystkie przesyłki do nowo utworzonego bufora.
Świetna sprawa. Pozdrawiam serdecznie.
OdpowiedzUsuń