piątek, 7 listopada 2014

Podstawy towrzenia klienta

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();

3 komentarze:

  1. Witam.
    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.

    OdpowiedzUsuń
    Odpowiedzi
    1. Witam
      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.

      Usuń
  2. Świetna sprawa. Pozdrawiam serdecznie.

    OdpowiedzUsuń