Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

4 Stron V   1 2 3 > »   
Reply to this topicStart new topic
> [PHP/SOAP] eWUS - info o pacjencie
kufalo
post 2.01.2013, 13:48:58
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 2
Dołączył: 24.08.2005

Ostrzeżenie: (0%)
-----


Witam,

Probuje przy wykorzystaniu:
Cytat
Definicję testowej usługi autoryzacji można znaleźć pod adresem:
https://ewus.nfz.gov.pl/ws-broker-server-ew...vices/Auth?wsdl

Definicję testowej usługi ServiceBroker można znaleźć pod adresem:
https://ewus.nfz.gov.pl/ws-broker-server-ew...viceBroker?wsdl


pobrac info o pacjencie.

Analizujac xml'e:
Kod
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:auth="http://xml.kamsoft.pl/ws/kaas/login_types">
   <soapenv:Header/>
   <soapenv:Body>
             <auth:login>
                <auth:credentials>
                    <auth:item>
                        <auth:name>domain</auth:name>
                        <auth:value><auth:stringValue>01</auth:stringValue></auth:value>
                    </auth:item>
                    <auth:item>
                        <auth:name>type</auth:name>
                        <auth:value><auth:stringValue>SWD</auth:stringValue></auth:value>
                    </auth:item>
                    <auth:item>
                        <auth:name>idntSwd</auth:name>
                        <auth:value><auth:stringValue>123456789</auth:stringValue></auth:value>
                    </auth:item>
                    <auth:item>
                        <auth:name>login</auth:name>
                        <auth:value><auth:stringValue>TEST</auth:stringValue></auth:value>
                    </auth:item>
                </auth:credentials>
                        <auth:password>qwerty!@#</auth:password>
            </auth:login>
   </soapenv:Body>
</soapenv:Envelope>


Kod
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header>
      <ns1:session id="6F3FE3EA6BE54C5630F4F08E6FD0B803" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/>
      <ns1:authToken id="BSbgyPBVy9Ww0B6al0DFuf" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/>
   </soapenv:Header>
   <soapenv:Body>
      <ns1:loginReturn xmlns:ns1="http://xml.kamsoft.pl/ws/kaas/login_types">3</ns1:loginReturn>
   </soapenv:Body>
</soapenv:Envelope>


udalo mi sie zalogowac za pomoca stworzonego skrypyu:

Kod
<?
$client=new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/Auth?wsdl');

$responce=$client->login(['credentials'=>[['name'=>'domain','value'=>['stringValue'=>'01']],['name'=>'type','value'=>['stringValue'=>'SWD']],['name'=>'idntSwd','value'=>['stringValue'=>'123456789']],['name'=>'login','value'=>['stringValue'=>'TEST']]],'password'=>'qwerty!@#']);

print($responce);
?>


Pytanie co dalej .......jak odebrac stringi session i authToken w naglowka odpowiedzi?
Sa one potrzebne w kolejnym zapytaniu zwracajacym dane pacjenta.
Go to the top of the page
+Quote Post
eMCeH
post 3.01.2013, 15:23:19
Post #2





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


Nie zauważyłem, że założyłeś nowy wątek...

rozwiązanie tkwi chyba w samej definicji __soapCall;
zgodnie z opisem z php.net:
Kod
public mixed SoapClient::__soapCall ( string $function_name , array $arguments [, array $options [, mixed $input_headers [, array &$output_headers ]]] )

output_headers    - If supplied, this array will be filled with the headers from the SOAP response

tylko jak to zapisać?
gdy dla kodu:
  1. $parametry = ['credentials'=>
  2. [
  3. ['name'=>'domain','value'=>['stringValue'=>'15']],
  4. ['name'=>'login','value'=>['stringValue'=>$user]]
  5. ],
  6. 'password'=>$pass];

działa:
  1. $sesja = $client->login($parametry);

nie działa:
  1. $sesja = $client->__soapCall('login',$parametry);

zgłaszając błąd:
Kod
Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'credentials' property in...


