730 precompilato + di uno snippet

perseoclub

Utente Attivo
28 Nov 2015
83
0
6
Mi sto scervellando:

1) ho confrontato (con MELD) i file dello scorso anno con quelli della cartella del 2016. Sono praticamente identici!

2) ho controllato da phpinfo() che soap sia abilitato.. e lo è!

3) ho controllato (online) che il file .xml generato sia idoneo con il file "730_precompilata.xsd".. e lo è!

4) ho provato cambiando le credenziali (regione Valle d'Aosta) con quelle della regione Lazio.. e mi da il solito errore..


Questo è l'output del file "FattureInviaWsdl.php":

Codice:
TRASFERIMENTO DELLE FATTURE PER IL 730 PRECOMPILATO AL MINISTERO

InvioTelematicoSpeseSanitarie730p.wsdl

https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort

List of available SOAP functions

inviaFileMtomResponse inviaFileMtom(inviaFileMtom $parameters)

List of types described in the WSDL for the Web service

struct ricevutaInvio { string codiceEsito; string dataAccoglienza; string descrizioneEsito; string dimensioneFileAllegato; string nomeFileAllegato; string protocollo; string idErrore; }
struct inviaFileMtom { tipoNomeFileAllegato nomeFileAllegato; string pincodeInvianteCifrato; proprietario datiProprietario; string opzionale1; string opzionale2; string opzionale3; base64Binary documento; }
struct proprietario { varChar3Type codiceRegione; varChar3Type codiceAsl; codSsaType codiceSSA; cfType cfProprietario; }
string cfType
string varChar3Type
string codSsaType
string tipoNomeFileAllegato
struct inviaFileMtomResponse { ricevutaInvio return; }

INIZIO TRASFERIMENTO DEL FILE

TRASFERIMENTO TERMINATO CON ERRORI

SOAP Fault: (faultcode: HTTP, faultstring: Could not connect to host)
object(SoapFault)#2 (9) { ["message":protected]=> string(25) "Could not connect to host" ["string":"Exception":private]=> string(0) "" ["code":protected]=> int(0) ["file":protected]=> string(43) "/var/www/html/730_2016/FattureInviaWsdl.php" ["line":protected]=> int(54) ["trace":"Exception":private]=> array(2) { [0]=> array(4) { ["function"]=> string(11) "__doRequest" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(5) { [0]=> string(318734) " Fatture730_2016_completo.zipQhABebPIFsgHj9g2tkvYhR8NJdplbgetRkYZDjPs3NZbZz2PYhCS0WQ622dVSzMukZskuvM7fQRvLAzHyGKsNmHkmPD3WIRvgq6Dxo2rcaJIHiE0ZjU975PIGGffWLTU0sJKwNWe7+7pnHDkmdbQOvRnS5KBZwNbO1azh4EvIks=120101888888CCSRMO77A09H501E000UEsDBBQAAAAIAJVjL0rYBsJDvaIDAIn1DgAcAAAARmF0dHVyZTczMF8yMDE2X2NvbXBsZXRvLnhtbOz9V2/02NoYaJ9/v8LwKWEzp8H2OyBZZDHnfPKBOedY/PWj7TAOh360MVK7Gw20JJYkqnj1ugMX1/rH/30P/b87i3VrpvE//Xv4P0L//t8VYzblzVj9p39/7OV/oP79//1v/79/zGuRTcPc9Mme/Luvbxm3/+vemv/07+t9n/8vELyu6z9e6H+c1gpEIAgGQ011sroYkv/QjNuejFnx7//d1+v/r3HSk6HY5iQr/stxdcqS/T//ahKF/v//42/5j/eW//t/+8c0P1
...
...
...
" [1]=> string(100) "https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort" [2]=> string(0) "" [3]=> int(1) [4]=> int(0) } } [1]=> array(6) { ["file"]=> string(43) "/var/www/html/730_2016/FattureInviaWsdl.php" ["line"]=> int(54) ["function"]=> string(6) "__call" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(2) { [0]=> string(13) "inviaFileMtom" [1]=> array(1) { [0]=> array(7) { ["nomeFileAllegato"]=> string(28) "Fatture730_2016_completo.zip" ["pincodeInvianteCifrato"]=> string(172) "QhABebPIFsgHj9g2tkvYhR8NJdplbgetRkYZDjPs3NZbZz2PYhCS0WQ622dVSzMukZskuvM7fQRvLAzHyGKsNmHkmPD3WIRvgq6Dxo2rcaJIHiE0ZjU975PIGGffWLTU0sJKwNWe7+7pnHDkmdbQOvRnS5KBZwNbO1azh4EvIks=" ["datiProprietario"]=> array(4) { ["codiceRegione"]=> string(3) "120" ["codiceAsl"]=> string(3) "101" ["codiceSSA"]=> string(6) "888888" ["cfProprietario"]=> string(16) "CCSRMO77A09H501E" } ["opzionale1"]=> string(1) "0" ["opzionale2"]=> string(1) "0" ["opzionale3"]=> string(1) "0" ["documento"]=> string(238423) "PK�c/J��C����Fatture730_2016_completo.xml��Wo���h����)a3���; Yd1�|�9�X����0�~�1R� �$�$�x������}��;�uk��?�{�?B���c6��X���������o���k�M���ɞ���o���ޚ����}��/���?^��� D CMu����Ќ۞�Y��������qғ���$+��quʒ�?�j
...
...
...
Fatture730_2016_completo.xmlPKJ��" } } } } } ["previous":"Exception":private]=> NULL ["faultstring"]=> string(25) "Could not connect to host" ["faultcode"]=> string(4) "HTTP" }
Aiuto!!! :(

PS: rispetto allo scorso anno ho fatto l'upgrade del sistema operativo (Ubuntu 16.04 LTS) e di php (dalla 5.4/5.6 (non ricordo esattamente) → alla 7).
 

perseoclub

Utente Attivo
28 Nov 2015
83
0
6
Smanettando sul web ho trovato un modo per far girare sul mio server sia php5.6 sia php7.0

Questo è l'output con php5.6

Codice:
TRASFERIMENTO DELLE FATTURE PER IL 730 PRECOMPILATO AL MINISTERO

InvioTelematicoSpeseSanitarie730p.wsdl

https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort

List of available SOAP functions

inviaFileMtomResponse inviaFileMtom(inviaFileMtom $parameters)

List of types described in the WSDL for the Web service

struct ricevutaInvio { string codiceEsito; string dataAccoglienza; string descrizioneEsito; string dimensioneFileAllegato; string nomeFileAllegato; string protocollo; string idErrore; }
struct inviaFileMtom { tipoNomeFileAllegato nomeFileAllegato; string pincodeInvianteCifrato; proprietario datiProprietario; string opzionale1; string opzionale2; string opzionale3; base64Binary documento; }
struct proprietario { varChar3Type codiceRegione; varChar3Type codiceAsl; codSsaType codiceSSA; cfType cfProprietario; }
string cfType
string varChar3Type
string codSsaType
string tipoNomeFileAllegato
struct inviaFileMtomResponse { ricevutaInvio return; }

INIZIO TRASFERIMENTO DEL FILE

TRASFERIMENTO TERMINATO CON ERRORI

SOAP Fault: (faultcode: HTTP, faultstring: Could not connect to host)

/var/www/html/730_2016/FattureInviaWsdl.php:62:
object(SoapFault)[2]
  protected 'message' => string 'Could not connect to host' (length=25)
  private 'string' (Exception) => string '' (length=0)
  protected 'code' => int 0
  protected 'file' => string '/var/www/html/730_2016/FattureInviaWsdl.php' (length=43)
  protected 'line' => int 55
  private 'trace' (Exception) =>
    array (size=3)
      0 =>
        array (size=4)
          'function' => string '__doRequest' (length=11)
          'class' => string 'SoapClient' (length=10)
          'type' => string '->' (length=2)
          'args' =>
            array (size=5)
              ...
      1 =>
        array (size=6)
          'file' => string '/var/www/html/730_2016/FattureInviaWsdl.php' (length=43)
          'line' => int 55
          'function' => string '__call' (length=6)
          'class' => string 'SoapClient' (length=10)
          'type' => string '->' (length=2)
          'args' =>
            array (size=2)
              ...
      2 =>
        array (size=6)
          'file' => string '/var/www/html/730_2016/FattureInviaWsdl.php' (length=43)
          'line' => int 55
          'function' => string 'inviaFileMtom' (length=13)
          'class' => string 'SoapClient' (length=10)
          'type' => string '->' (length=2)
          'args' =>
            array (size=1)
              ...
  private 'previous' (Exception) => null
  public 'faultstring' => string 'Could not connect to host' (length=25)
  public 'faultcode' => string 'HTTP' (length=4)
Mi pare lo stesso identico errore che dava php7.0, ma con layout più ordinato!

Non ne vengo a capo.. Aiuto!!! :(
 

perseoclub

Utente Attivo
28 Nov 2015
83
0
6
Inizio ad ipotizzare che sia un problema di server della SOGEI.
Magari mi sbaglio, ma:
- ho scaricato SOAPUI,
- ho caricato il progetto di esempio "730StrutturaAccreditata-soapui-project.xml" messo a disposizione dal portale TS
- ho lanciato 'StrutturaAccreditata' da 'InvioTelematicoSS730pMtomPortBinding'

..ma mi restituisce un errore sulle credenziali (che sono predefinite, e identiche a quelle di Test - Regione Valle d'Aosta)

Questo lo screenshot di SOAPUI..

Che mi consigliate? Sono basito!!

PS: per di più sto cercando di contattare il numero verde 800 030 070 ma è sempre intasato (problemi d'intenso traffico telefonico..)
 

Allegati

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
ho inserito nel file credenziali i valori di prova che hai pubblicato (non li ho presi dal kit),
ho fatto l'invio in test con successo, win 10, php 5.4.9
Codice:
[15-Jan-2017 14:11:08 Europe/Rome]

name                   : Laboratorio Valle d'Aosta 020-101-888888
login                  : UXN6VMDD
password               : P2SPDVF4
codiceRegione          : 020
codiceAsl              : 101
codiceSSA              : 888888
cfProprietario         : CCSRMO77A09H501E
cfProprietarioCifrato  :
piProprietario         : 03213213210
pincodeInviante        : 1426073406
pincodeInvianteCifrato : txIO+4Z3DqZvxrol9o6KmkQjlWSD4SOLdeUigRadhoxVNv7rM3RytJlT1jCHdMEg337cD3D1bvYd/uFLeBT+uZzzZy67Rx5UlWD6bvqXlRQjAMxDH/oGcsxmLtBqLPe8i/ZHdiE1xgEPWj+OX6bOdZJOaQgCa9LY8WQaWOWSvbA=
File trattato          : Fatture730_2015_1.zip
carico in memoria il file Fatture730_2015_1.zip
definisco il file wsdl InvioTelematicoSpeseSanitarie730p.wsdl
definisco the soap server location https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort
inizio trasferimento del file
trasferimento terminato
protocollo = 17011514110974304
dataAccoglienza = 15-01-2017 14:11:09
nomeFileAllegato = Fatture730_2015_1.zip
dimensioneFileAllegato = 869
codiceEsito = 000
descrizioneEsito = Il file è in attesa di elaborazione, per conoscerne l'esito è necessario verificare la ricevuta
done /test_site/php/test/XML/FattureInviaWsdl.php

[15-Jan-2017 14:12:13 Europe/Rome]

Protocollo = 17011514110974304
LA RICHIESTA HA AVUTO RISPOSTA
E' PRESENTE LA RICEVUTA PER IL PROTOCOLLO 17011514110974304
SALVO LA RICEVUTA COME 730precompilato_2015_RisultatiInvio/17011514110974304.pdf
RICHIESTA COMPLETATA CON SUCCESSO
done /test_site/php/test/XML/FattureInvioRicevutaPdf.php
 

perseoclub

Utente Attivo
28 Nov 2015
83
0
6
Incredibile!!!

Ho provato a fare il tentativo sul portatile, dove ho installata ancora la vecchia versione PHP5.5.9

Miracolo! il file "FattureInviaWsdl.php" mi restituisce il numero di protocollo!

A breve vi darò altri aggiornamenti..
 

perseoclub

Utente Attivo
28 Nov 2015
83
0
6
Perfetto!

Ho eseguito la procedura dal notebook (PHP v.5.5.9) e nell'area di TEST è andato tutto a buon fine.

Mi ha restituito il pdf contenente i Dettagli Errori (circa il 23% delle ricevute fiscali trasmesse, causa CF non presente in archivio).

Appena ho finito di ricontrollare tali CF sul mio report, farò l'invio effettivo e vedremo quante ricevute fiscali verranno effettivamente respinte.

A presto.. :)

PS: mi piace ricordarlo: Marino è un mito!
 

perseoclub

Utente Attivo
28 Nov 2015
83
0
6
Andando un po' a tentativi.. alla fine ho trovato uno script dove suggeriva di aggiungere il parametro "stream_context" settato in questo modo! [nel file "Credenziali.php"]

PHP:
$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)
            )
        )
    );
