730 precompilato + di uno snippet

  • Creatore Discussione Creatore Discussione marino51
  • Data di inizio Data di inizio
Mi riaffaccio qui per fare la stessa domanda del post di sopra. In ambiente di test mi da errore di connessione SOAP mentre in produzione è tutto ok. Tra i due cambiano solo i Link all'endpoint. Qualche idea? Ho pure scritto a SOGEI ma non risponde nessuno.
Grazie!!

codice errore: Faultcode: HTTP
Faultstring: Could not connect to host

Ecco il logo
05-Aug-2019 10:12:08 UTC] login : PROVAX00X00X000Y
[05-Aug-2019 10:12:08 UTC] password : Salve123
[05-Aug-2019 10:12:08 UTC] codiceRegione : 120
[05-Aug-2019 10:12:08 UTC] codiceAsl : 111
[05-Aug-2019 10:12:08 UTC] cfProprietario : PROVAX00X00X000Y
[05-Aug-2019 10:12:08 UTC] cfProprietarioCifrato : Ah1LnixnVEUqomYgH+MEOuhnowj/+iaS+wFLYP35BoeNbq8+68lkjTvo0h49p/iO1XjPVs8edoqNY1OXdcw1eNaaR4x4OsiM9zWvXQVYh2ocFBcpHAJlvoe7a0BPSF7Q94fUh/HkPzx+yi6t57DIatctICh4UIE3a+qW7e+1hzU=
[05-Aug-2019 10:12:08 UTC] piProprietario : 10954290599
[05-Aug-2019 10:12:08 UTC] pincodeInviante : 1234567890
[05-Aug-2019 10:12:08 UTC] pincodeInvianteCifrato : UVlBSIhTWnbQIJgJPReJHudcqwulW6D765f1QNcTc1HVvx4TD7qoDabol66sqSe7pysTxU3Ao6E4I7a3v70EQZgOLpFN2rJNnpRp7W5RZ2wHeKlifhooB8JBVY1CLypBKpyZILDBiDTeGl+KCToplJP3pjcWgOGQR0BroCisJXY=
[05-Aug-2019 10:12:08 UTC] File trattato: MSCMRA51P27Z614R.zip
[05-Aug-2019 10:12:08 UTC] carico in memoria il file MSCMRA51P27Z614R.zip
[05-Aug-2019 10:12:08 UTC] definisco il file wsdl ./SOAPFATTURE/InvioTelematicoSpeseSanitarie730p.wsdl
[05-Aug-2019 10:12:08 UTC] definisco the soap server location https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort
[05-Aug-2019 10:12:08 UTC] inizio trasferimento del file
[05-Aug-2019 10:12:08 UTC] trasferimento terminato con errori
 
In merito al post precedente la Sogei, dopo diverse sollecitazioni, mi ha risposto quanto segue:

Salve dal 18 Luglio tutti gli endpoint sono stati esposti con protocollo di sicurezza TLS 1.2 esclusivo
L’errore potrebbe essere dovuto a questo

In verità solo il con gli endpoint di test si verifica l'errore (loro dicono tutti gli endpoint). Ma in ogni caso come posso correggere l'errore? Il mio hosting è Linux. Grazie a chi vorrà aiutarmi.
Ciao
 
Ultima modifica:
ferie lunghe quest'anno, risposta con un po' di ritardo

confermo che il problema sta nella versione obsoleta di OpenSSL presente all'interno di php
ho installato la versione php 5.6.31 (per evitare di creare panico sul mio pc) e senza modificare nessuno script,
la connessione ha preso a funzionare

VERSIONR PHP 5.4.9
upload_2019-9-24_20-6-49.png

upload_2019-9-24_20-7-21.png


VERSION PHP 5.6.31
upload_2019-9-24_20-8-14.png

upload_2019-9-24_20-9-3.png


Potete controllare con PHPinfo
Saluti
 
Grazie Marino, ti invio la configurazione e come puoi vedere mi pare aggiornata. Ma non ti suona strano che in produzione funziona e con l'endpoint test no?
Schermata 2019-09-24 alle 23.09.07.png
Schermata 2019-09-24 alle 23.08.26.png
 
il risultato che ho pubblicato é stato ottenuto collegando il sito di test,
con la versione 5.4.9, si può dire che, non veniva accettata la connessione per via del protocollo di sicurezza,
con la 5.6.31 il problema é superato

