questa sera lo faccio, nel frattempo guarda l'esecuzione allegataPotresti per caso ripostare il file FattureInviaWsdl.php?
questa sera lo faccio, nel frattempo guarda l'esecuzione allegataPotresti per caso ripostare il file FattureInviaWsdl.php?
Ciao Marino,questa sera lo faccio, nel frattempo guarda l'esecuzione allegata
Ciao, il documento è del mio cliente, ma fa riferimento a questa informativa:
OBBLIGHI DEI MEDICI E DEGLI ODONTOIATRI DAL 01/01/2020 IN RELAZIONE A QUANTO STABILITO NELLA L. DI BILANCIO 2020
Vedi ad esempio: https://www.ordinemedicifc.it/archivio-news/
Allego lo screenshot.Vedi l'allegato 6911
il nuovo valore deve essere esposto tra <cfCittadino> e <voceSpesa> ossia:Ciao, il documento è del mio cliente, ma fa riferimento a questa informativa:
OBBLIGHI DEI MEDICI E DEGLI ODONTOIATRI DAL 01/01/2020 IN RELAZIONE A QUANTO STABILITO NELLA L. DI BILANCIO 2020
Vedi ad esempio: https://www.ordinemedicifc.it/archivio-news/
Allego lo screenshot.Vedi l'allegato 6911
Buon giorno Marinoecco il file, spero di aver messo tutto l'occorrente,
non é molto diverso dalla prima stesura,
controllerei come prima cosa i parametri dell'utente di test (credenziali),
a seguire come viene composta l'array $SoapClientParam (credenziali)
e per ultima la composizione dell'array $SoapRequest (FattureInviaWsdl)
sono i tre elementi fondamentali,
lo trovi quirequire_once 'myUtils/show_vars.php
...
...
[22-Jan-2020 11:03:25 Europe/Berlin] inizio trasferimento del file
[22-Jan-2020 11:03:25 Europe/Berlin] PHP Deprecated: capture_session_meta is deprecated; its information is now available via stream_get_meta_data() in /var/www/html/730_2019_new/FattureInviaWsdl.php on line 54
[22-Jan-2020 11:03:26 Europe/Berlin] PHP Notice: Undefined variable: SoapRequest in /var/www/html/730_2019_new/FattureInviaWsdl.php on line 58
[22-Jan-2020 11:03:26 Europe/Berlin] PHP Stack trace:
[22-Jan-2020 11:03:26 Europe/Berlin] PHP 1. {main}() /var/www/html/730_2019_new/FattureInviaWsdl.php:0
[22-Jan-2020 11:03:26 Europe/Berlin] RICHIESTA TERMINATA CON ERRORE
[22-Jan-2020 11:03:26 Europe/Berlin]
output =>object
(
return => object
(
codiceEsito => 200,
descrizioneEsito => ERRORE NELL'APPLICAZIONE: CONTATTARE L'ASSISTENZA,
),
)
[22-Jan-2020 11:03:26 Europe/Berlin]
e =>object
(
faultstring => MAX-LEN,
faultcode => env:Client,
xdebug_message => MAX-LEN,
)
[22-Jan-2020 11:03:26 Europe/Berlin] PHP Fatal error: SOAP Fault: (faultcode: env:Client, faultstring: cvc-particle 3.1: in element {http://ejb.invioTelematicoSS730p.sanita.finanze.it/}inviaFileMtom of type {http://ejb.invioTelematicoSS730p.sanita.finanze.it/}inviaFileMtom, found </ns1:inviaFileMtom> (in namespace http://ejb.invioTelematicoSS730p.sanita.finanze.it/), but next item should be nomeFileAllegato) in /var/www/html/730_2019_new/SoapFault.php on line 18
[22-Jan-2020 11:03:26 Europe/Berlin] PHP Stack trace:
[22-Jan-2020 11:03:26 Europe/Berlin] PHP 1. {main}() /var/www/html/730_2019_new/FattureInviaWsdl.php:0
[22-Jan-2020 11:03:26 Europe/Berlin] PHP 2. require() /var/www/html/730_2019_new/FattureInviaWsdl.php:61
[22-Jan-2020 11:03:26 Europe/Berlin] PHP 3. trigger_error() /var/www/html/730_2019_new/SoapFault.php:18
capture_session_meta
è deprecata, e sostituita da stream_get_meta_data()
.la variabile non definita, deve contenere tutti i dati per trasferire il file, non può essere non definita[22-Jan-2020 11:03:26 Europe/Berlin] PHP Notice: Undefined variable: SoapRequest in /var/www/html/730_2019_new/FattureInviaWsdl.php on line 58
la variabile non definita, deve contenere tutti i dati per trasferire il file, non può essere non definita
$SoapRequest = array(
"nomeFileAllegato" => _Fatture730,
"pincodeInvianteCifrato" => $pincodeInvianteCifrato,
"datiProprietario" => ( Array
(
"codiceRegione" => $codiceRegione,
"codiceAsl" => $codiceAsl,
"codiceSSA" => $codiceSSA,
"cfProprietario" => $cfProprietario
)),
"opzionale1" => '0',
"opzionale2" => '0',
"opzionale3" => '0',
"documento" => $zipfile
);
error_log("inizio trasferimento del file", 0);
$output = $client->inviaFileMtom($SoapRequest);
try { $output = $client->inviaFileMtom($SoapRequest); }
catch ( SoapFault $e )
{
require 'SoapFault.php';
}
envelopes();
...
...
[25-Jan-2020 10:47:12 Europe/Berlin] File trattato : Fatture730_2019_completo.zip
[25-Jan-2020 10:47:12 Europe/Berlin] carico in memoria il file Fatture730_2019_completo.zip
[25-Jan-2020 10:47:12 Europe/Berlin] definisco il file wsdl InvioTelematicoSpeseSanitarie730p.wsdl
[25-Jan-2020 10:47:12 Europe/Berlin] definisco the soap server location https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort
[25-Jan-2020 10:47:12 Europe/Berlin] inizio trasferimento del file
[25-Jan-2020 10:47:13 Europe/Berlin] PHP Deprecated: capture_session_meta is deprecated; its information is now available via stream_get_meta_data() in /var/www/html/730_2019_new/FattureInviaWsdl.php on line 56
[25-Jan-2020 10:47:16 Europe/Berlin] trasferimento terminato
[25-Jan-2020 10:47:16 Europe/Berlin] PHP Notice: Undefined property: stdClass::$protocollo in /var/www/html/730_2019_new/FattureInviaWsdl.php on line 80
[25-Jan-2020 10:47:16 Europe/Berlin] PHP Stack trace:
[25-Jan-2020 10:47:16 Europe/Berlin] PHP 1. {main}() /var/www/html/730_2019_new/FattureInviaWsdl.php:0
[25-Jan-2020 10:47:16 Europe/Berlin] done /730_2019_new/FattureInviaWsdl.php
[25-Jan-2020 11:39:29 Europe/Berlin] Protocollo = 20012511391959355
[25-Jan-2020 11:39:29 Europe/Berlin] PHP Deprecated: capture_session_meta is deprecated; its information is now available via stream_get_meta_data() in /var/www/html/730_2019_USED/FattureInvioRicevutaPdf.php on line 45
[25-Jan-2020 11:39:29 Europe/Berlin] LA RICHIESTA HA AVUTO RISPOSTA
[25-Jan-2020 11:39:29 Europe/Berlin] ERRORE: NON E' PRESENTE LA RICEVUTA PER IL PROTOCOLLO 20012511391959355
[25-Jan-2020 11:39:29 Europe/Berlin] done /730_2019_USED/FattureInvioRicevutaPdf.php
ma nuovamente il PDF mi restituisce che "il file NON È STATO ACCOLTO" (Errore: E015 = "IL FILE RISULTA GIA' INVIATO PRECEDENTEMENTE ED ELABORATO")
Negli scorsi anni avevo inserito la variabile direttamente dentro la funzione, senza dichiarare un $SoapRequest..almeno la connessione al webservice funziona,
negli anni passati non poteva funzionare senza la "$SoapRequest",
probabilmente successive modifiche che hai apportato allo script hanno impedito la sua valorizzazione
in ogni caso ora la connessione funziona,
se il file risulta già presente, significa che uno degli invii precedenti ha funzionato, ed il webservice lo ha preso in carico
per fare prove non basta cambiare il nome del file, ma é necessario cambiare il numero di documento di ciascuno dei documenti presenti (se si usa lo stesso file)
$time
proprio per rendere "univoco" il numero progressivo delle ricevute..$time = ( $TEST ? substr(microtime(true), -3).$my_str : "" );
...
...
$numDocumento = $numDocumentoFiscale->addChild('numDocumento', $col[_ColDocNumber].$time);
ogni esecuzione dell'invio registra le operazioni eseguite nel file di log, nel file credenziali é presente,Al primo invio del file "FattureInviaWsdl.php" non mi restituisce il numero di PROTOCOLLO.. mentre al secondo refresh dello stesso file (usando il medesimo file.ZIP) il numero di protocollo mi viene restituito..
$fileLog = "__TesseraSanitaria.log"; // dettaglio dei passi della lavorazione (log da conservare come ulteriore prova)
ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('display_errors', FALSE);
ini_set('log_errors', TRUE);
ini_set('error_log', $fileLog);
error_log(".", 0);
error_log("Current PHP version : ".phpversion(), 0);
error_log("main : ".$_SERVER['PHP_SELF'], 0);
ogni esecuzione dell'invio registra le operazioni eseguite nel file di log, nel file credenziali é presente,
...
meglio leggere il log e capire cosa é successo, prima di qualunque refresh / riesecuzione, verificando la conclusione dell'operazione di invio
...
il log visualizza l' operazione attiva se consultato durante il processo, in caso di durata eccessiva
[26-Jan-2020 11:34:53 Europe/Berlin] File trattato : Fatture730_2019_completo.zip
[26-Jan-2020 11:34:53 Europe/Berlin] carico in memoria il file Fatture730_2019_completo.zip
[26-Jan-2020 11:34:53 Europe/Berlin] definisco il file wsdl InvioTelematicoSpeseSanitarie730p.wsdl
[26-Jan-2020 11:34:53 Europe/Berlin] definisco the soap server location https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort
[26-Jan-2020 11:34:53 Europe/Berlin] inizio trasferimento del file
[26-Jan-2020 11:34:53 Europe/Berlin] PHP Deprecated: capture_session_meta is deprecated; its information is now available via stream_get_meta_data() in /var/www/html/730_2019_USED/FattureInviaWsdl.php on line 58
[26-Jan-2020 11:34:54 Europe/Berlin] trasferimento terminato
[26-Jan-2020 11:34:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$protocollo in /var/www/html/730_2019_USED/FattureInviaWsdl.php on line 80
[26-Jan-2020 11:34:54 Europe/Berlin] PHP Stack trace:
[26-Jan-2020 11:34:54 Europe/Berlin] PHP 1. {main}() /var/www/html/730_2019_USED/FattureInviaWsdl.php:0
[26-Jan-2020 11:34:54 Europe/Berlin] done /730_2019_USED/FattureInviaWsdl.php
PHP Deprecated: capture_session_meta is deprecated;
? Usando la versione php7.0 dove capture_session_meta
è deprecato. Al suo posto bisognerebbe utilizzare stream_get_meta_data()
ma non so come fare.. PHP Notice: Undefined property: stdClass::$protocollo
.per quanto riguarda i tempi di attesa, bisognerebbe conoscere il carico dei server e come interagiscono ( ci potrebbero essere anche le fatture elettroniche sugli stessi server, ma chissà ... )
opterei per invii da 1000 ( ma anche 500 ) per evitare possibili timeout o memoria insufficiente
e …. molta calma
$SoapClientParam
$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,
),
)),
);
$SoapClientParam = array(
"location" => "x",
"login" => $login,
"password" => $password,
"authentication" => SOAP_AUTHENTICATION_BASIC,
"trace" => false,
"exceptions" => false,
"stream_context" => stream_context_create( array(
"ssl" => array(
"verify_peer" => false,
"verify_peer_name" => false
)
))
);
$SoapClientParam
con questi parametri?c'é un problema nello script ...[26-Jan-2020 11:34:54 Europe/Berlin] PHP Notice: Undefined property: stdClass::$protocollo in /var/www/html/730_2019_USED/FattureInviaWsdl.php on line 80
c'é un problema nello script ...
<?php
require_once 'Credenziali.php';
// invia il file .zip al Ministero delle Finanze
error_log("File trattato : "._Fatture730 .".zip", 0);
echo "<p><h4>TRASFERIMENTO DELLE FATTURE PER IL 730 PRECOMPILATO AL MINISTERO</h4></p>";
error_log("carico in memoria il file "._Fatture730 .".zip", 0);
$zipfile = implode("", file(_Fatture730 .".zip"));
$ws = _InvioTelematico_WSDL; // "InvioTelematicoSpeseSanitarie730p.wsdl"
$SoapClientParam["location"] = $InvioTelematico; // "https://invioSS730p.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort"
error_log("definisco il file wsdl ".$ws, 0);
echo $ws."<p> </p>";
error_log("definisco the soap server location ".$SoapClientParam["location"], 0);
echo $SoapClientParam["location"]."<p> </p>";
$client = new SoapClient($ws, $SoapClientParam);
echo "<p><h4>List of available SOAP functions</h4></p>";
$output = $client->__getFunctions();
while (list ($key, $val) = each ($output) ) echo $val."<br />"; echo "<p> </p>";
echo "<p><h4>List of types described in the WSDL for the Web service</h4></p>";
$output = $client->__getTypes();
while (list ($key, $val) = each ($output) ) echo $val."<br />"; echo "<p> </p>";
echo "<p><h4>INIZIO TRASFERIMENTO DEL FILE</h4></p>";
$SoapRequest = array(
"nomeFileAllegato" => _Fatture730 .".zip",
"pincodeInvianteCifrato" => $pincodeInvianteCifrato,
"datiProprietario" => ( Array
(
"codiceRegione" => $codiceRegione,
"codiceAsl" => $codiceAsl,
"codiceSSA" => $codiceSSA,
"cfProprietario" => $cfProprietario
)),
"opzionale1" => '0',
"opzionale2" => '0',
"opzionale3" => '0',
"documento" => $zipfile
);
error_log("inizio trasferimento del file", 0);
//$output = $client->inviaFileMtom($SoapRequest);
try { $output = $client->inviaFileMtom($SoapRequest); }
catch ( SoapFault $e )
{
require 'SoapFault.php';
}
//envelopes();
// END EDIT
if (is_soap_fault($output))
{
$err = "SOAP Fault: (faultcode: {$output->faultcode}, faultstring: {$output->faultstring})";
error_log("trasferimento terminato con errori", 0);
echo "<p><h4>TRASFERIMENTO TERMINATO CON ERRORI</h4></p>"."<p>$err</p>";
var_dump($output); echo "<p> </p>";
trigger_error($err, E_USER_ERROR);
}
else
{
error_log("trasferimento terminato", 0);
echo "<p><h4>TRASFERIMENTO TERMINATO</h4></p>";
$protocollo = $output->return->protocollo;
echo $protocollo."<p> </p>";
error_log("numero di protocollo: ". $protocollo, 0);
ReportOutput("protocollo");
ReportOutput("dataAccoglienza");
ReportOutput("nomeFileAllegato");
ReportOutput("dimensioneFileAllegato");
ReportOutput("codiceEsito");
ReportOutput("descrizioneEsito");
ReportOutput("idErrore");
}
error_log("done ".$_SERVER['PHP_SELF'], 0);
echo "<p><h4>FINE DEL LAVORO</h4></p>";
// ReportOutput per "FattureInviaWsdl.php"
function ReportOutput($var)
{
global $response;
if ( !empty($response->{$var}) )
{
error_log($var." = ".$response->{$var}, 0);
echo $var." = ".$response->{$var}."<br />";
}
}
?>
$protocollo = $output->return->protocollo;
$SoapClientParam
è nel post precedente, e gli arriva dal file "Credenziali.php"$client = new SoapClient($ws, $SoapClientParam);
$SoapRequest = array
(
"pincodeInvianteCifrato" => $pincodeInvianteCifrato,
"datiProprietario" => array
(
"codiceRegione" => $codiceRegione,
"codiceAsl" => $codiceAsl,
"codiceSSA" => $codiceSSA,
"cfProprietario" => $cfProprietario
),
"opzionale1" => '0',
"opzionale2" => '0',
"opzionale3" => '0',
"nomeFileAllegato" => _Fatture730 .".zip",
"documento" => $zipfile
);
echo "SoapRequest<br />".show_var($SoapRequest)."<br /><br />";
error_log(PHP_EOL."SoapRequest => ".log_var($SoapRequest), 0);
echo "<p><h4>INIZIO TRASFERIMENTO DEL FILE</h4></p>";
error_log("inizio trasferimento del file", 0);
try { $output = $client->inviaFileMtom($SoapRequest); }
catch ( SoapFault $e )
{
require 'SoapFault.php';
}
envelopes();
/* -------------------------------------------------------------------------------- Soap Receipt */
LogTitles("L'INVIO HA AVUTO RISPOSTA");
print_r($output); echo "<br /><br />";
echo "output<br />".show_var($output)."<br /><br />";
error_log(PHP_EOL."output => ".log_var($output), 0);
if ( $output->return->codiceEsito == 0 )
{
LogTitles("TRASFERIMENTO TERMINATO CON SUCCESSO");
}
else
{
LogTitles("TRASFERIMENTO TERMINATO CON ERRORE");
}
echo "<p><h4>FINE DEL LAVORO</h4></p>";
error_log("done ".$_SERVER['PHP_SELF'], 0);
?>
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?