Adesso funziona anche con PHP 7.0!!! :)
 

LinuxOhYeah

Utente Attivo
26 Nov 2016
188
7
18
Buona giornata. Scusate se non ho scritto prima ma è stato un brutto periodo...

Inizio a dire: grazie mille al mitico Marino51 e a tutti per aver contribuito! Grazie! :)
Premetto che ho Xubuntu 16.04.1 e volevo usare php a linea di comando (php7.0-cli) e quindi ho anche aggiunto il modulo php7.0-soap. PHP Version => 7.0.13-0ubuntu0.16.04.1
Invio per ottico 2016. Ecco cosa ho fatto:

1) Ho copiato dal kit (kit730P_ver_20161223.zip) dalla cartella /TracciatiWS/WS_AsincronoInvioDati730/ InvioTelematicoSpeseSanitarie730p_schema1.xsd e InvioTelematicoSpeseSanitarie730p.wsdl
Non so però che scrivere all'interno del file "wsdl" la voce "<soap:address location=" (in fondo) sia per test sia per effettivo. Su quello del kit c'è
Codice:
<soap:address location="http://localhost:9080/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort"/>
2) Ho modificato, solo per comodità, Credenziali.php con
PHP:
define ("_ColDocDate",       1);
define ("_ColDocNumber",   2);
define ("_ColFiscalCode",   3);
define ("_ColTotalEuro",   4);
define ("_ColBollo",       5);
define ("_ColNotRelevant1",   6);
define ("_ColNotRelevant2",   7);
define ("_ColNotRelevant3",   8);
Anche se in verità le ultime 4 colonne non servirebbero, infatti ho messo nel csv tutti 0. Penso potrei non inserirle modificando lo script _3_FattureGeneraXMLdaTXT.php solamente con
PHP:
$InvEuro = $col[_ColTotalEuro];
e
PHP:
$TotalEuro = $InvEuro;
Non ho controllato se sono riportati anche in altri script ma non credo.