l'errore che hai postato é differente dal mio e non riesco a riprodurlo
nel tuo caso sembra che il protocollo non sia responsabile,
inserisci questa funzione ed eseguila dopo la funzione "inviaFileMtom"
PHP:
function envelopes()
{
    global $client;

    echo "REQUEST HEADERS ============" . "<br />";
    $LastRequestHeaders = $client->__getLastRequestHeaders();
    echo "<xmp>"; var_dump($LastRequestHeaders); echo "</xmp><br /><br />";

    echo "REQUEST ====================" . "<br />";
    $LastRequest = $client->__getLastRequest();
    echo "<xmp>"; var_dump($LastRequest); echo "</xmp><br /><br />";

    echo "RESPONSE HEADERS ===========" . "<br />";
    $LastResponseHeaders = $client->__getLastResponseHeaders();
    echo "<xmp>"; var_dump($LastResponseHeaders); echo "</xmp><br /><br />";

    echo "RESPONSE ===================" . "<br />";
    $LastResponse = $client->__getLastResponse();
    echo "<xmp>"; var_dump($LastResponse); echo "</xmp><br /><br />";
}

try { $output = $client->inviaFileMtom($SoapRequest); }
catch ( SoapFault $e )
{ 
    require 'SoapFault.php';
}
envelopes();
così cerchiamo di verificare il problema
 
Grazie boss, provo e ti faccio sapere. Io ho avuto il problema dopo che sono passato dalla v. 5.5 alla 5.6 di php. Il mio errore sembra dovuto alla impossibilità di raggiungere il server sogei.
 
Ecco Marino, ho messo la tua funzione dopo

PHP:
$output = $client->inviaFileMtom(Array
    (
    "nomeFileAllegato"       => _Fatture730,
    "pincodeInvianteCifrato" => $pincodeInvianteCifrato,
    "documento"              => $zipfile,
    "datiProprietario"       => ( Array( "cfProprietario" => $cfProprietario ) )
    ));

Il risultato è questo

REQUEST HEADERS ============
NULL

REQUEST ====================
string(253) "&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ejb.invioTelematicoSS730p.sanita.finanze.it/"&gt;&lt;SOAP-ENV:Body&gt;&lt;ns1:inviaFileMtom/&gt;&lt;/SOAP-ENV:Body&gt;&lt;/SOAP-ENV:Envelope&gt; "

RESPONSE HEADERS ===========
NULL

RESPONSE ===================
NULL
Ancora grazie
 
Ultima modifica:
REQUEST HEADERS ============
NULL
l'errore é sulla tua macchina, che non genera "request headers",
il webservice di conseguenza non risponde
da cosa dipende ? sarebbe bello saperlo,
prova ad usare questi parametri, sono quelli che funzionano nelle mie prove
PHP:
$SoapClientParam = array
(
    "useMTOM"        => TRUE,
    "location"       => "x",  // sostituita nello script con l'endpoint specifico
    "login"          => $login,
    "password"       => $password,
    "authentication" => SOAP_AUTHENTICATION_BASIC,
    "keep_alive"     => TRUE,
    "cache_wsdl"     => WSDL_CACHE_NONE,
    "trace"          => TRUE,
    "exceptions"     => TRUE,
    "stream_context" => stream_context_create(array
    (
        "ssl" => array
        (
            "verify_peer"          => FALSE,
            "verify_peer_name"     => FALSE,
            "capture_session_meta" => TRUE,
        ),
    )),
);
 
Ok, provo e ti faccio sapere. Come ti spieghi che in ambiente di produzione funziona?

Aggiornamento : sono riuscito a superare l'ostacolo della mancata connessione grazie allo script che mi hai mandato, anche se ho dovuto semplificarlo così

PHP:
$SoapClientParam = array
    (
    "location"       => "x",
    "login"          => $login,
    "password"       => $password,
    "authentication" => SOAP_AUTHENTICATION_BASIC,
    "trace"          => true,
    "exceptions"     => false,
    "stream_context" => stream_context_create(array
    (
        "ssl" => array
        (
            "verify_peer"          => FALSE,
            "verify_peer_name"     => FALSE,
            "capture_session_meta" => TRUE,
        ),
    )),
    );
altrimenti non funzionava.

Ecco la risposta ma purtroppo non riesco ad interpretare l'errore in 'RESPONSE'.

