Jestem początkujący jeśli chodzi o programowanie obiektowe. Do tej pory programowałem tylko strukturalnie. Niestety mam za zadanie wykonać połączenie swojego systemu webowego z systemem wysyłkowym firmy kurierskiej DPD. Znalazłem w sieci rozwiązanie napisane obiektowo.
Struktura działania klasy narzucona przez DPD jest następująca:
1. rejestrowanie paczki w systemie DPD - mam funkcję print_r($dpd->registerNewPackage());
2. na podstawie danych odebranych z systemu DPD po wykonaniu punktu 1 należy wygenerować etykietę logistyczną podając w argumencie funkcji nr paczki - tzw. waybill
tutaj mam funkcję - var_dump($dpd->getLabelPDF(2, "waybill"));
3. na podstawie danych odebranych z systemu DPD po wykonaniu punktu 1 należy wygenerować protokół podając w argumencie funkcji nr referencyjny - funkcja: var_dump($dpd->getProtocol(array('REFERENCE_NUMBER')));
WAYBILL oraz REFERENCE_NUMBER zwracane są w tablicy w pierwszej funkcji registerNewPackage() jednak nie wiem jak się do nich odwołać aby użyć tych zmiennych w dwóch kolejnych funkcjach.
poniżej funkcja registerNewPackage():
public function registerNewPackage(){ /* * zapisuje paczke w DPD */ Throw new Exception("Parametry paczki muszą zostać uzupełnione poprawnie"); } $openUMLFV1 = $this->prepareRegisterString(); try { $params1->policyV1="STOP_ON_FIRST_ERROR"; $params1->openUMLXV1= $openUMLFV1; $params1->authDataV1 = $this->authData; $result = $this->soapClient->generatePackagesNumbersXV1($params1); $xml = simplexml_load_string($result->return); //sprawdzenie statusu switch($xml->Status) { case "DUPLICATED_PACKAGE_SEARCH_KEY": $error = "Identyfikator ".$this->packageDetails['reference_number'].", jest juz w systemie. Paczka nie może zostać ponownie zapisana pod tym samym identyfikatorem. Błąd: ".$xml->Packages->Package->InvalidFields->InvalidField->Info; "type" => "error", "message" => $error ); break; case "DISALLOWED_FID": $error = "Błąd konfiguracji, niepoprawny numer FID. Kod błędu: ".$xml->Status; "type" => "error", "message" => $error ); break; case "INCORRECT_DATA": //wyswietlenie bledu dla kazdej dostepnej parcel foreach($xml->Packages->Package->InvalidFields->InvalidField as $invalid_field) { if($invalid_field->Status == "VALUE_INCORRECT") { $error .= $invalid_field->Info.', w polu: '.$invalid_field->FieldName.'<br/>'; } } "type" => "error", "message" => $error ); break; case "OK": "type" => "ok", "package_id" => $xml->Packages->Package->PackageId, "reference" => $xml->Packages->Package->Reference, "parcels" => $xml->Packages->Package->Parcels, "first_waybill" => $xml->Packages->Package->Parcels->Parcel->Waybill) ); break; } } catch (Exception $e) { $error = $e->getMessage(); "type" => "error", "message" => $error ); }; return $return_array; }
Bardzo proszę o pomoc...
Pozdrawiam,
Bartek