3) Ho notato, ditemi se sbaglio, che il file csv Fatture730_2016_completo.txt in realtà ha bisogno di un campo 0 altrimenti _1_FattureGeneraFilesCFdaTXT.php non prende il CF ma il campo _ColTotalEuro. Ho semplicemente messo 1; mettendo come prova un solo CF per tutte le fatture di prova che ho trovato nel kit:
Codice:
1;13/01/2016;1/2016;PNIMRA70A01H501P;20.15;0;0;0;0
1;23/02/2016;2/2016;PNIMRA70A01H501P;30;0;0;0;0
1;24/02/2016;4/2016;PNIMRA70A01H501P;50;0;0;0;0
1;30/03/2016;6/2016;PNIMRA70A01H501P;90;0;0;0;0
1;07/04/2016;7/2016;PNIMRA70A01H501P;22;0;0;0;0
4) Ho preso le credenziali di test da /SoggettoOttico/UtenzeTestOttico.txt che ho messo su Credenziali.php anche se non mi ritrovo il _cfProprietarioCifrato che spero sia
PHP:
define ("_cfProprietarioCifrato",   "x42Ft28lh/e4WGpFQmpIrmwaXeii0e8k2F/59MHVLoyhSf//ZDrpTWsFFqZXlJgMq9+blw63F2UMy2IchdXBJn8j9AAVPwShVLsWZ9bv4cotqNJHxvBee4Y/O1r1G3MAm2/uH0NL8vgS5mfp11GCVwm1j63fpx+CcL/fjQHiLlk=");
Preso da kit730P_ver_20161223/SoggettoOttico/730Ottico-soapui-project.xml. Altrimenti quale è? Forse è per questo che ho l'errore 109 - DATI PROPRIETARIO FORMALMENTE ERRATI...
Speravo fosse già nel file UtenzeTestOttico.txt. Questo è scritto nel file UtenzeTestOttico.txt del kit:
Codice:
OTTICO
-------------------------------------------------
User: A9AZOS61
Password: Salve123
Pincode: 5485370458
Pincode cifrato: KeS5/QE2L6BxTAnSjydhe3kF050HNra3CuQM71Hf6Q9brJ7ymZXW9oWmXEHIu5XiYCf6HB4AGWAjMwLtEC5AZg3t5/xbP6nUB8+RWLgRqknpmy1Ytzc2ilAERg7a0asG4MJ4qFh/JORp8RooYrD0NLvKWVoo+Q/5gdBIAd/kj/E=
cfProprietario: PROVAX00X00X000Y
pIva: 98765432104
Codice ufficio: 604-120-010011
Non so cosa sia Codice ufficio...