REQUEST HEADERS ============
string(712) "POST /InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort HTTP/1.1 Host: invioSS730pTest.sanita.finanze.it Connection: Keep-Alive User-Agent: PHP-SOAP/5.6.40 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Content-Length: 253 Authorization: Basic UFJPVkFYMDBYMDBYMDAwWTpTYWx2ZTEyMw== Cookie: LtpaToken2=K3MJG/aHhM3Wivlzq4NXNBKXbBQiiZXPDlyBqy0ruZjIhBW/fAExPvj4+eDz/duutPPZgTSkWhDvlX8mKiGK2E/iPSMl+llzlUheBdGUlwIVKK8BC0cV6/47m3ITEi3nM/k4HD10oJH5bCyUKBqlvnYHv7OKlpW8q60yMiiZK/xO6kQ8wo8C7YTOUk0xJeEGU7Tdq5ZXjCLD+qAAVd/E9Ns+p2jGUGwdzNfCYPh4epQcgY/jPve7vjHPqK6w0vVtvaYsu2vf8x8NOCKdOjHuUHkELpaODe0EySaG9z9MXB9vsNScQoBg7foBRALvt4uM0tVq7Njtw4mkgkHiUS27Y9Ds8ndUvR+DDS9WIx+LoVXWH2gLD+4GmjDtqOYqNA1m; "

REQUEST ====================
string(253) "&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ejb.invioTelematicoSS730p.sanita.finanze.it/"&gt;&lt;SOAP-ENV:Body&gt;&lt;ns1:inviaFileMtom/&gt;&lt;/SOAP-ENV:Body&gt;&lt;/SOAP-ENV:Envelope&gt; "

RESPONSE HEADERS ===========
string(112) "HTTP/1.1 500 Internal Server Error Content-Type: text/xml X-Backside-Transport: FAIL FAIL Connection: close "