no i rozwiązanie:

  1. $user = 'TEST1';
  2. $pass = 'qwerty!@#';
  3. $parametry = ['credentials'=>
  4. [
  5. ['name'=>'domain','value'=>['stringValue'=>'15']],
  6. ['name'=>'login','value'=>['stringValue'=>$user]]
  7. ],
  8. 'password'=>$pass];
  9.  
  10. echo 'parametry :';var_dump($parametry);
  11. echo '<br />';
  12. $sesja = $client->login($parametry);
  13. echo 'sesja:';var_dump($sesja);echo '<br />';
  14. echo '<br />';
  15.  
  16. $sesja = $client->__soapCall('login',array($parametry), null, null, $header);
  17. echo 'sesja2:';var_dump($sesja);echo '<br />';
  18. echo '<br />';
  19. var_dump($header);
  20. echo '<br />';


dalej juz dasz radę?

ja nie daję... jak wyciągnąć te dwie wartości? var_dump:
Kod
HEADER: array(2) { ["session"]=> object(stdClass)#2 (1) { ["id"]=> string(32) "96208C312BB6A5D38C11D7293B4D4F9B" } ["authToken"]=> object(stdClass)#3 (1) { ["id"]=> string(22) "BSoFd_Jmu9iR6wtvx14Dvf" } }


Ten post edytował eMCeH 3.01.2013, 18:20:42
Go to the top of the page
+Quote Post
marekpulawy
post 5.01.2013, 15:55:07
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


A rozgryzł już ktoś jak po zalogowaniu sprawdzić ubezpieczenie pacjenta?
Logowanie już opanowane:
  1. <?php
  2. function objectToArray($d) {
  3. if (is_object($d)) {
  4. $d = get_object_vars($d);
  5. }
  6. if (is_array($d)) {
  7. return array_map(__FUNCTION__, $d);
  8. }
  9. else {
  10. return $d;
  11. }
  12. }
  13.  
  14. $client=new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/Auth?wsdl');
  15. $user = 'TEST1';
  16. $pass = 'qwerty!@#';
  17. $parametry = ['credentials'=>
  18. [
  19. ['name'=>'domain','value'=>['stringValue'=>'15']],
  20. ['name'=>'login','value'=>['stringValue'=>$user]]
  21. ],
  22. 'password'=>$pass];
  23.  
  24. $sesja = $client->login($parametry);
  25. $sesja = $client->__soapCall('login',array($parametry), null, null, $header);
  26. echo 'sesja: '.$sesja.'';
  27. echo '<br />';
  28. $array = objectToArray($header);
  29. //var_dump($array);
  30. //echo '<br />';
  31. echo 'Session: '.$array['session']['id'].'';
  32. echo '<br />';
  33. echo 'Token: '.$array['authToken']['id'].'';
  34. ?>


Ten post edytował marekpulawy 5.01.2013, 18:35:49
Go to the top of the page
+Quote Post
eMCeH
post 5.01.2013, 18:50:39
Post #4





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


logowanie mamy ale jak się wylogować?

status_cwu sprawdzasz na innym adresie www
Go to the top of the page
+Quote Post
marekpulawy
post 5.01.2013, 19:06:31
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


Cytat(eMCeH @ 5.01.2013, 18:50:39 ) *
status_cwu sprawdzasz na innym adresie www

Na innym? A masz już może jakieś pomysły jak wywołać to sprawdzenie pacjenta?
Go to the top of the page
+Quote Post
eMCeH
post 5.01.2013, 19:11:18
Post #6





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


próbowałem:
  1. $wylogowanie = $client->__soapCall('logout',array($header), null, null, $header2);
  2. var_dump($wylogowanie);

ale wywala błędy

status_cwu sprawdzasz na innym adresie www:
Kod
     https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/ServiceBroker?wsdl


cały czas nad tym siedzę (z przerwami na sprawdzenia, rozliczenia itp... wink.gif

Ten post edytował eMCeH 5.01.2013, 19:11:56
Go to the top of the page
+Quote Post
szaitis
post 6.01.2013, 19:35:08
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 2.01.2008

Ostrzeżenie: (0%)
-----


cześć
Też próbuję zmierzyć się z tym problemem i mam niestety cały czas problem z logowaniem.

używam:
$client=new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/Auth?wsdl');
$user = 'TEST1';
$pass = 'qwerty!@#';
$parametry = ['credentials'=>[['name'=>'domain','value'=>['stringValue'=>'15']],['name'=>'login','value'=>['stringValue'=>$user]]],'password'=>$pass];

i wyrzuca mi błąd:
Parse error: syntax error, unexpected '[' in C:\AppServ\www\victoria2\ewus.php on line 28
czyli jest to błąd w linii $parametry

jak używałam wcześniejszych wywołań z forum to za każym razem mam błąd odnośnie tego nawiasu '['

czy używa ktoś php w wersji 5.2.6? może powinnam podnieść wersję?

będę wdzięczna za jakiekolwiek sugestie
Go to the top of the page
+Quote Post
marekpulawy
post 6.01.2013, 20:22:10
Post #8





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


Wg mnie to jest wina starej wersji PHP. U mnie na wersji 5.4.3 nie wyrzuca tego błędu.
Na drugim serwerze mam 5.2.17 i mam taki sam błąd jak u Ciebie.
Go to the top of the page
+Quote Post
eMCeH
post 6.01.2013, 20:47:07
Post #9





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


kod logowania, który skleił ostatecznie marekpulawy jest 100% działający


logout poddałem się...

próbuję dopisać do tamtego kodu
  1. $clientBroker = new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/ServiceBroker?wsdl');
  2. $functions = $clientBroker->__getFunctions();
  3. echo '<br />';
  4. echo 'DOSTĘPNE FUNKCJE:'; var_export($functions);
  5. echo '<br />';
  6.  
  7. $sesjaReturn = $clientBroker->__soapCall('executeService',array($parametry), $header, null, $header2);


Kod
DOSTĘPNE FUNKCJE:array ( 0 => 'ServiceResponse executeService(ServiceRequest $request)', )

ale wyrzuca błąd:
Kod
Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'location'


Ten post edytował eMCeH 6.01.2013, 21:09:22
Go to the top of the page
+Quote Post
marekpulawy
post 6.01.2013, 21:12:06
Post #10





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


a co masz tym razem w zmiennej $parametry?
bo w zmiennej $header masz session i authToken?

Ten post edytował marekpulawy 6.01.2013, 21:12:32
Go to the top of the page
+Quote Post
d_adamkiewicz
post 6.01.2013, 21:18:20
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.01.2013

Ostrzeżenie: (0%)
-----


Hym, wiem niewiele, ale wydaje mi się, że po zalogowaniu najpierw trzeba ustawić nagłówki z session id i authToken id

coś jak

$auth = ['session'=>['id'=>$array['session']['id']], 'authToken'=>['id'=>$array['authToken']['id']]];
$hd = new SoapHeader("http://xml.kamsoft.pl/ws/common", "com", $auth, false);
$return = $client->__setSoapHeaders($hd);

tylko, że to zwraca FALSE a nie TRUE - czyli coś jest nie tak
Go to the top of the page
+Quote Post
eMCeH
post 6.01.2013, 21:18:30
Post #12





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


te same parametry co w przypadku logowania
  1. $parametry = ['credentials'=>
  2. [
  3. ['name'=>'domain','value'=>['stringValue'=>$domain]],
  4. ['name'=>'login','value'=>['stringValue'=>$login]]
  5. ],
  6. 'password'=>$password];


błądzę po omacku
na jednych forach (np. C#) mówią, iż jest bład w pliku definicji wsdl
na innych iż błąd polega na tym, iż są dwie namespace...
Niestety w xml raczkuję - to jest głęboka woda dla mnie i próbuję się nie utopić...

nagłówek przecież wysyłam też przy wywołaniu
  1. __soapCall('executeService',array($parametry), $header, null, $header2)

- parametr $header

Ten post edytował eMCeH 6.01.2013, 21:24:25
Go to the top of the page
+Quote Post
d_adamkiewicz
post 6.01.2013, 21:32:03
Post #13





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.01.2013

Ostrzeżenie: (0%)
-----


Teraz zwraca TRUE, chyba;)


$hd = [
new SoapHeader("http://xml.kamsoft.pl/ws/common", "com", ['session'=>['id'=>$array['session']['id']]], true),
new SoapHeader("http://xml.kamsoft.pl/ws/common", "com", ['authToken'=>['id'=>$array['authToken']['id']]], true),
];

$return = $client->__setSoapHeaders($hd);

if ($return == TRUE) {
echo "<br>TRUE";
}

i to działa;)

$functions = $client->__getFunctions();
var_export($functions);
Go to the top of the page
+Quote Post
eMCeH
post 6.01.2013, 21:42:16
Post #14





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


$client =
Auth czy ServiceBroker?

Ten post edytował eMCeH 6.01.2013, 21:42:35
Go to the top of the page
+Quote Post
d_adamkiewicz
post 6.01.2013, 21:52:27
Post #15





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.01.2013

Ostrzeżenie: (0%)
-----


Auth

Nie znam się, ale wydaje mi się, że teraz

$response = $client->__doRequest(
"checkCWU",
"https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/ServiceBroker?wsdl",
"executeService",
"1.0");

tylko, że to nie działa;)