5) Su _1_FattureGeneraFilesCFdaTXT.php gli ho aggiunto semplicemente alla fine
return "Codice fiscale riconosciuto";
a riga di comando faccio php _1_FattureGeneraFilesCFdaTXT.php > _1_log.html così avrò anche il file di log che posso leggere dal browser.
Sembra tutto ok tranne un
Codice:
[17-Jan-2017 16:29:18 Europe/Berlin] PHP Notice:  Undefined offset: 1 in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/Credenziali.php on line 137
137 -> if( !empty( $argv ) ) $protocollo = $argv[1];
6) Dopo aver creato la sottocartella FC/ ho modificato il file bat win _2_FattureGeneraOpenSSL.bat in _2_FattureGeneraOpenSSL.sh:
Codice:
#!/bin/bash
for file in $(ls FC/x_*.txt -1)
do
   nomefile=${file%.txt}
   openssl rsautl -encrypt -in $nomefile.txt -out $nomefile.enc -inkey SanitelCF.cer -certin -pkcs
done
che mi fa i vari file con i codici criptati. Lo eseguo e sembra tutto ok.

7) come perseoclub ha anche detto, ho messo anche io in Credenziali.php
PHP:
$SoapClientParam = array
    (
    "location"       => "x",
    "login"       => $login,
    "password"       => $password,
    "authentication"   => SOAP_AUTHENTICATION_BASIC,
    "trace"       => 1,
    "exceptions"   => 1,
    "stream_context"   => stream_context_create(array
       (
                'ssl' => array
           (
                   'verify_peer'       => false,
                   'verify_peer_name'  => false,
                   )
               )
        )
    );