RESPONSE ===================
string(541) "&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"&gt; &lt;env:Body&gt; &lt;env:Fault&gt; &lt;faultcode&gt;env:Client&lt;/faultcode&gt; &lt;faultstring&gt;cvc-particle 3.1: in element {http://ejb.invioTelematicoSS730p.sanita.finanze.it/}inviaFileMtom of type {http://ejb.invioTelematicoSS730p.sanita.finanze.it/}inviaFileMtom, found &amp;lt;/ns1:inviaFileMtom&gt; (in namespace http://ejb.invioTelematicoSS730p.sanita.finanze.it/), but next item should be nomeFileAllegato&lt;/faultstring&gt;&lt;/env:Fault&gt;&lt;/env:Body&gt;&lt;/env:Envelope&gt;
 
Ultima modifica:
sono riuscito a superare l'ostacolo della mancata connessione grazie allo script che mi hai mandato
dalle mie parti si chiama "botta di cu... fortuna"

ho dovuto semplificarlo così
strano che parametri aggiuntivi, tra l'altro pertinenti, diano errore, puoi riportare l'errore ?

non riesco ad interpretare l'errore in RESPONSE
ho confrontato i due "request headers" (tuo e mio), sono praticamente identici, il tuo contiene "Cookie: …." non presente nel mio ( per ora trascuriamo )

riguardo la "request" la stai inviando vuota !
Codice:
<SOAP-ENV:Body><ns1:inviaFileMtom/></SOAP-ENV:Body></SOAP-ENV:Envelope>
il body non contiene la richiesta
PHP:
    $SoapRequest = array
    (
        "pincodeInvianteCifrato" => $pincodeInvianteCifrato,
        "datiProprietario"       => array
        (
            "cfProprietario"     => $cfProprietario
        ),
        "nomeFileAllegato"       => $Fatture730,
        "documento"              => $zipfile,
    )
quindi lo script di invio dei dati non fa il suo "dovere"

l'errore é questo
"but next item should be nomeFileAllegato" che giustappunto non é stato inviato e neppure gli altri elementi
 
Ultima modifica:
Marino, hai salvato nuovamente la patria, almeno quella mia! A parte alcuni errori dovuti al diverso nome tra alcune nostre variabili il tutto si è risolto quando ho inserito "stream_context => ecc" nella creazione del client e che nelle prime versione dei tuoi script non c'era. Mi spieghi, se hai tempo, a cosa serve? Resta il mistero che solo sul sito test non riuscivo a connettermi mentre in produzione nessun problema. Grazie Marino, sei veramente super bravo. Ti ho inviato un mess privato.
 
Voglio ringraziare ancora Marino per l'aiuto ricevuto. Non ho più avuto problemi da quando mi ha suggerito come risolverli.
 
l'errore é sulla tua macchina, che non genera "request headers",
il webservice di conseguenza non risponde
da cosa dipende ? sarebbe bello saperlo,
prova ad usare questi parametri, sono quelli che funzionano nelle mie prove
PHP:
$SoapClientParam = array
(
    "useMTOM"        => TRUE,
    "location"       => "x",  // sostituita nello script con l'endpoint specifico
    "login"          => $login,
    "password"       => $password,
    "authentication" => SOAP_AUTHENTICATION_BASIC,
    "keep_alive"     => TRUE,
    "cache_wsdl"     => WSDL_CACHE_NONE,
    "trace"          => TRUE,
    "exceptions"     => TRUE,
    "stream_context" => stream_context_create(array
    (
        "ssl" => array
        (
            "verify_peer"          => FALSE,
            "verify_peer_name"     => FALSE,
            "capture_session_meta" => TRUE,
        ),
    )),
);


Buongiorno Marino, anno nuovo e, di conseguenza, invio nuovo delle fatture.

Ho letto gli ultimi aggiornamenti, sto avendo problemi nell'invio dei dati del 2019.

Ecco i var_dump:

RESPONSE HEADERS ===========
NULL


RESPONSE ===================
NULL


il soap client è il seguente:

PHP:
$SoapClientParam = array
    (
    "location"       => "x",
    "login"          => $login,
    "password"       => $password,
    "authentication" => SOAP_AUTHENTICATION_BASIC,
    "trace"          => true,
    "exceptions"     => false,
    "stream_context" => stream_context_create(array
    (
        "ssl" => array
        (
            "verify_peer"          => FALSE,
            "verify_peer_name"     => FALSE,
            "capture_session_meta" => TRUE,
        ),
    )),
    );


da cosa può dipendere?
Grazie
 
Questo il log:

[02-Jan-2020 12:30:00 Europe/Paris] definisco il file wsdl ../xml/InvioTelematicoSpeseSanitarie730p.wsdl
[02-Jan-2020 12:30:00 Europe/Paris] definisco the soap server location https://invioSS730p.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort
[02-Jan-2020 12:30:00 Europe/Paris] ottengo la funzione da utilizzare per l'invio
[02-Jan-2020 12:30:00 Europe/Paris] inizio trasferimento del file
[02-Jan-2020 12:30:00 Europe/Paris] PHP Notice: SoapClient::__doRequest(): send of 8192 bytes failed with errno=10054 Connessione in corso interrotta forzatamente dall'host remoto.
in D:\DentalApp\file_conf\invio_dati_ts\php\FattureInviaWsdl.php on line 46
[02-Jan-2020 12:30:00 Europe/Paris] trasferimento terminato
[02-Jan-2020 12:30:00 Europe/Paris] PHP Notice: Undefined property: SoapFault::$return in D:\DentalApp\file_conf\invio_dati_ts\php\FattureInviaWsdl.php on line 60
[02-Jan-2020 12:30:00 Europe/Paris] PHP Notice: Trying to get property of non-object in D:\DentalApp\file_conf\invio_dati_ts\php\FattureInviaWsdl.php on line 60
[02-Jan-2020 12:30:00 Europe/Paris] done /Dentalapp/file_conf/invio_dati_ts/php/FattureInviaWsdl.php
 
nei miei script viene usato
try { $output = $client->inviaFileMtom($SoapRequest); }

l'errore viene segnalato come prodotto da
SoapClient::__doRequest():
stai usando script non miei o derivati dai miei ma modificati
vedi https://www.php.net/manual/en/soapclient.dorequest.php

l'errore può essere dovuto al comportamento anomalo dello script


in ogni caso, non hai pubblicato il "request header" e "request" (body)
ma solo le riposte vuote (null)

confronta "header" generato dai tuoi script con quello contenuto nel post #350 di msccmra51
devono essere uguali a parte "Cookie" che credo sia non necessario e comunque ininfluente

il "body" deve contenere la richiesta esattamente come specificato nella $SoapRequest del post #351

non dimenticare il post #344 estremamente importante

se "header" e "body" requests sono ok, il webserver deve rispondere
 
Salve a tutti, per caso vi funziona il flagPagamentoAnticipato quando si tratta dell'invio di un rimborso? continua a darmi l'errore con codice S003
grazie :)
 
