39 | | Usługa jest zabezpieczona rozszerzeniem WSSecurity protokołu SOAP i wymaga |
40 | | podania w nagłówkach wywołania XML nazwy użytkownika i hasła. |
| 39 | |
| 40 | Dodatkowo od wersji systemu 3.3 autentykacja nie wymaga nadpisania klienta Soap. Wystarczy do url z adresem serwisu dodać parametry GET w postaci |
| 41 | {{{ |
| 42 | #!php |
| 43 | <?php |
| 44 | // a1 - login, |
| 45 | // a2 - hasło, |
| 46 | // a3 - symbol jednostki |
| 47 | /* |
| 48 | $ops = array( |
| 49 | 'location' => 'http://{host}:{port}eDokumentyApi.php?a1='.EDOK_API_LOGIN.'&a2='.md5(md5(EDOK_API_PASSWORD).'_SOAP_eDok_api').'&a3='.DEFAULT_ENTITY_SYMBOL.'', |
| 50 | "uri" => "eDokumentyAPI", |
| 51 | 'encoding'=>'UTF-8' |
| 52 | ); |
| 53 | ?> |
| 54 | }}} |
| 55 | |
| 56 | Przykład wywołania serwisu oraz funkcji dodającej kontrahenta: |
| 57 | |
| 58 | {{{ |
| 59 | #!php |
| 60 | |
| 61 | // Plik MyService.php umieszczony w apps/edokumenty. |
| 62 | // MyService.php |
| 63 | <?php |
| 64 | // stałe są w confing.inc i są to dane potrzebne do autentykacji usługi |
| 65 | require_once('./../../framework/lib/util/Translator/Translator.inc'); |
| 66 | require_once('./config.inc'); |
| 67 | |
| 68 | // klient SOAP systemu eDokumenty wysyłający nagłówki WSSecurity zmienić na |
| 69 | // odpowiednią ścieżkę w zależności od lokalizacji pliku MyService.php |
| 70 | require_once('./classes/eDokumentyApi/EDokApiClient.inc'); |
| 71 | |
| 72 | // wartość {host}:{port} zmienić na odpowiednią dla serwera |
| 73 | $ops = array( |
| 74 | 'location' => 'http://{host}:{port}eDokumentyApi.php', |
| 75 | "uri" => "eDokumentyAPI", |
| 76 | 'encoding'=>'UTF-8' |
| 77 | ); |
| 78 | |
| 79 | |
| 80 | // Dodatkowo od wersji 3.3 autentykacja nie wymaga nadpisania klienta Soap. Wystarczy do url z adresem serwisu dodać parametry GET w postaci |
| 81 | // a1 - login, |
| 82 | // a2 - hasło, |
| 83 | // a3 - symbol jednostki |
| 84 | /* |
| 85 | $ops = array( |
| 86 | 'location' => 'http://{host}:{port}eDokumentyApi.php?a1='.EDOK_API_LOGIN.'&a2='.md5(md5(EDOK_API_PASSWORD).'_SOAP_eDok_api').'&a3='.DEFAULT_ENTITY_SYMBOL.'', |
| 87 | "uri" => "eDokumentyAPI", |
| 88 | 'encoding'=>'UTF-8' |
| 89 | ); |
| 90 | |
| 91 | // bezpośrednie wywołanie klienta Soap |
| 92 | $client = new SoapClient(NULL, $ops); |
| 93 | */ |
| 94 | $client = new EDokApiClient(null, $ops); |
| 95 | $client->setUser(EDOK_API_LOGIN); // ten sam co w config.inc |
| 96 | $client->setPass(md5(EDOK_API_PASSWORD)); // to samo co w config.inc |
| 97 | |
| 98 | $header = new SoapHeader('eDokumentyAPI', 'entity_symbol', DEFAULT_ENTITY_SYMBOL); |
| 99 | $client->__setSoapHeaders($header); |
| 100 | |
| 101 | // Tworzy kontakt |
| 102 | $contid = NULL; |
| 103 | |
| 104 | try { |
| 105 | $data = array( |
| 106 | 'name_1' => 'SOAP TEST'.date('d H:m:s'), |
| 107 | 'name_2' => 'SOAPTEST', |
| 108 | 'nip___' => 1111111111, |
| 109 | 'street' => 'Główna', |
| 110 | 'symbol' => 'FGH99' |
| 111 | ); |
| 112 | $contid = $client->createContact($data); |
| 113 | var_dump($contid); |
| 114 | |
| 115 | } catch(SoapFault $fault) { |
| 116 | |
| 117 | var_dump($fault); |
| 118 | |
| 119 | if ($fault->faultcode < 100) { |
| 120 | trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); |
| 121 | } |
| 122 | } |
| 123 | |
| 124 | ?> |
| 125 | }}} |
| 126 | |
| 127 | '''WAŻNE Hasło powinno być zakodowane przy użyciu funkcji md5'''. |