Altrimenti con PHP superiore alla 5.5 da SOAP fault. Questa è una soluzione alternativa a quella indicata da Aarc14 che ha installato il certificato della pagina di test. Sarebbe opportuno fare in modo che sia solamente in ambiente di test. Magari ci penso in seguito.
Il modivo tecnico di queste modifiche è perchè l'ambiente di test ha un certificato autofirmato e dal PHP maggiore di 5.5 per default viene inibito. In ambiente di produzione il certificato invece è "normale". Questa modifica non verifica il certificato. A differenza di perseoclub io ho messo anche trace ed exceptions a 1 sperando di avere più informazioni. Sinceramente non so cosa faccia esattamente exceptions...
 
Ultima modifica:

LinuxOhYeah

Utente Attivo
26 Nov 2016
188
7
18
8) eseguo a riga di comando php _3_FattureGeneraXMLdaTXT.php > _3_log.html (_3_log.html in realtà esce 1 quindi forse è inutile) che mi crea l'XML ed il relativo Fatture730_2016_completo.zip. Ho un dubbio. Su:
PHP:
function GetEncFC($encFile)
    {
    global $pub_key;

    openssl_public_encrypt($encFile, $encFC, $pub_key );

    $encFC = file_get_contents( "FC/x_".$encFile.".enc", FILE_USE_INCLUDE_PATH );

    $encFC = base64_encode($encFC);

    return $encFC;
    }
Nei vari passaggi degli script non so se la codifica le 2 righe $encFC sono alternative o vanno messe tutte e 2 come nel primissimo script del mitico Marino51.

