Forum » Programiranje » Davčne blagajne
Davčne blagajne
theanswer3 ::
Super končno tema o davčnih blagajnah. Tale povezava s strežnikom mi bo živce pobrala. Mi bi lahko en "po domače" razložil kako poteka ta povezava. Če prav razumem imamo mi neko podpisano XML datoteko in javni ključ, ki ga dobimo na njihovi strani ("test-tls.cer") Kaj moramo sedaj torej naresti da se povezava vzpostavi in da dobim odgovor nazaj. Delal bi v C# in bi rabil vsaj neko ogrodje kako začeti. Drugi certifikati tu ne pridejo več vpoštev kajne, ker je XML že podpisan se moramo mi le še prepričati če je strežnik na drugi strani res "pravi" kar preverimo z javnim ključem.
PrimozHisof ::
C koda, ki je ne prvi strani je OK. Chuck Borris :: danes, 11:08:1
Torej za Windows mora biti NET Framework 4.5 (vsaj Windows 7) / Visual Studio 2012 ali novejši?
To pa zaradi "security protokola", ki mora biti TLS 1.2. Tls 1.0 ne dela.
Torej za Windows mora biti NET Framework 4.5 (vsaj Windows 7) / Visual Studio 2012 ali novejši?
To pa zaradi "security protokola", ki mora biti TLS 1.2. Tls 1.0 ne dela.
Zgodovina sprememb…
- spremenil: PrimozHisof ()
Spura ::
MH0 ::
veqlargh ::
Čist tako, je kdo poikusil s SOAP-UI-jem? Predvidevam, da rabim pridobit razvijalski certifikat, oni objavljeni niso dovolj. Ker handshake error takisto javi.
MH0 ::
theanswer3 je izjavil:
Kako pa to uvozis?
mmc.exe in dodaš Snap-in za certifikate za local computer. Tam pa uvoziš med trusted root.
theanswer3 ::
Še komu dela probleme njihova koda za izračun ZOI pri določenih certifikatih. Eni delajo, pri nekaterih pa ven meče System.NullRefferenceException object refference not set to an instance of an object pri vrstici:
cspParameters.KeyContainerName = rsaCSP.CspKeyContainerInfo.KeyContainerName;
cspParameters.KeyContainerName = rsaCSP.CspKeyContainerInfo.KeyContainerName;
Chuck Borris ::
@theanswer3: morda nimaš podanega digitalnega podpisa?
Jaz pa imam problem z digitalnim podpisom xml-ja po sha256 metodi...
Service javlja error: S003 - Digitalni podpis ni ustrezen
Ima morda kdo primer, kako podpisati xml, da bo service sprejel?
Jaz pa imam problem z digitalnim podpisom xml-ja po sha256 metodi...
Service javlja error: S003 - Digitalni podpis ni ustrezen
Ima morda kdo primer, kako podpisati xml, da bo service sprejel?
vofra ::
gospodje, ki se ukvarjate z davcnimi blagajnami, ali veste mogoce za kaksno resitev
- imamo legacy ERP na ne-Windows setverju, v sklopu tega blagajna, klienti na Windows PC
- bi rabil command line program (Windows)za komunikacijo s FURS in pripravo QR kode
na osnovi podatkov, ki bi mu jih poslal s serverja in ga pognal na PC - to imamo reseno
- iz PC bi pobral podatke od FURS in QR kodo - to imamo reseno
Za Furs del posebej in QR posebej sem nasel neke resitve, vendar bi trajalo predolgo,
da bi 3x prenasal solato iz serverja na PC in obratno, saj na koncu fakturo spet posljem
na PC in tiskam
- imamo legacy ERP na ne-Windows setverju, v sklopu tega blagajna, klienti na Windows PC
- bi rabil command line program (Windows)za komunikacijo s FURS in pripravo QR kode
na osnovi podatkov, ki bi mu jih poslal s serverja in ga pognal na PC - to imamo reseno
- iz PC bi pobral podatke od FURS in QR kodo - to imamo reseno
Za Furs del posebej in QR posebej sem nasel neke resitve, vendar bi trajalo predolgo,
da bi 3x prenasal solato iz serverja na PC in obratno, saj na koncu fakturo spet posljem
na PC in tiskam
Stepox ::
NO so pa končno popustili glede TLS-ja (vsaj za nekaj časa).
Tale odgovor sem prej danes od davčne. Tako da sedaj lahko rabimo .net4.0. (preizkušeno že deluje)
Spoštovani,
Od včeraj je omogočena tudi uporaba tls verzij 1.0 in 1.1. Ti verziji bosta omogočeni do 30.6.2018. Iz varnostnega stališča priporočamo uporabo tls 1.2 oz. čimprejšnji prehod na to verzijo.
Lep pozdrav, MM.
REPUBLIKA SLOVENIJA
MINISTRSTVO ZA FINANCE
Finančna uprava Republike Slovenije
Generalni finančni urad
Urad za informatiko
Tale odgovor sem prej danes od davčne. Tako da sedaj lahko rabimo .net4.0. (preizkušeno že deluje)
Spoštovani,
Od včeraj je omogočena tudi uporaba tls verzij 1.0 in 1.1. Ti verziji bosta omogočeni do 30.6.2018. Iz varnostnega stališča priporočamo uporabo tls 1.2 oz. čimprejšnji prehod na to verzijo.
Lep pozdrav, MM.
REPUBLIKA SLOVENIJA
MINISTRSTVO ZA FINANCE
Finančna uprava Republike Slovenije
Generalni finančni urad
Urad za informatiko
Zgodovina sprememb…
- spremenilo: Stepox ()
vuego ::
Imam implementirano v Free Pascalu/Lazarus, kot .dll/.so in .exe.
Stvar ni nezahtevna, sistem je precej zaprt. Pohvalno pa je, da so končno šaltali na SHA256
Stvar ni nezahtevna, sistem je precej zaprt. Pohvalno pa je, da so končno šaltali na SHA256
PrimozHisof ::
MH0 ::
Na koncu bodo najpametnejši tisti, ki čakajo in ne tisti, ki smo na vse kriplje uspešno skomunicirali s FURS-om. :-)
grandibal ::
Živjo, jaz imam tole v Delphi XE3, ampak mi ne deluje, IdHTTP1.Post vrne 404 Not Found napako.
Ugibam, da je problem na strani FURSa, če pa kdo najde kakšno napako v kodi, pa bom zelo vesel.
Na formi imam indy komponento IdHTTP in OpenSSL handler komponento IdSSLIOHandlerSocketOpenSSL1.
Pri IdSSLIOHandlerSocketOpenSSL1 imam SSLVersions obkljukan samo [sslvTLSv1_2], ostalo pa vse nastavim v kodi.
Zraven sta še 2 memo komponenti, mInput vsebuje xml echo primer iz tehnične dokumentacije, moutput pa naj bi prikazal response.
Koda:
Sem poskusil tudi tako, da sem WSDL uvozil z WSDL Importerjem (moral sem v originalni WSDL prekopirati del iz XSD scheme), potem pa klical direktno echo funkcijo,
ampak mi isto javi Not Found, ali pa v kakšnem primeru napako v podpori varnega protokola.
Ugibam, da je problem na strani FURSa, če pa kdo najde kakšno napako v kodi, pa bom zelo vesel.
Na formi imam indy komponento IdHTTP in OpenSSL handler komponento IdSSLIOHandlerSocketOpenSSL1.
Pri IdSSLIOHandlerSocketOpenSSL1 imam SSLVersions obkljukan samo [sslvTLSv1_2], ostalo pa vse nastavim v kodi.
Zraven sta še 2 memo komponenti, mInput vsebuje xml echo primer iz tehnične dokumentacije, moutput pa naj bi prikazal response.
Koda:
procedure TForm2.GetXMLWithStreams; var request:TIdHTTPRequest; response:TIdHTTPResponse; streamInput:TMemoryStream; streamOutput:TStream; requestQuery:String; begin try streamOutput := TMemoryStream.Create; streamInput := TMemoryStream.Create; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile := 'C:\Certifikati\test-tls.cer'; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := TIdSSLVersion.sslvTLSv1_2; IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1; request := TIdHTTPRequest.Create(IdHTTP1); requestQuery:='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fu="http://www.fu.gov.si/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">'+ '<soapenv:Body>'+ '<fu:EchoRequest>test echo</fu:EchoRequest>'+ '</soapenv:Body>'+ '</soapenv:Envelope>'; mInput.Lines.Add(requestQuery); minput.Lines.SaveToStream(streamInput); streamInput.Position := 0; request.Source := streamInput; request.Method := 'POST'; request.Accept := 'text/xml'; request.Connection := 'KeepAlive'; request.ContentType := 'text/xml; charset=utf-8'; // 'application/soap+xml' request.CustomHeaders.Add('SOAPAction: /echo'); IdHTTP1.Post('https://blagajne-test.fu.gov.si:9002/v1/cash_registers', streamInput); response := IdHTTP1.Response; streamOutput := response.ContentStream; streamOutput.Position := 0; moutput.Lines.LoadFromStream(streamOutput); finally streamInput.Free; streamOutput.Free; end; end;
Sem poskusil tudi tako, da sem WSDL uvozil z WSDL Importerjem (moral sem v originalni WSDL prekopirati del iz XSD scheme), potem pa klical direktno echo funkcijo,
ampak mi isto javi Not Found, ali pa v kakšnem primeru napako v podpori varnega protokola.
Zgodovina sprememb…
- spremenil: grandibal ()
Chuck Borris ::
@MH0: vedno je tako ;)
Torej... je že komu uspelo oddati poslovni prostor? (še posebej me zanima, če je komu uspelo v C#)
Meni v VisualStudiu 1012 C# .net4.5 service zavrača xml s sporočilom: S003 - Digitalni podpis ni ustrezen
Podpisujem pa na takle način: http://stackoverflow.com/questions/2900...
Torej... je že komu uspelo oddati poslovni prostor? (še posebej me zanima, če je komu uspelo v C#)
Meni v VisualStudiu 1012 C# .net4.5 service zavrača xml s sporočilom: S003 - Digitalni podpis ni ustrezen
Podpisujem pa na takle način: http://stackoverflow.com/questions/2900...
pix ::
@grandibal
meni echo dela v EX6 preko wsdl importerja, ostalo pa ne, mislim problem imam s tipi, če ga pa ročno kličem kot ti, pa dobim isto napako 404.
Sploh mi ni jasno...
meni echo dela v EX6 preko wsdl importerja, ostalo pa ne, mislim problem imam s tipi, če ga pa ročno kličem kot ti, pa dobim isto napako 404.
Sploh mi ni jasno...
Stepox ::
Chuck Borris je izjavil:
@MH0: vedno je tako ;)
Torej... je že komu uspelo oddati poslovni prostor? (še posebej me zanima, če je komu uspelo v C#)
Jaz sem poslovni prostor oddal (delam v C#), vendar dobim nazaj odgovor (podpisan) da struktura ni pravilna ("Sporočilo ni v skladu s shemo XML").
Preveril sem vse ampak mislim da nekaj ne štima pri njih. Tudi format datuma (element name="DateTime" type="xs:dateTime"...) je drugačen kot pri računu. DA ne govorim da pri poslovnem prostoru ni hederja od ovojnice ("soapenv:Header"), ki pri računu je.
Zgodovina sprememb…
- spremenilo: Stepox ()
Chuck Borris ::
Chuck Borris je izjavil:
@MH0: vedno je tako ;)
Torej... je že komu uspelo oddati poslovni prostor? (še posebej me zanima, če je komu uspelo v C#)
Jaz sem poslovni prostor oddal (delam v C#), vendar dobim nazaj odgovor (podpisan) da struktura ni pravilna ("Sporočilo ni v skladu s shemo XML").
Preveril sem vse ampak mislim da nekaj ne štima pri njih. Tudi format datuma (element name="DateTime" type="xs:dateTime"...) je drugačen kot pri računu. DA ne govorim da pri poslovnem prostoru ni hederja od ovojnice ("soapenv:Header"), ki pri računu je.
Zanimivo... meni pa tudi če uvozim njihov primer http://datoteke.durs.gov.si/dpr/files/e...
javi, da podpis ni ustrezen...
Chuck Borris ::
POPRAVEK: če uvažam njihov xml primer - as is (se pravi, s priloženim podpisom) - ga uvozi brez napak...
PrimozHisof ::
veqlargh ::
Torej nobenmu ni uspelo z uporabo SOAP-UI-ja echota uspešno skoz spravit? Meni vedno javlaj handshake error. Čeprav sem lepo naštimal certifikat in geslo, ki so mi ga poslali. Čudno, na drugih secure ws-jih dela OK.
Drugače pa resno razmišljam, da ne bom pisal klasičnega WS klienta v javi preko JAX-WS-ja, ker ne vem, ako se mi da zajebavat s podpisom v tistem kontekstu ampak da bi naredil klasičen socket klient, ki pošlje generiran SOAP request. Odvisno kaj vse mi bo odgovor poslal in koliko mi je pomemben. En simpl parser za odgovor je hitro napisan. Podpisovanje vsebine requesta mi je uspelo in validacija tudi. No, bom videl, kaj bo ko bo šlo čez :) Z WS security pa se to hitro zakomplicira, če se grem JAX-WS. No, bom videl.
Drugače pa resno razmišljam, da ne bom pisal klasičnega WS klienta v javi preko JAX-WS-ja, ker ne vem, ako se mi da zajebavat s podpisom v tistem kontekstu ampak da bi naredil klasičen socket klient, ki pošlje generiran SOAP request. Odvisno kaj vse mi bo odgovor poslal in koliko mi je pomemben. En simpl parser za odgovor je hitro napisan. Podpisovanje vsebine requesta mi je uspelo in validacija tudi. No, bom videl, kaj bo ko bo šlo čez :) Z WS security pa se to hitro zakomplicira, če se grem JAX-WS. No, bom videl.
Zgodovina sprememb…
- spremenil: veqlargh ()
Strato5 ::
Živijo, spet jaz :)
Torej generacijo ZOI-ja in podpis sem zrihtal (mislim vsaj) v PHP-ju...
zdaj ko pa hočem poslat podatke o računu sem pa spet pri istem problemu kot sem ga mel z echo metodo... "napačni parametri vnosa" pa vse kar sem nardil je, da sem soapaction zamenjal na invoices in filename na testni xml, ki ga majooni priloženega pri navodilih.
koda, ki jo uporabljam:
Vidi kdo kako napako, ki jemeni ušla?
Hvala za pomoč :)
Torej generacijo ZOI-ja in podpis sem zrihtal (mislim vsaj) v PHP-ju...
zdaj ko pa hočem poslat podatke o računu sem pa spet pri istem problemu kot sem ga mel z echo metodo... "napačni parametri vnosa" pa vse kar sem nardil je, da sem soapaction zamenjal na invoices in filename na testni xml, ki ga majooni priloženega pri navodilih.
koda, ki jo uporabljam:
<?php $url = 'https://blagajne-test.fu.gov.si:9002/v1/cash_registers'; $Cert = '/Users/matija/Desktop/TestDB/echo/test-tls.cer'; $xml_string = file_get_contents('/Users/matija/Desktop/TestDB/racun/PrimerDokumentacijaRacunXmlPodpisan.xml'); $header = array( "Content-Type: text/xml", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: /invoices" ); $conn = curl_init(); $settings = array( CURLOPT_URL => $url, CURLOPT_FRESH_CONNECT => true, CURLOPT_CONNECTTIMEOUT_MS => 3000, CURLOPT_TIMEOUT_MS => 3000, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => 1, CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $xml_string, // secure this! CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_CAINFO => $Cert ); curl_setopt_array($conn, $settings); if ($rawResponse = curl_exec($conn)) { echo"\n"; print_r($rawResponse); } else { throw new Exception('CODECURL: ' . curl_error($conn)); } ?>
Vidi kdo kako napako, ki jemeni ušla?
Hvala za pomoč :)
beno95 ::
Super. Predvsem me veseli da FURS skrbi za razvijalce in odgovarja na vprašanja.
A ima morda FURS kako Q&A stran za razvijalce?
A ima morda FURS kako Q&A stran za razvijalce?
MH0 ::
Danes je na FURS-u primer DEMO aplikacije v C#.
Kaj sem rekel. Na koncu bodo pametni tisti, ki so počakali. :-)
Najbrž ostanem kar na JSON.
Zgodovina sprememb…
- spremenilo: MH0 ()
Stepox ::
Demo je sicer za .net 4.5. Njihov strežnik pa zopet ne deluje preko TLS 1.0.
Demo je pa tule: http://datoteke.durs.gov.si/dpr/files/e...
Demo je pa tule: http://datoteke.durs.gov.si/dpr/files/e...
Zgodovina sprememb…
- spremenilo: Stepox ()
Strato5 ::
Danes je na FURS-u primer DEMO aplikacije v C#.
ja in ko sem probal odpret solution v Visual studio 2010, mi je javilo da je projekt nekompatibilen z mojo verzijo VS.
Potem lahko odpremo ta projekt samo v VS 2013? malo glupo no ... ampak jaz itak delam v PHP in SOAP
se že kar lepo približujem neki uporabni verziji, zaj morem pogruntat kaj ga zmoti da mi javlja da sporočilo ni v skladu s shemo, če mi proXsign servis javi vse ok... njihov primer dokumenta mi pa pol javi sistemsko napako pri obdelavi
theanswer3 ::
V 2012 tud odpreDanes je na FURS-u primer DEMO aplikacije v C#.
ja in ko sem probal odpret solution v Visual studio 2010, mi je javilo da je projekt nekompatibilen z mojo verzijo VS.
Potem lahko odpremo ta projekt samo v VS 2013? malo glupo no ... ampak jaz itak delam v PHP in SOAP [:)
Zgodovina sprememb…
- spremenilo: theanswer3 ()
Strato5 ::
Ima kdo čisto po naključju slučajno pri roki PHP kodo za generiranje tega podpisa, ki ga hočejo met v XMLu za davčno potrjevanje računov? ker sem poskušal že na 3 različne načine pa mi vedno vrača, da digitalni podpis ni ustrezen. Sem poslal tudi njim vprašanje ampak do zdaj so ble rešitve iz te teme vedno hitrejše kot njihova pomoč uporabnikom
theanswer3 ::
Kdo ve zakaj mi ob oddaji računa vrže napako S006 "podatki o poslovnem prostoru niso posredovani" Oddajam podpisan XML za oddajo računa in ne za prijavo prostora.
veqlargh ::
Samo update glede SOAP-UI-ja, če bo komu prav prišlo. Ko nastavljate SSL certifikaet obvezno na dnju obkljukajte "Client authentication". Drugače niti uvozi ne le-tega. Potem pa, vsaj echo, dela lepo :)
Stepox ::
theanswer3 je izjavil:
Kdo ve zakaj mi ob oddaji računa vrže napako S006 "podatki o poslovnem prostoru niso posredovani" Oddajam podpisan XML za oddajo računa in ne za prijavo prostora.
Jaz imam isto težavo pri oddaji računa, čeprav sem predhodno oddal poslovni prostor in dobil potrditev z njihovega strežnika. Sem jim poslal mail, če mi bodo kaj odgovorili bom posredoval.
Strato5 ::
theanswer3 je izjavil:
Kdo ve zakaj mi ob oddaji računa vrže napako S006 "podatki o poslovnem prostoru niso posredovani" Oddajam podpisan XML za oddajo računa in ne za prijavo prostora.
najprej moreš posredovat podatke o poslovnem prostoru, šele nato lahko pošiljaš račune, ki so "izdani v tistem poslovnem prostoru" oz drugače povedano, ne moreš izdati računa v poslovnem prostoru, ki ga prej nisi prijavil.
Meni se zdi da se najprej preverijo vse ostale napake in šele nato podpis tak da se ti še vedno lahko zgodi, da ti pri podpisu zavrnejo, ker jaz sem dobil isto napako o poslovnem prostoru, pa nisem mel veljavnega podpisa noter, ko sem pa poskušal poslati podatke o poslovnem prostoru, ki so bli podpisani, mi je pa zavrnilo, češ da digitalni podpis ni ustrezen.
theanswer3 ::
Ja isto se mi zgodi kot Stepox-u. Oddam poslovni prostor in dobim odgovor, potem pošljem pa račun in pravi da podatki o poslovnem prostoru niso bili posredovani
Strato5 ::
No ker od FURSa zaenkrat še nimam odgovora, se še enkrat obračam k vam strokovnjakom po pomoč... namreč ko pošiljam podatke o poslovnem prostoru, dobivam odgovor, da digitalni podpis ni ustrezen. Poskusil sem vse kar sem se spomnil pa ni nič pomagalo ...
moja koda za podpisovanje:
moja koda za podpisovanje:
<?php date_default_timezone_set('Europe/Ljubljana'); //------------------------- VARIABLES $filename = 'testPE_signed.xml'; $file_path = '/Users/matija/Desktop/Podpisovanje/Podpisovanje2/'; $besediloPEXML = file_get_contents("/Users/matija/Desktop/Podpisovanje/Podpisovanje2/testPE.xml"); $certFileContents = file_get_contents("/Users/matija/Desktop/Podpisovanje/Podpisovanje2/10041052-1.p12"); openssl_pkcs12_read($certFileContents, $raw_cert, "Geslo123#"); $tempxml = new DOMDocument('1.0', 'UTF-8'); $tempxml -> loadXML($besediloPEXML); $besediloPEXML = $tempxml -> saveXML(); $PEXML = new DOMDocument('1.0', 'UTF-8'); $PEXML->preserveWhiteSpace = false; $PEXML->formatOutput = true; $PEXML->loadXML($besediloPEXML); $PEXML->documentElement->setAttribute('Id', 'test'); $canonical = $PEXML->C14N(false, true); $signatureDigest = base64_encode(hash('sha256', $canonical, true)); //addsignatureNode $rootElem = $PEXML->documentElement; $sigNode = $rootElem->appendChild(new DOMElement('Signature')); $sigNode->setAttribute('xmlns', 'http://www.w3.org/2000/09/xmldsig#'); $signedInfoNode = $sigNode->appendChild(new DOMElement('SignedInfo')); $canonMethodNode = $signedInfoNode->appendChild(new DOMElement('CanonicalizationMethod')); $canonMethodNode->setAttribute('Algorithm', 'http://www.w3.org/TR/2001/REC-xml-c14n-20010315'); $signatureMethodNode = $signedInfoNode->appendChild(new DOMElement('SignatureMethod')); $signatureMethodNode->setAttribute('Algorithm', 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'); $referenceNode = $signedInfoNode->appendChild(new DOMElement('Reference')); $referenceNode->setAttribute('URI', '#test'); $transformsNode = $referenceNode->appendChild(new DOMElement('Transforms')); $tr1Node = $transformsNode->appendChild(new DOMElement('Transform')); $tr1Node->setAttribute('Algorithm', 'http://www.w3.org/2000/09/xmldsig#enveloped-signature'); $digestMethodNode = $referenceNode->appendChild(new DOMElement('DigestMethod')); $digestMethodNode->setAttribute('Algorithm', 'http://www.w3.org/2001/04/xmlenc#sha256'); $referenceNode->appendChild(new DOMElement('DigestValue', $signatureDigest)); $signedInfoNode = $PEXML->getElementsByTagName('SignedInfo')->item(0); $sigNodeXMLString = $signedInfoNode->C14N(false, true); openssl_sign($sigNodeXMLString, $signature, $raw_cert['pkey'], OPENSSL_ALGO_SHA256); $signatureValue = base64_encode($signature); $sigNode = $PEXML->getElementsByTagName('Signature')->item(0); $sigNode->appendChild(new DOMElement('SignatureValue', $signatureValue)); $certData = openssl_x509_parse($raw_cert['cert']); $sigNode = $PEXML->getElementsByTagName('Signature')->item(0); $keyInfoNode = $sigNode->appendChild(new DOMElement('KeyInfo')); $x509DataNode = $keyInfoNode->appendChild(new DOMElement('X509Data')); $x509IssuerSerialNode = $x509DataNode->appendChild(new DOMElement('X509IssuerSerial')); $issuer = $certData['issuer']; $temp = array(); foreach ($issuer as $key => $val) { $temp[] = $key . '=' . $val; } $issuerString = implode(',', $temp); $x509IssuerSerialNode->appendChild(new DOMElement('X509IssuerName', $issuerString)); $x509IssuerSerialNode->appendChild(new DOMElement('X509SerialNumber', $certData['serialNumber'])); $x509DataNode->appendChild(new DOMElement('X509SubjectName', trim(str_replace("/", " ", $certData['name'])))); $soapNs = 'SOAP-ENV'; $soapNsUri = 'http://schemas.xmlsoap.org/soap/envelope/'; $PEXML->createAttributeNS($soapNsUri, $soapNs); $envelope = new DOMElement("{$soapNs}:Envelope", null, $soapNsUri); $body = new DOMElement("{$soapNs}:Body", null, $soapNsUri); #take reference so we don't loose it $rootNode = $PEXML->documentElement; $PEXML->replaceChild($envelope, $rootNode); $envelope->appendChild($body); $body->appendChild($rootNode); $PEXML->save($file_path.$filename); print_r($PEXML->saveXML()); ?>
Stepox ::
No ker od FURSa zaenkrat še nimam odgovora, se še enkrat obračam k vam strokovnjakom po pomoč... namreč ko pošiljam podatke o poslovnem prostoru, dobivam odgovor, da digitalni podpis ni ustrezen. Poskusil sem vse kar sem se spomnil pa ni nič pomagalo ...
PHP-ja sicer ne poznam, ampak kot izgleda podpisuješ samo podatke o računu. Podpisati moreš celoten xml dokument skupaj z ovojnico.
Meni je sedaj uspelo vse poslati prostor in račun, dobim tudi odgovor z UniqueInvoiceID-jem. Je pa ena stvar čudna, če pošljem gor isti račun večkrat dobim vsakokrat drugi UniqueInvoiceID. To mi ne štima, po moje bi moral strežnik vrniti isti ID ali pa napako da je bil ta račun že poslan. Je kdo to že poizkusil?
Zgodovina sprememb…
- spremenilo: Stepox ()
Strato5 ::
Heya
poskusil sem vnaprej dodat ovojnico in šele nato vse skupaj podpisat in tudi pri tem sem poskusil da pri kalkulaciji podpisa vzamem not celoten dokument al pa samo businessPremiseRequest pa v nobenem primeru ni šlo ok skoz...
drugače pa je neumno podpisovat ovojnico, ker je ideja SOAP klica, da pripraviš xml datoteko (brez ovojnice), ki ji potem ponavadi SOAP klient (ki ga pač uporabljaš) zavije sporočilo v ovojnico in ga pošlje prejemniku. ČE bi podpisoval ovojnico, bi (po mojih izkušnjah vsaj) "signature" tag bil znotraj ovojnice, ne pa znotraj businessPremiseRequesta. Z drugimi besedami, ovojnica ni del sporočila oz. nebi smela biti... je pa res da bogsigavedi kak so na FURS strani spisali parser za celo zadevo...
Še kak drug predlog za podpisovanje?
poskusil sem vnaprej dodat ovojnico in šele nato vse skupaj podpisat in tudi pri tem sem poskusil da pri kalkulaciji podpisa vzamem not celoten dokument al pa samo businessPremiseRequest pa v nobenem primeru ni šlo ok skoz...
drugače pa je neumno podpisovat ovojnico, ker je ideja SOAP klica, da pripraviš xml datoteko (brez ovojnice), ki ji potem ponavadi SOAP klient (ki ga pač uporabljaš) zavije sporočilo v ovojnico in ga pošlje prejemniku. ČE bi podpisoval ovojnico, bi (po mojih izkušnjah vsaj) "signature" tag bil znotraj ovojnice, ne pa znotraj businessPremiseRequesta. Z drugimi besedami, ovojnica ni del sporočila oz. nebi smela biti... je pa res da bogsigavedi kak so na FURS strani spisali parser za celo zadevo...
Še kak drug predlog za podpisovanje?
Zgodovina sprememb…
- spremenilo: Strato5 ()
PrimozHisof ::
Kar se tiče Tls 1.0 in Windows XP povezava še vedno ne deluje.
Deluje, če uporabljaš Tls 1.0 na Windows 7 ali 8. Očitno je Framework 4.0 le premalo.
Deluje, če uporabljaš Tls 1.0 na Windows 7 ali 8. Očitno je Framework 4.0 le premalo.
prlinjo ::
Heya
poskusil sem vnaprej dodat ovojnico in šele nato vse skupaj podpisat in tudi pri tem sem poskusil da pri kalkulaciji podpisa vzamem not celoten dokument al pa samo businessPremiseRequest pa v nobenem primeru ni šlo ok skoz...
drugače pa je neumno podpisovat ovojnico, ker je ideja SOAP klica, da pripraviš xml datoteko (brez ovojnice), ki ji potem ponavadi SOAP klient (ki ga pač uporabljaš) zavije sporočilo v ovojnico in ga pošlje prejemniku. ČE bi podpisoval ovojnico, bi (po mojih izkušnjah vsaj) "signature" tag bil znotraj ovojnice, ne pa znotraj businessPremiseRequesta. Z drugimi besedami, ovojnica ni del sporočila oz. nebi smela biti... je pa res da bogsigavedi kak so na FURS strani spisali parser za celo zadevo...
Še kak drug predlog za podpisovanje?
Pozdrav iz Hrvatske!
Matija, meni je isto bilo čudno, ali stvarno se mora prije staviti SOAP. S tim da moraš potpisivati element BusinessPremiseRequest. Nisam upoznat s PHP-om pa ti ne mogu pomoći kako bi se to izvelo u njemu...
Ako ti šta pomaže, evo primjer mojeg nepotpisanog XML-a, koji prolazi kad se potpiše element BusinessPremiseRequest:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fu="http://www.fu.gov.si/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#"> <soapenv:Body> <fu:BusinessPremiseRequest Id="data"> <fu:Header> <fu:MessageID>4e64a93a-40fa-4c02-afb1-488534b85e4c</fu:MessageID> <fu:DateTime>2015-07-17T09:30:47Z</fu:DateTime> </fu:Header> <fu:BusinessPremise> <fu:TaxNumber>10051937</fu:TaxNumber> <fu:BusinessPremiseID>TRGOVINA1</fu:BusinessPremiseID> <fu:BPIdentifier> <fu:RealEstateBP> <fu:PropertyID> <fu:CadastralNumber>365</fu:CadastralNumber> <fu:BuildingNumber>12</fu:BuildingNumber> <fu:BuildingSectionNumber>3</fu:BuildingSectionNumber> </fu:PropertyID> <fu:Address> <fu:Street>Dunajska cesta</fu:Street> <fu:HouseNumber>24</fu:HouseNumber> <fu:HouseNumberAdditional>B</fu:HouseNumberAdditional> <fu:Community>Ljubljana</fu:Community> <fu:City>Ljubljana</fu:City> <fu:PostalCode>1000</fu:PostalCode> </fu:Address> </fu:RealEstateBP> </fu:BPIdentifier> <fu:ValidityDate>2015-09-10</fu:ValidityDate> <fu:SoftwareSupplier> <fu:TaxNumber>24564444</fu:TaxNumber> </fu:SoftwareSupplier> <fu:SpecialNotes>Primer prijave poslovnega prostora</fu:SpecialNotes> </fu:BusinessPremise> </fu:BusinessPremiseRequest> </soapenv:Body> </soapenv:Envelope>
Stepox ::
PrimozHisof je izjavil:
Kar se tiče Tls 1.0 in Windows XP povezava še vedno ne deluje.
Deluje, če uporabljaš Tls 1.0 na Windows 7 ali 8. Očitno je Framework 4.0 le premalo.
Framework 4.0 je dovolj. Za Windows XP pa je potrebno da namestiš "Cipher suite - KB3055973", dobiš pa ga tule https://www.microsoft.com/en-us/downloa... , doda ti nove AES standarde.
Sicer je namenjen Windows Posready 2009 ampak gre lepo tudi na ostale Windows XP serije.
Preverjeno pošiljanje deluje na Windows Posready 2009.
vuego ::
Soap ovojnica mora biti zraven zaradi namespace-ov (fu: je definiran v glavi) in kanonizacije. Brez tega ne gre.
Lahko pa probaš tako, da za osnovni element (BusinessPremiseRequest) ročno specificiraš ns in podajaš XML elemente brez pripone fu:
Lahko pa probaš tako, da za osnovni element (BusinessPremiseRequest) ročno specificiraš ns in podajaš XML elemente brez pripone fu:
Zgodovina sprememb…
- spremenil: vuego ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne - PHPOddelek: Programiranje | 6221 (1267) | vsepocenv |
» | C# davčno potrjevanjeOddelek: Programiranje | 4406 (3875) | windigo |
» | E-računOddelek: Programiranje | 7507 (4270) | ivanhoe5x |
» | PHP davčna blagajnaOddelek: Programiranje | 8123 (6147) | brble |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3185 (1915) | peterv6i |