var_export($response);

daje takie coś

'http://www.w3.org/2005/08/addressing/soap/faultcom.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character \'c\' (code 99) in prolog; expected \'<\' at [row,col {unknown-source}]: [1,1]
Go to the top of the page
+Quote Post
eMCeH
post 6.01.2013, 22:11:48
Post #16





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


w zapytaniu checkCWU musisz przesłać pesel oraz równolegle nazwę i wersję swojego systemu
Go to the top of the page
+Quote Post
d_adamkiewicz
post 6.01.2013, 22:31:31
Post #17





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.01.2013

Ostrzeżenie: (0%)
-----


Może po

$client->__setSoapHeaders($hd);

trzeba:

$clientBroker = new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/ServiceBroker?wsdl');

$response = $clientBroker->__soapCall('executeService', ['status_cwu_pyt'=>['numer_pesel'=>49091480757],['system_swiad'=>['nazwa'=>"eWUS", 'wersja'=>"2.0"]]]);


Wprawdzie wywala mi to z błędem:
Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'location' property in index.php:49 Stack trace: #0 index.php(49): SoapClient->__soapCall('executeService', Array) #1 {main} thrown in index.php on line 49

ale wydaje mi się że nie podałem wszystkich parametrów jako drugi argument
Go to the top of the page
+Quote Post
marekpulawy
post 6.01.2013, 22:38:58
Post #18





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


  1. $response = $clientBroker->__soapCall('executeService', ['status_cwu_pyt'=>['numer_pesel'=>49091480757],['system_swiad'=>['nazwa'=>"eWUS", 'wersja'=>"2.0"]]], null, null, $wynik);