9) a riga di comando eseguo php _4_FattureInviaWsdl.php > _4_log.html ... ed ecco che iniziano i problemi che spero mi aiutate a risolvere, anche se l'errore 109 è probabile che sia per alcuni passaggi precedenti (come _cfProprietarioCifrato o il dubbio su GetEncFC($encFile). Ecco l'ultima parte di __TesseraSanitaria.log:
Codice:
[17-Jan-2017 16:29:19 Europe/Berlin] main _4_FattureInviaWsdl.php
[17-Jan-2017 16:29:19 Europe/Berlin] TEST RUN ***************
[17-Jan-2017 16:29:19 Europe/Berlin] name                   : Ottico PROVA
[17-Jan-2017 16:29:19 Europe/Berlin] login                  : A9AZOS61
[17-Jan-2017 16:29:19 Europe/Berlin] password               : Salve123
[17-Jan-2017 16:29:19 Europe/Berlin] cfProprietario         : PROVAX00X00X000Y
[17-Jan-2017 16:29:19 Europe/Berlin] cfProprietarioCifrato  : x42Ft28lh/e4WGpFQmpIrmwaXeii0e8k2F/59MHVLoyhSf//ZDrpTWsFFqZXlJgMq9+blw63F2UMy2IchdXBJn8j9AAVPwShVLsWZ9bv4cotqNJHxvBee4Y/O1r1G3MAm2/uH0NL8vgS5mfp11GCVwm1j63fpx+CcL/fjQHiLlk=
[17-Jan-2017 16:29:19 Europe/Berlin] piProprietario         : 98765432104
[17-Jan-2017 16:29:19 Europe/Berlin] pincodeInviante        : 5485370458
[17-Jan-2017 16:29:19 Europe/Berlin] pincodeInvianteCifrato : KeS5/QE2L6BxTAnSjydhe3kF050HNra3CuQM71Hf6Q9brJ7ymZXW9oWmXEHIu5XiYCf6HB4AGWAjMwLtEC5AZg3t5/xbP6nUB8+RWLgRqknpmy1Ytzc2ilAERg7a0asG4MJ4qFh/JORp8RooYrD0NLvKWVoo+Q/5gdBIAd/kj/E=
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined offset: 1 in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/Credenziali.php on line 137
[17-Jan-2017 16:29:19 Europe/Berlin] File trattato          : Fatture730_2016_completo.zip
[17-Jan-2017 16:29:19 Europe/Berlin] carico in memoria il file Fatture730_2016_completo.zip
[17-Jan-2017 16:29:19 Europe/Berlin] definisco il file wsdl InvioTelematicoSpeseSanitarie730p.wsdl
[17-Jan-2017 16:29:19 Europe/Berlin] definisco the soap server location https://invioSS730pTest.sanita.finanze.it/InvioTelematicoSS730pMtomWeb/InvioTelematicoSS730pMtomPort
[17-Jan-2017 16:29:19 Europe/Berlin] inizio trasferimento del file
[17-Jan-2017 16:29:19 Europe/Berlin] trasferimento terminato
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined property: stdClass::$protocollo in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 68
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined property: stdClass::$protocollo in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 87
[17-Jan-2017 16:29:19 Europe/Berlin] protocollo =
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined property: stdClass::$protocollo in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 88
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined property: stdClass::$dataAccoglienza in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 87
[17-Jan-2017 16:29:19 Europe/Berlin] dataAccoglienza =
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined property: stdClass::$dataAccoglienza in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 88
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined property: stdClass::$nomeFileAllegato in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 87
[17-Jan-2017 16:29:19 Europe/Berlin] nomeFileAllegato =
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined property: stdClass::$nomeFileAllegato in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 88
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined property: stdClass::$dimensioneFileAllegato in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 87
[17-Jan-2017 16:29:19 Europe/Berlin] dimensioneFileAllegato =
[17-Jan-2017 16:29:19 Europe/Berlin] PHP Notice:  Undefined property: stdClass::$dimensioneFileAllegato in /home/LinuxOhYeah/Documenti/php/730precompilato/ottico/_4_FattureInviaWsdl.php on line 88
[17-Jan-2017 16:29:19 Europe/Berlin] codiceEsito = 109
[17-Jan-2017 16:29:19 Europe/Berlin] descrizioneEsito = DATI PROPRIETARIO FORMALMENTE ERRATI
[17-Jan-2017 16:29:19 Europe/Berlin] idErrore = 17011716291975429
[17-Jan-2017 16:29:19 Europe/Berlin] done _4_FattureInviaWsdl.php
Se può servire posso postare _4_log.html o allegare tutti i file della cartella ottico in un file .7z. In caso anche il phpinfo() (a riga di comando php -i).