Ciao @marino51, ti mostro la richiesta soap che faccio
Codice:
Content-Type:text/xml; charset=utf-8
SOAPAction:rimborso.documentospesap730.sanita.finanze.it
Authorization:Basic TVRPTVJBNjZBNDFHMjI0TTpTYWx2ZTEyMw==

Codice:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:doc="http://documentospesap730.sanita.finanze.it">
    <soapenv:Header/>
   <soapenv:Body>
      <doc:rimborsoDocumentoSpesaRequest>
         <doc:opzionale1></doc:opzionale1>
         <doc:opzionale2></doc:opzionale2>
         <doc:opzionale3></doc:opzionale3>
         <doc:pincode>W+cy4Lz7rOOgldsbK98TEAwR6OIikKMkQJ1nWS09LgnJ6up+4e2LfIHe9z6aOQ9NocHOqepHuUcqmNNXpOq2JDCZQms65cX2oif8VhSUsvOk/9mc/8A9A7tpLnHcoGNrrjrg0z3fat7JmENXo5LF5uQV2IqvT4z5BDJbNa5XZpQ=</doc:pincode>
         <doc:Proprietario>
            <doc:cfProprietario>SsFrZY1plknIYKxk2MxIsgCyH2X3cfnrbg7B1aywMzw4SYwfzCa797Bb40vZMlS1pRjBki3SYZT/dao7W7SCwarTTLQqFmfXu7SGBStGzfAyVWcXAZapnW3d8QWfY7EgbktdHPfcoslCqY+K4JJrHQA9H2bk2ngSA7n+xOjuLVw=</doc:cfProprietario>
         </doc:Proprietario>
         <doc:idRimborsoDocumentoFiscale>
            <doc:pIva>65498732105</doc:pIva>
            <doc:dataEmissione>2020-01-05</doc:dataEmissione>
            <doc:numDocumentoFiscale>
               <doc:dispositivo>1</doc:dispositivo>
               <doc:numDocumento>P9995</doc:numDocumento>
            </doc:numDocumentoFiscale>
         </doc:idRimborsoDocumentoFiscale>
         <doc:DocumentoSpesa>
            <doc:idSpesa>
               <doc:pIva>65498732105</doc:pIva>
               <doc:dataEmissione>2020-01-09</doc:dataEmissione>
               <doc:numDocumentoFiscale>
                  <doc:dispositivo>1</doc:dispositivo>
                  <doc:numDocumento>P9995/R</doc:numDocumento>
               </doc:numDocumentoFiscale>
            </doc:idSpesa>
            <doc:dataPagamento>2020-01-08</doc:dataPagamento>
            <doc:flagPagamentoAnticipato>1</doc:flagPagamentoAnticipato>
            <doc:cfCittadino>iKvd9JQntqxPBT2UA/OFfztSNLidocP8Op+NfODzfTdxFWzkcdZrJz5gvCuqv7Dh/r3Cin1ZQMmg/BofIqYCyq2PcC+PJzbvQCocDdl6FrXVXs3W5JhnX7VpWFGCLPYYY2WL+RWKxhfkGqeY8+NCVfQ1lEA15g3W5AabJ15Tthk=</doc:cfCittadino>
            <doc:voceSpesa>
               <doc:tipoSpesa>SP</doc:tipoSpesa>
               <doc:importo>10</doc:importo>
            </doc:voceSpesa>
            <doc:pagamentoTracciato>SI</doc:pagamentoTracciato>
         </doc:DocumentoSpesa>
      </doc:rimborsoDocumentoSpesaRequest>
   </soapenv:Body>
</soapenv:Envelope>

la data di pagamento della fattura è impostata al 2020-01-06, normalmente la chiamata funziona, ma se inserisco una data di pagamento del rimborso antecedente alla data di emissione e imposto il flagPagamentoAnticipato a 1 allora non funziona, vorrei solo sapere se qualcun altro ha lo stesso problema
 
giusto per ragionare,

Codice:
<doc:idRimborsoDocumentoFiscale>
    <doc:dataEmissione>2020-01-05</doc:dataEmissione>

    <doc:DocumentoSpesa>
        <doc:dataEmissione>2020-01-09</doc:dataEmissione>

        <doc:dataPagamento>2020-01-08</doc:dataPagamento>

stai rimborsando il giorno 5 un documento emesso il giorno 9 e pagato il giorno 8
mi pare strano ...
 

Discussioni simili