dodałem parametry do soapCall ale mi też wywala błąd
Go to the top of the page
+Quote Post
eMCeH
post 6.01.2013, 23:09:22
Post #19





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


identyczny komunikat dostaję w swoim wywołaniu

  1. $sesjaReturn = $clientBroker->__soapCall('executeService',array($parametry), $header, null, $header2);
Go to the top of the page
+Quote Post
d_adamkiewicz
post 6.01.2013, 23:26:02
Post #20





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.01.2013

Ostrzeżenie: (0%)
-----


  1. $response = $clientBroker->__soapCall('executeService',
  2. ['parameters'=>[
  3. 'location'=>[
  4. 'namespace'=>"nfz.gov.pl/ws/broker/cwu",
  5. 'localname'=>"checkCWU",
  6. 'version'=>"1.0"],
  7. 'date'=>"2008-09-12T09:37:36.406+01:00",
  8. 'payload'=>[
  9. 'status_cwu_pyt'=>[
  10. 'numer_pesel'=>49091480757,
  11. 'system_swiad'=>[
  12. 'nazwa'=>"eWUS",
  13. 'wersja'=>"2.0"
  14. ]
  15. ]
  16. ]
  17. ]
  18. ]
  19. );


Tamte błędy znikły - pojawia się:
Fatal error: Uncaught SoapFault exception: [soapenv:Server] unknown in index.php
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 17:48