Se non erro codiceRegione, codiceAsl e codiceSSA servono solamente per gli accreditati. Oppure vanno inseriti anche quelli?

Non posso passare alla prova del _5_FattureInvioRisultati fino a che non ho risolto l'invio :) Comunque anche questo l'ho modificato da bat win a _5_FattureInvioRisultati.sh che se volete vi dico come l'ho fatto.

Dove ho sbagliato? Aiuto!!! :(
Grazie comunque!
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
sono tanti punti, cerco di vederli uno alla volta,
1) anch'io mi domandai che senso avesse quell'indirizzo,
preso da timore reverenziale misi l'indirizzo del sistema di test,
non l'ho mai più cambiato, in realtà viene utilizzato l'indirizzo che si trova in "credenziali",
nei vari script trovi
$SoapClientParam["location"] = $InvioTelematico;
che è l'indirizzo di test o quello di produzione in funzione della scelta presente nello stesso "credenziali"
non ho mai fatto prove con l'indirizzo presente come dal kit,
lascia quello che c'è eventualmente sei sempre in tempo a sostituirlo
ma se proprio vuoi, metti anche tu quello di test (per non sbagliare)
 

perseoclub

Utente Attivo
28 Nov 2015
83
0
6
Prendi con le pinze tutto ciò ti scrivo, perché non sono un programmatore e la mia è solo esperienza e un pizzico di fortuna (in pratica sei rovinato :D !!!).

1) Io ho settato il file .txt così ed ho inserito nelle colonne solo i dati che mi servivano. TotalEuro l'ho esportato in formato decimale (2 cifre) sempre.. per cui 10€ = 10.00

Nella prima colonna del ..completo.txt (da un csv) ho messo:
CODICE_FISCALE_16CIFRE_a;NUM_PROGRESSIVO_1;GG/MM/2016;00.00;
CODICE_FISCALE_16CIFRE_b;NUM_PROGRESSIVO_2;GG/MM/2016;00.00;
CODICE_FISCALE_16CIFRE_c;NUM_PROGRESSIVO_3;GG/MM/2016;00.00;
.........

Invece ho ridefinito in questo modo il file Credenziali.php:

Codice:
define ("_ColFiscalCode",   0);
define ("_ColDocNumber",    1);
define ("_ColDocDate",      2);
define ("_ColTotalEuro",    3);

2) Per quanto riguarda il file WDLS non credo tu lo debba editare perché gli ENDPOINT li puoi settare nel file Credenziali.php copiandoli dal KIT (cartella di riferimento).. Ma su questo sapranno esserti di aiuto gli altri esperti del forum.


3) Codice ufficio: 604-120-010011.. dovrebbe essere il codice identificativo dell'ottico (i primi due numeri credo si riferiscano a codici di regione e di branca.. o qualcosa di simile..).


4) Per quanto riguarda la criptazione del CF ti allego un piccolo script che a me funziona perfettamente: "cifratura.php"
Codice:
<?php

// il codice fiscale di prova

$cf = "CCSRMO77A09H501E";

echo encryptString( $cf );


function encryptString($clearText)
{
  $keyFile=fopen("FC/_sanitelCF.cer","r");
  $publicKey=fread($keyFile,8192);
  fclose($keyFile);

  openssl_get_publickey($publicKey);
  openssl_public_encrypt($clearText,$cryptText,$publicKey);
  return(base64_encode($cryptText));
}

?>
Copia il tuo CF nella variabile $cf ed eseguilo da localhost. Ti restituisce l'output con il CF cifrato. Te lo copi e hai finito!


5) per tutto il resto non so che dirti.. Ma ti aiuteranno certamente!
 

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
2) il mio file csv conteneva tante colonne,
i "define" presenti in credenziali, mi hanno permesso di scegliere le colonne, senza modificare il csv
giusto che ciascuno le adatti al proprio csv come hai fatto
ti suggerirei di lasciare le colonne "vuote", compilandole solo con zeri senza modificare lo script (unico che le usa)
perché possono essere usate quando ci siano nella fattura/scontrino voci non detraibili ( a me capita )
a me risulta che si debba indicare il totale del documento suddividendo le voci
controlla piuttosto come le voci di costo vengono inserite nel xml e con quale codice di spesa
 

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
3) si,
io ho la colonna "0" con il nome del "cittadino",
quindi comportati nella maniera che preferisci, inserendo 1 colonna nel csv o modificando i "define"
 

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
4) prova con queste definizioni,
PHP:
    define ("_name",                   "TEST OTTICO");

    define ("_user",                   "A9AZOS61");
    define ("_psw",                    "Salve123");

    define ("_networkUser",            "");
    define ("_networkPsw",             "");

    define ("_cfProprietario",         "PROVAX00X00X000Y");
    define ("_cfProprietarioCifrato",  "Ix4OzmfPxB0TTwS6+Hc0enwIhMtunRUkB4CjlDDDns5pCy2iZJ4Qxy+C/X8mMpLRz37tOXnklkkPml5Di32wtQlXpCL2qais/ZjSmwwLldUFvxQPRrwsOSgbH0yK3n+cfgXHbuyTFmjKBAT1dkc5xJ4sTW6qPlaMEIJIevQXvrQ=");

    define ("_piProprietario",         "98765432104");

    define ("_pincodeInviante",        "5485370458");
    define ("_pincodeInvianteCifrato", "KeS5/QE2L6BxTAnSjydhe3kF050HNra3CuQM71Hf6Q9brJ7ymZXW9oWmXEHIu5XiYCf6HB4AGWAjMwLtEC5AZg3t5/xbP6nUB8+RWLgRqknpmy1Ytzc2ilAERg7a0asG4MJ4qFh/JORp8RooYrD0NLvKWVoo+Q/5gdBIAd/kj/E=");
Codice ufficio... provo a cercare più tardi nella ... "cartografia" più che nella "documentazione"

ricorda che lo user, _cfProprietario, _piProprietario e _pincodeInviante sono propri del soggetto ed in fase di invio vengono sempre controllati, quindi devono essere congruenti
 

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
5) l'errore è generato dall'istruzione che recupera il protocollo dalla riga di comando
nel tuo comando hai reindirizzato l'output, può essere che "$argv" non è stato visto vuoto e quindi ha generato errore
commenta la riga incriminata
 

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
6) se ti serve criptare qualche "codice" extra (vedi il cf proprietario),
puoi inserire il file nella stessa cartella e lo ritrovi criptato per l'uso
 

LinuxOhYeah

Utente Attivo
26 Nov 2016
188
7
18
Nella prima colonna del ..completo.txt (da un csv) ho messo:
CODICE_FISCALE_16CIFRE_a;NUM_PROGRESSIVO_1;GG/MM/2016;00.00;
Anche quello è un metodo :)
o ho la colonna "0" con il nome del "cittadino",
Ok, ora ho capito che inizia dalla posizione 0. :)
a me risulta che si debba indicare il totale del documento suddividendo le voci
Sapevo che bisognava mettere solamente il totale per ogni tipologia di voce. Intanto non si inviano la descrizione della voce.
controlla piuttosto come le voci di costo vengono inserite nel xml e con quale codice di spesa
Si me lo sono dimenticato di dirlo. Per gli ottici sono tipo AD
PHP:
$tipoSpesa = $voceSpesa->addChild('tipoSpesa', 'AD');
4) Per quanto riguarda la criptazione del CF ti allego un piccolo script che a me funziona perfettamente: "cifratura.php"
Per ora va bene quello inziale, ma se si usa solo php è un buon metodo, che se non erro era in qualche post. Grazie :)
Ovviamente io non in localhost ma a riga di comando php cifratura.php. Magari è comodo avere il cf come argomento quindi
Codice:
php cifratura.php?cf=codicefiscale
 

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
8) confermo che il "codice", qualunque esso sia, va criptato e poi codificato "base64_encode"
quindi dipende da quello che ha fatto il batch che ha criptato i codici
io avevo usato il batch con openssl (per stare nella regola indicata da loro) e la codifica in php, puoi scegliere il meglio per te