Forum » Programiranje » Davčne blagajne
Davčne blagajne
![](https://static.slo-tech.com/stili/avatar_gray.gif)
prtenjam ::
Na win 8.1 telefonu deluje vse OK, kodo skenira pravilno in tudi vse podatke pravilno razbere (ZOI, davčno, datum in čas)
Matjaž Prtenjak
https://mnet.si
https://mnet.si
![](https://static.slo-tech.com/stili/avatar_gray.gif)
trstenjak ::
Popravek, začetek izdajanja digitalnih potrdil se je prestavil na 15. november, ker še niso uspeli dokončati portala za prevzemanje potrdil.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Tech2k ::
Imam težave pri skeniranju code128 ker jo skener ne prebere, najpej sem mislil da je predolga in sem jo razbil na tri vrstice vsaka ima svojo bar kodo pa je še vedno problem. Ali je za POS termalni priter 23 znakov še vedno preveč?
![](https://static.slo-tech.com/stili/avatar_gray.gif)
pix ::
Imam težave pri skeniranju code128 ker jo skener ne prebere, najpej sem mislil da je predolga in sem jo razbil na tri vrstice vsaka ima svojo bar kodo pa je še vedno problem. Ali je za POS termalni priter 23 znakov še vedno preveč?
meni dela ok na code128, pa si dal tiste kontrolke spredaj, 41,42,43... ali pa če so štiri kode 441,442,443...? Ampak na nobenem pos tiskalniku mi ni ratalo v eno spravit, minimalno v 2 pa do 6...
![](https://static.slo-tech.com/stili/avatar_gray.gif)
zipposi ::
Pozdrav vsem!
XML vprašanje glede izdaje računov - čemu služita tag ExemptVATTaxableAmount in NontaxableAmount?
V bistvu, kakšna je razlika če izdajatelj računa je ali pa ni DDV zavezanec?
XML vprašanje glede izdaje računov - čemu služita tag ExemptVATTaxableAmount in NontaxableAmount?
V bistvu, kakšna je razlika če izdajatelj računa je ali pa ni DDV zavezanec?
![](https://static.slo-tech.com/stili/avatar_gray.gif)
atlet ::
Si uspel rešiti podpis v PHP-ju?
Ok še eno vprašanje (upam da bom tole čimprej razrešil, ker mam počasi že občutek, da se mi meša)...
Torej dobil sem odgovor od FURSa glede tega digitalnega podpisa in odgovor se je glasil:
"namespace je potrebno navesti v envelope, v prilogi je primer pravilnega xml."
Priložena datoteka dejansko gre skoz če jo pposkusim poslati, kar pa me zanima je sledeče:
Kje je razlika med njihovo in mojo datoteko oziroma, kako/kje moram definirati namespace v Envelope?
Moja datoteka (NI OK):
<?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fu="http://www.fu.gov.si/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#"> <SOAP-ENV:Body> <fu:BusinessPremiseRequest Id="test"> <fu:Header> <fu:MessageID>2E1B49B0-F007-4AAB-9824-5B85FBD08BE7</fu:MessageID> <fu:DateTime>2015-09-15T10:41:04Z</fu:DateTime> </fu:Header> <fu:BusinessPremise> <fu:TaxNumber>10041052</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>Cankarjeva</fu:Street> <fu:HouseNumber>12</fu:HouseNumber> <fu:HouseNumberAdditional>A</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>1990-08-25</fu:ValidityDate> <fu:SoftwareSupplier> <fu:TaxNumber>42839521</fu:TaxNumber> </fu:SoftwareSupplier> </fu:BusinessPremise> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><Reference URI="#test"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><DigestValue>mFKM1Fc5i3UsIs1t2NVO7CdcaIE0y/pdSRIBR5gGOWI=</DigestValue></Reference></SignedInfo><SignatureValue>Gz350EuSHz8Cpet64vNxk7gLtdWEeXJXaymMIOFgJas3hnVsR0ND+8D+eNoWKtVuqcR3XeXMqVQAm3VekEjmdUhqqs0gegxJXVNFFIAylU9NnQ49Dn2Hgq5pvRvZ1TGT66xC/GKKKYqqXYLvR4IbYipMD2Xf1Sn8lgth7WL2aitAKNdkFVtjI1S/QAqh+IL/AZQEUlgT/6S7TuK8zzZNXm8n8YQWWUxavc8HNHSlJe73X9iSvHyoL8PNiuBRUw467GOgk+K9cMyu3ShpS6h8zRkrrYqHog3FhqKbWn+zCJwnc/vU7I115kYDNJQL2XA+jqXAm9cAIYNnKbAP98Y8Mw==</SignatureValue><KeyInfo><X509Data><X509IssuerSerial><X509IssuerName>C=SI,O=state-institutions,CN=Tax CA Test</X509IssuerName><X509SerialNumber>6272978640195208819</X509SerialNumber></X509IssuerSerial><X509SubjectName>C=SI O=state-institutions OU=DavPotRacTEST OU=10041052 serialNumber=1 CN=TESTNO PODJETJE 108</X509SubjectName></X509Data></KeyInfo></Signature></fu:BusinessPremiseRequest> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
njihova datoteka (JE OK):
<?xml version="1.0" encoding="utf-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fu="http://www.fu.gov.si/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#"> <SOAP-ENV:Body> <fu:BusinessPremiseRequest Id="test"> <fu:Header> <fu:MessageID>004464d8-8cd0-47a9-9445-9c28a1dd6230</fu:MessageID> <fu:DateTime>2015-09-18T08:07:55</fu:DateTime> </fu:Header> <fu:BusinessPremise> <fu:TaxNumber>10041052</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>Cankarjeva</fu:Street> <fu:HouseNumber>12</fu:HouseNumber> <fu:HouseNumberAdditional>A</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>1990-08-25</fu:ValidityDate> <fu:SoftwareSupplier> <fu:TaxNumber>42839521</fu:TaxNumber> </fu:SoftwareSupplier> </fu:BusinessPremise> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /><Reference URI="#test"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /><DigestValue>4Nbm+rDcS9VTvgh157wD87iVCNZ/E8yFRnnlaK6Huzg=</DigestValue></Reference></SignedInfo><SignatureValue>AlatazD7NTKiMTB3KkSzybbQsbvEDmK924dEh/OrbnH1SOFKIVwCAY7Uq/n4pBcyHgOTrps5HGMWj0YcFYxoCgvaPVDJM5uvZNhnrvNIotWHoFzyifVl2jNiZEuc/+iDJywDji+OOc5mFu/RL7aDIfjFrw99xM2rJui0CC8AiU/fVwDTNSsy0PW3iRIgwqsR8E+f90ByVY4xsYM3GQw66ET/Mo/QWG1O5vUQ3F5TkJE1O5/jw3k+m7FYMIFUqNRtlx0sOm4UfmEWY+69uQMp0QPm64wKydsbm1f5NiriHqj7llmTMl7e9ZMZCy8GH/15oNLSfgSimUaqLB6ASlkiig==</SignatureValue><KeyInfo><X509Data><X509IssuerSerial><X509IssuerName>CN=Tax CA Test, O=state-institutions, C=SI</X509IssuerName><X509SerialNumber>6272978640195208819</X509SerialNumber></X509IssuerSerial><X509SubjectName>CN=TESTNO PODJETJE 108, SERIALNUMBER=1, OU=10041052, OU=DavPotRacTEST, O=state-institutions, C=SI</X509SubjectName></X509Data></KeyInfo></Signature></fu:BusinessPremiseRequest> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Kje je razlika? Kako drugače je v njihovi datoteki definiran kak namespace kot pa v moji? ...
Enostaven program za fakturiranje -> www.quibi.net
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Strato5 ::
Si uspel rešiti podpis v PHP-ju?
Ja imam rešeno in mi zaenrkat deluje.
sicer trenutno imam nastavljeno verifypeer pa verifyhost oboje na false (nikjer ni explicitno rečeno, da je to obvezno).
Za testiranje je OK pa če mi ne uspe nič pogruntat glede tega, lahko grem tudi na produkcijo s temi nastavitvami (nisem pretirano paranoičen) :D
![](https://static.slo-tech.com/stili/avatar_gray.gif)
atlet ::
Kaj pa je bilo narobe, da ti je vračalo napako: "Digitalni podpis ni ustrezen"?
Si uspel rešiti podpis v PHP-ju?
Ja imam rešeno in mi zaenrkat deluje.
sicer trenutno imam nastavljeno verifypeer pa verifyhost oboje na false (nikjer ni explicitno rečeno, da je to obvezno).
Za testiranje je OK pa če mi ne uspe nič pogruntat glede tega, lahko grem tudi na produkcijo s temi nastavitvami (nisem pretirano paranoičen) :D
Enostaven program za fakturiranje -> www.quibi.net
![](https://static.slo-tech.com/stili/avatar_gray.gif)
veqlargh ::
atlet: 2015-09-15T10:41:04Z... Z je odveč. Vrž ven in poizkusi zopet. Mene je čas jebal (sem pozabil T dodajat) in mi je tud tako napako glupo metalo. Slab opis, lahko bi bolje to povedali kaj serje.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
MesecB ::
Tudi sam rabim malo pomoči.
Delam v php.
Pri invoices/register mi vedno javlja napako: S003 : Digitalni podpis ni ustrezen
Ne razumem kaj je potrebno podpisati: ovojnico, BusinessPremiseRequest, BusinessPremise ...
Hvala za nasvet oz. če mi kdo "posodi ta del kode" ?
Če bo špilalo seveda lahko nekaj primaknem za trud...
hvala.
Delam v php.
Pri invoices/register mi vedno javlja napako: S003 : Digitalni podpis ni ustrezen
Ne razumem kaj je potrebno podpisati: ovojnico, BusinessPremiseRequest, BusinessPremise ...
Hvala za nasvet oz. če mi kdo "posodi ta del kode" ?
Če bo špilalo seveda lahko nekaj primaknem za trud...
hvala.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
veqlargh ::
Saj piše, glavni element moraš, torej BusinessPremiseRequest. Ta ima Id=test... In tudi temu elementu moraš podpis dodat.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
MesecB ::
Hvala, sem imel tako, pa še vedno ne gre skozi: (S003 : Digitalni podpis ni ustrezen)
request
request
![](https://static.slo-tech.com/stili/avatar_gray.gif)
zipposi ::
![](https://static.slo-tech.com/stili/avatar_gray.gif)
atlet ::
Hvala, sem odstranil Z, vendar je napaka še vedno enaka. Podpisujem pa po teh navodilih: http://www.di-mgt.com.au/xmldsig2.html
CURLOPT_CAINFO => getcwd() . '/sitest-ca.pem', to dodaj, pa bi moralo delati.
atlet: 2015-09-15T10:41:04Z... Z je odveč. Vrž ven in poizkusi zopet. Mene je čas jebal (sem pozabil T dodajat) in mi je tud tako napako glupo metalo. Slab opis, lahko bi bolje to povedali kaj serje.
CURLOPT_CAINFO => getcwd() . '/sitest-ca.pem', to dodaj, pa bi moralo delati.
Si uspel rešiti podpis v PHP-ju?
Ja imam rešeno in mi zaenrkat deluje.
sicer trenutno imam nastavljeno verifypeer pa verifyhost oboje na false (nikjer ni explicitno rečeno, da je to obvezno).
Za testiranje je OK pa če mi ne uspe nič pogruntat glede tega, lahko grem tudi na produkcijo s temi nastavitvami (nisem pretirano paranoičen) :D
Enostaven program za fakturiranje -> www.quibi.net
Zgodovina sprememb…
- spremenil: atlet ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
PrimozHisof ::
Pozdrav vsem!
XML vprašanje glede izdaje računov - čemu služita tag ExemptVATTaxableAmount in NontaxableAmount?
V bistvu, kakšna je razlika če izdajatelj računa je ali pa ni DDV zavezanec?
ExemptVATTaxableAmount - tu vpišeš, če izdajatelj ni zavezanec! Elemente, kjer je DDV pa izpustiš.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
bojanp ::
Pozdravljeni!
Pri nas pripravljamo za izdajo računov web aplikacijo. Zanima me, če obstaja enostavna rešitev za tiskanje pripravljenega pdf računa na lokalni tiskalnik brez prikaza tega računa v web browzerju? Kako boste reševali problem, da stranka ne sme istega računa natisniti večkrat, oziroma mora na vsaki kopiji pisati 'kopija n'. Ravno zaradi tega razloga se po moje pdf izpisa računa ne sme prikazati v browserju.
lp!
Pri nas pripravljamo za izdajo računov web aplikacijo. Zanima me, če obstaja enostavna rešitev za tiskanje pripravljenega pdf računa na lokalni tiskalnik brez prikaza tega računa v web browzerju? Kako boste reševali problem, da stranka ne sme istega računa natisniti večkrat, oziroma mora na vsaki kopiji pisati 'kopija n'. Ravno zaradi tega razloga se po moje pdf izpisa računa ne sme prikazati v browserju.
lp!
Zgodovina sprememb…
- spremenil: bojanp ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Strato5 ::
Mene pa zanima, če še komu tale app od FURSA za preverjanje QR kode dela kot je treba?
Meni namreč prebere QR kodo ok (prebrani string je isti kot če kodo preberemo s kakšnim drugim čitalcem QR kod in tudi je isti kot tisti s katerim smo kdo generirali (logično))
Ko pa aplikacija prikaže podatke, ki jih je dekodirala iz tega prebranega stringa, pa so napačni... davčna ima prvi znak premaknjen na konec (mogoče naključje in je zadnji znak vzet od kje drugje) datum je nekje za leto 2051 ipd...
Ali komu to uspešno prebere in dekodira?
Meni namreč prebere QR kodo ok (prebrani string je isti kot če kodo preberemo s kakšnim drugim čitalcem QR kod in tudi je isti kot tisti s katerim smo kdo generirali (logično))
Ko pa aplikacija prikaže podatke, ki jih je dekodirala iz tega prebranega stringa, pa so napačni... davčna ima prvi znak premaknjen na konec (mogoče naključje in je zadnji znak vzet od kje drugje) datum je nekje za leto 2051 ipd...
Ali komu to uspešno prebere in dekodira?
![](https://static.slo-tech.com/stili/avatar_gray.gif)
zipposi ::
Jaz imam iPhone, bo tudi zanj pripravljena aplikacija za testiranje QR kode..? EČ ne bo, kako naj preverim to nesrečno kodo?
![](https://static.slo-tech.com/stili/avatar_gray.gif)
MesecB ::
Pozdravljeni,
Rabil še malo pomoči oz. namig kje naj iščem napako:
1) napaka Cannot find the declaration of element 'soapenv:Envelope se še vedno pojavlja. Primerjal s primerom v navodilih in ni razlike tukaj??
2) Reqest sicer pošljem pa vedno odgovor: S003 : Digitalni podpis ni ustrezen
Probal sem podpis validirati še sam preden pošljem request pa pri meni javi da je podpis ok.
openssl_sign($sigNodeXMLString, $signature, $raw_cert['pkey'], OPENSSL_ALGO_SHA256);
$nok=openssl_verify ( $sigNodeXMLString , $signature , $npublick,"sha256WithRSAEncryption" );
Linki:
Nepodpisan
Podpisan
probal sem na 2 različnih web serverjih. pa vedno ista napaka.
za nasvet se vam zahvaljujem
Bojan
Rabil še malo pomoči oz. namig kje naj iščem napako:
1) napaka Cannot find the declaration of element 'soapenv:Envelope se še vedno pojavlja. Primerjal s primerom v navodilih in ni razlike tukaj??
2) Reqest sicer pošljem pa vedno odgovor: S003 : Digitalni podpis ni ustrezen
Probal sem podpis validirati še sam preden pošljem request pa pri meni javi da je podpis ok.
openssl_sign($sigNodeXMLString, $signature, $raw_cert['pkey'], OPENSSL_ALGO_SHA256);
$nok=openssl_verify ( $sigNodeXMLString , $signature , $npublick,"sha256WithRSAEncryption" );
Linki:
Nepodpisan
Podpisan
probal sem na 2 različnih web serverjih. pa vedno ista napaka.
za nasvet se vam zahvaljujem
Bojan
Zgodovina sprememb…
- spremenilo: MesecB ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
atlet ::
Sem obupal nad xml-ji, saj ni šel skozi podpis. Sem naredil v json-u in deluje super. :)
Pozdravljeni,
Rabil še malo pomoči oz. namig kje naj iščem napako:
1) napaka Cannot find the declaration of element 'soapenv:Envelope se še vedno pojavlja. Primerjal s primerom v navodilih in ni razlike tukaj??
2) Reqest sicer pošljem pa vedno odgovor: S003 : Digitalni podpis ni ustrezen
Probal sem podpis validirati še sam preden pošljem request pa pri meni javi da je podpis ok.
openssl_sign($sigNodeXMLString, $signature, $raw_cert['pkey'], OPENSSL_ALGO_SHA256);
$nok=openssl_verify ( $sigNodeXMLString , $signature , $npublick,"sha256WithRSAEncryption" );
Linki:
Nepodpisan
Podpisan
probal sem na 2 različnih web serverjih. pa vedno ista napaka.
za nasvet se vam zahvaljujem
Bojan
Enostaven program za fakturiranje -> www.quibi.net
![](https://static.slo-tech.com/stili/avatar_gray.gif)
peterv6i ::
Pozdrav vsem,
Ali ima kdo težavo s preverjanjem XML-ov po XSD shemi furs-a?
Namreč karkoli preverim dobim napako:
InvalidRegex: Pattern Value '\d{4}[-]\d{2}[-]\d{2}' Is Not A Valid Regular Expression. The Reported Error Was: ''-' Is An Invalid Character Range. Write '\-'.'.
Je pa zanimivo to, da v kolikor prenesem xml v FURS gre ta skozi brez kakršne koli napake (SOAP-UI)...
Drugo jajce je pa certifikat...
Zadevo sem spisal v Javi kot java stored proceduro na Oracle bazi... vse lepo in prav dokler ne pridem do vzpostavitve http povezave preko oracle wallet-a (tle pa nisem prišel skozi (baza 11g))..
Razmišljam, da bi https povezavo pravtako vzpostavil kar preko java stored procedure na bazi vendar bo "potrebno" uvozit certifikat v java keystore... (če je kdo uvažal furs-ov certifikat, ga bi prosil za kontakt (ker kot vem je v njem (private key in server key) povezava pa mora biti avtenticirana preko private key-a (kakor pravijo na FURS-u)...
V septembru mesecu mi pa je delovala povezava kar s certifikatom, ki smo ga sneli preko browserja (s spletne strani kjer so objavljeni webservisi)...
lp
Peter
Ali ima kdo težavo s preverjanjem XML-ov po XSD shemi furs-a?
Namreč karkoli preverim dobim napako:
InvalidRegex: Pattern Value '\d{4}[-]\d{2}[-]\d{2}' Is Not A Valid Regular Expression. The Reported Error Was: ''-' Is An Invalid Character Range. Write '\-'.'.
Je pa zanimivo to, da v kolikor prenesem xml v FURS gre ta skozi brez kakršne koli napake (SOAP-UI)...
Drugo jajce je pa certifikat...
Zadevo sem spisal v Javi kot java stored proceduro na Oracle bazi... vse lepo in prav dokler ne pridem do vzpostavitve http povezave preko oracle wallet-a (tle pa nisem prišel skozi (baza 11g))..
Razmišljam, da bi https povezavo pravtako vzpostavil kar preko java stored procedure na bazi vendar bo "potrebno" uvozit certifikat v java keystore... (če je kdo uvažal furs-ov certifikat, ga bi prosil za kontakt (ker kot vem je v njem (private key in server key) povezava pa mora biti avtenticirana preko private key-a (kakor pravijo na FURS-u)...
V septembru mesecu mi pa je delovala povezava kar s certifikatom, ki smo ga sneli preko browserja (s spletne strani kjer so objavljeni webservisi)...
lp
Peter
![](https://static.slo-tech.com/stili/avatar_gray.gif)
veqlargh ::
peterv6i: jaz sem se najprej jebal z JAX-WS klientom, mi ni hotel z ničemer zgenerirat klienta (AXIS2, CXF) in sem mel poln k... pa sem potem naredil preko HttpClienta in sam generiram te zahteve... ni prva izbira ampak se mi je podobno dogajalo, kar ene napake pri generiranju. Pa nisem pipal WSDL-jev in XSD-jev.
Sicer mi sedaj validacija deluje (validiram request preden pošljem, odgovorov ne). SOAP-UI tudi meni deloval OK.
Sicer mi sedaj validacija deluje (validiram request preden pošljem, odgovorov ne). SOAP-UI tudi meni deloval OK.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
peterv6i ::
Ok.. ampak če se povežem na http://www.freeformatter.com/xml-valida... in noter paste-am xml iz fursovih primerov in XSD shemo iz fursove strani mi javi napako...
!?
XML-je sestavljam "ročno" konkateniram stringe ker delam v PL/sql-u na bazi..
XML-ji so vsebinsko ok.. problem je validacija in problem je pošiljanje na FURS preko baze ker mi ga oracle wallet sračka..
Validacija kot pravim mi odleti z napako:
InvalidRegex: Pattern Value '\d{4}[-]\d{2}[-]\d{2}' Is Not A Valid Regular Expression. The Reported Error Was: ''-' Is An Invalid Character Range. Write '\-'.'.
to pa je za :
message_id 23CBC4DF-D9EF-563C-E053-0CC910AC7BBA
tega pa generiram kar na bazi...
select regexp_replace(sys_guid(), '([[:alnum:]]{8})([[:alnum:]]{4})([[:alnum:]]{4})([[:alnum:]]{4})([[:alnum:]]+)$', '\1-\2-\3-\4-\5')
into l_message_id
from dual;
recimo:
to je validacija:
To je pa prenos v furs kjer gre zadeva skozi brez težav...
preverjam pa po tej shemi: http://www.datoteke.fu.gov.si/dpr/files...
V Javi je validacija isti šmoren..
!?
XML-je sestavljam "ročno" konkateniram stringe ker delam v PL/sql-u na bazi..
XML-ji so vsebinsko ok.. problem je validacija in problem je pošiljanje na FURS preko baze ker mi ga oracle wallet sračka..
Validacija kot pravim mi odleti z napako:
InvalidRegex: Pattern Value '\d{4}[-]\d{2}[-]\d{2}' Is Not A Valid Regular Expression. The Reported Error Was: ''-' Is An Invalid Character Range. Write '\-'.'.
to pa je za :
message_id 23CBC4DF-D9EF-563C-E053-0CC910AC7BBA
tega pa generiram kar na bazi...
select regexp_replace(sys_guid(), '([[:alnum:]]{8})([[:alnum:]]{4})([[:alnum:]]{4})([[:alnum:]]{4})([[:alnum:]]+)$', '\1-\2-\3-\4-\5')
into l_message_id
from dual;
recimo:
to je validacija:
To je pa prenos v furs kjer gre zadeva skozi brez težav...
preverjam pa po tej shemi: http://www.datoteke.fu.gov.si/dpr/files...
V Javi je validacija isti šmoren..
Zgodovina sprememb…
- spremenilo: peterv6i ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
mcfri ::
Mene pa zanima, če še komu tale app od FURSA za preverjanje QR kode dela kot je treba?
Meni namreč prebere QR kodo ok (prebrani string je isti kot če kodo preberemo s kakšnim drugim čitalcem QR kod in tudi je isti kot tisti s katerim smo kdo generirali (logično))
Ko pa aplikacija prikaže podatke, ki jih je dekodirala iz tega prebranega stringa, pa so napačni... davčna ima prvi znak premaknjen na konec (mogoče naključje in je zadnji znak vzet od kje drugje) datum je nekje za leto 2051 ipd...
Ali komu to uspešno prebere in dekodira?
Dodaš vodilno ničlo, če zakodiran ZOI ni dovolj dolg?
Meni tudi prej ni delovalo in je bila zmešnjava z datumi, po updejtu aplikacija deluje kot mora. No, moje kode dekodira pravilno :-)
![](https://static.slo-tech.com/stili/avatar_gray.gif)
mpss ::
Grrr...
Trudim se 2 uri potem pa napišem vprašanje in mi kapne. Če bo torej še kdo imel podobne težave; objekt CspParemeters ima polje Flags in tam je potrebno povedati, naj uporablja ključe iz druge shrambe; torej:
cspParameters.Flags |= CspProviderFlags.UseMachineKeyStore;
Ojej! Sem se včeraj mučil cel večer. Vse je delovalo dokler nisem hotel zadevo prožiti iz service-a (in certifikata shranjenega v machine store). Danes pa najdem tole... HVALA!!! Tudi meni ste prihranili kar nekaj ur :-).
lp, Marko
![](https://static.slo-tech.com/stili/avatar_gray.gif)
peterv6i ::
Se mantram v javi, da bi naredi https povezavo ampak mi ne rata... (brez kakšnih zunanjih knjižnic)
ven dobim:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.Enumeration; import java.util.logging.Level; import java.util.logging.Logger; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; /** * * @author peterv */ public class KeystoreHTTPS { public KeystoreHTTPS() throws FileNotFoundException { try { System.out.println("Begin"); URL url = new URL("https://blagajne-test.fu.gov.si:9002/v1/cash_registers"); String USER_AGENT = "Mozilla/5.0"; String keyStore = "c:/cert/10031685-1.p12"; String keyStorePassword = "GesloXXX"; String keyPassword = "GesloXXX"; String KeyStoreType = "PKCS12"; String KeyManagerAlgorithm = "SunX509"; String SSLVersion = "SSLv3"; HttpsURLConnection con = getHttpsURLConnection(url, keyStore, keyStorePassword, keyPassword, KeyStoreType, KeyManagerAlgorithm, SSLVersion); //add reuqest header con.setRequestMethod("POST"); con.setRequestProperty("User-Agent", USER_AGENT); con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); String urlParameters = "sn=C02G8416DRJM&cn=&locale=&caller=&num=12345"; // Send post request con.setDoOutput(true); DataOutputStream wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); int responseCode = con.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Post parameters : " + urlParameters); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); //print result System.out.println(response.toString()); } catch (Exception ex) { Logger.getLogger(KeystoreHTTPS.class.getName()).log(Level.SEVERE, null, ex); } } public static HttpsURLConnection getHttpsURLConnection(URL url, String keystore, String keyStorePass, String keyPassword, String KeyStoreType, String KeyManagerAlgorithm, String SSLVersion) throws NoSuchAlgorithmException, KeyStoreException, CertificateException, FileNotFoundException, IOException, UnrecoverableKeyException, KeyManagementException { System.setProperty("javax.net.debug", "ssl,handshake,record"); SSLContext sslcontext = SSLContext.getInstance(SSLVersion); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerAlgorithm); KeyStore ks = KeyStore.getInstance(KeyStoreType); ks.load(new FileInputStream(keystore), keyStorePass.toCharArray()); kmf.init(ks, keyPassword.toCharArray()); TrustManagerFactory tmf = TrustManagerFactory .getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(ks); TrustManager[] tm = tmf.getTrustManagers(); sslcontext.init(kmf.getKeyManagers(), tm, null); SSLSocketFactory sslSocketFactory = sslcontext.getSocketFactory(); HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection(); return httpsURLConnection; } public static void main(String[] args) throws FileNotFoundException { KeystoreHTTPS a = new KeystoreHTTPS(); } }
ven dobim:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
![](https://static.slo-tech.com/stili/avatar_gray.gif)
krho ::
Khm.. String SSLVersion = "SSLv3"; KAJ!? Če tole furs podpira, pol je nekoga za ustrelit. Edino, kar bi moral bit podrto je TLS 1.1 in 1.2
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Rozhy ::
![](https://static.slo-tech.com/stili/avatar_gray.gif)
peterv6i ::
hvala "Rozhy"..
Evo tukaj je če kdo potrebuje pošiljanje Echo sporočila na FURS.. cerifikat podjetja si nastavite sami in pa geslo...
Evo tukaj je če kdo potrebuje pošiljanje Echo sporočila na FURS.. cerifikat podjetja si nastavite sami in pa geslo...
import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.URL; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.Enumeration; import java.util.logging.Level; import java.util.logging.Logger; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; public class KeystoreHTTPS { public KeystoreHTTPS() throws FileNotFoundException { try { System.out.println("Begin"); URL url = new URL("https://blagajne-test.fu.gov.si:9002/v1/cash_registers"); String USER_AGENT = "Mozilla/5.0"; String keyStore = "C:\\cert\\10031685-1.p12"; String keyStorePassword = "Geslo123#"; String keyPassword = "Geslo123#"; String KeyStoreType = "PKCS12"; String KeyManagerAlgorithm = "SunX509"; String SSLVersion = "TLS"; HttpsURLConnection con = getHttpsURLConnection(url, keyStore, keyStorePassword, keyPassword, KeyStoreType, KeyManagerAlgorithm, SSLVersion); //add reuqest header con.setRequestMethod("POST"); con.setRequestProperty("User-Agent", USER_AGENT); con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); con.setRequestProperty("Content-type", "text/xml; charset=utf-8"); con.setRequestProperty("SOAPAction","\"/echo\""); String xml = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:fu=\"http://www.fu.gov.si/\">\n" + " <soapenv:Header/>\n" + " <soapenv:Body>\n" + " <fu:EchoRequest>130031{$1}</fu:EchoRequest>\n" + " </soapenv:Body>\n" + "</soapenv:Envelope>"; con.setDoOutput(true); OutputStream reqStream = con.getOutputStream(); reqStream.write(xml.getBytes()); int responseCode = con.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); //print result System.out.println(response.toString()); } catch (Exception ex) { Logger.getLogger(KeystoreHTTPS.class.getName()).log(Level.SEVERE, null, ex); } } public static HttpsURLConnection getHttpsURLConnection(URL url, String keystore, String keyStorePass, String keyPassword, String KeyStoreType, String KeyManagerAlgorithm, String SSLVersion) throws NoSuchAlgorithmException, KeyStoreException, CertificateException, FileNotFoundException, IOException, UnrecoverableKeyException, KeyManagementException { System.setProperty("javax.net.debug", "ssl,handshake,record"); SSLContext sslcontext = SSLContext.getInstance(SSLVersion); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerAlgorithm); KeyStore ks = KeyStore.getInstance(KeyStoreType); ks.load(new FileInputStream(keystore), keyStorePass.toCharArray()); kmf.init(ks, keyPassword.toCharArray()); //test-tls (2).cer CertificateFactory cf = CertificateFactory.getInstance("X.509"); // From https://www.washington.edu/itconnect/security/ca/load-der.crt InputStream is = new FileInputStream("c:/cert/test-tls (2).cer"); InputStream caInput = new BufferedInputStream(is); Certificate ca; try { ca = cf.generateCertificate(caInput); System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN()); } finally { caInput.close(); } String keyStoreType = KeyStore.getDefaultType(); KeyStore keyStore = KeyStore.getInstance(keyStoreType); keyStore.load(null, null); keyStore.setCertificateEntry("ca", ca); // Create a TrustManager that trusts the CAs in our KeyStore String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm); tmf.init(keyStore); TrustManager[] tm = tmf.getTrustManagers(); sslcontext.init(kmf.getKeyManagers(), tm, null); SSLSocketFactory sslSocketFactory = sslcontext.getSocketFactory(); HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection(); return httpsURLConnection; } public static void main(String[] args) throws FileNotFoundException { KeystoreHTTPS a = new KeystoreHTTPS(); } }
![](https://static.slo-tech.com/stili/avatar_gray.gif)
peterv6i ::
Tukaj je še primer za podpis xml-ja s certifikatom (poslovni prostor)..
kodo si pač priredite po potrebah..
ko končam bom objabil še java stored procedure, za podpis in pošiljanje dokumentov direkt iz oracle baze..
kodo si pač priredite po potrebah..
ko končam bom objabil še java stored procedure, za podpis in pošiljanje dokumentov direkt iz oracle baze..
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.net.URL; import java.security.*; import java.security.cert.X509Certificate; import java.util.*; import javax.xml.XMLConstants; import javax.xml.crypto.dsig.*; import javax.xml.crypto.dsig.dom.DOMSignContext; import javax.xml.crypto.dsig.keyinfo.*; import javax.xml.crypto.dsig.spec.*; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.w3c.dom.*; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; /** * Sign XML file. */ public class SignFileExample { public static void main(String[] args) throws Exception { String referenceURI = null; List transforms = null; String xml = "<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#\">\n" + " <soapenv:Body>\n" + " <fu:BusinessPremiseRequest Id=\"data\">\n" + " <fu:Header>\n" + " <fu:MessageID>20E148DC-5066-4D7B-E053-AA02010A3F8D</fu:MessageID>\n" + " <fu:DateTime>2015-09-24T12:07:28</fu:DateTime>\n" + " </fu:Header>\n" + " <fu:BusinessPremise>\n" + " <fu:TaxNumber>10031685</fu:TaxNumber>\n" + " <fu:BusinessPremiseID>P001</fu:BusinessPremiseID>\n" + " <fu:BPIdentifier>\n" + " <fu:RealEstateBP>\n" + " <fu:PropertyID>\n" + " <fu:CadastralNumber>2606</fu:CadastralNumber>\n" + " <fu:BuildingNumber>6967</fu:BuildingNumber>\n" + " <fu:BuildingSectionNumber>1</fu:BuildingSectionNumber>\n" + " </fu:PropertyID>\n" + " <fu:Address>\n" + " <fu:Street>ŠMARSKA CESTA</fu:Street>\n" + " <fu:HouseNumber>7</fu:HouseNumber>\n" + " <fu:HouseNumberAdditional>C</fu:HouseNumberAdditional>\n" + " <fu:Community>KOPER</fu:Community>\n" + " <fu:City>KOPER</fu:City>\n" + " <fu:PostalCode>6000</fu:PostalCode>\n" + " </fu:Address>\n" + " </fu:RealEstateBP>\n" + " </fu:BPIdentifier>\n" + " <fu:ValidityDate>2010-09-24</fu:ValidityDate>\n" + " <fu:SoftwareSupplier>\n" + " <fu:TaxNumber>76562832</fu:TaxNumber>\n" + " </fu:SoftwareSupplier>\n" + " <fu:SpecialNotes>Primer prijave poslovnega prostora</fu:SpecialNotes>\n" + " </fu:BusinessPremise>\n" + "</fu:BusinessPremiseRequest>" + "</soapenv:Body>\n" + "</soapenv:Envelope>"; String outputFile = "c:/brisi/podpisanracun.xml"; // Instantiate the document to be signed DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); dbFactory.setNamespaceAware(true); Document doc = (Document) dbFactory.newDocumentBuilder().parse(new ByteArrayInputStream(xml.getBytes())); Node node = doc.getElementsByTagName("fu:BusinessPremiseRequest").item(0); //fu:InvoiceRequest //fu:BusinessPremiseRequest KeyStore p12 = KeyStore.getInstance("pkcs12"); p12.load(new FileInputStream("c:/cert/testfurs.p12"), "Geslo123#".toCharArray()); Enumeration e = p12.aliases(); String alias = (String) e.nextElement(); System.out.println("Alias certifikata:" + alias); Key privateKey = p12.getKey(alias, "Geslo123#".toCharArray()); KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) p12.getEntry(alias, new KeyStore.PasswordProtection("Geslo123#".toCharArray())); X509Certificate cert = (X509Certificate) keyEntry.getCertificate(); PublicKey publicKey = cert.getPublicKey(); final XMLSignatureFactory sigFactory = XMLSignatureFactory.getInstance("DOM"); // Create a Reference to the enveloped document Reference ref = sigFactory.newReference("#data", sigFactory.newDigestMethod(DigestMethod.SHA256, null), Collections.singletonList(sigFactory.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)), null, null); SignedInfo si = sigFactory.newSignedInfo(sigFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), sigFactory.newSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", null), Collections.singletonList(ref)); // Create a KeyValue containing the RSA PublicKey KeyInfoFactory keyInfoFactory = sigFactory.getKeyInfoFactory(); X509IssuerSerial x509IssuerSerial = keyInfoFactory.newX509IssuerSerial(cert.getSubjectX500Principal().getName(), cert.getSerialNumber()); List x509Content = new ArrayList(); x509Content.add(cert.getSubjectX500Principal().getName()); x509Content.add(x509IssuerSerial); KeyValue keyValue = keyInfoFactory.newKeyValue(publicKey); X509Data xd = keyInfoFactory.newX509Data(x509Content); // Create a KeyInfo and add the KeyValue to it KeyInfo keyInfo = keyInfoFactory.newKeyInfo(Collections.singletonList(xd)); // Create a DOMSignContext and specify the RSA PrivateKey and // location of the resulting XMLSignature's parent element DOMSignContext dsc = new DOMSignContext( privateKey, node ); // Create the XMLSignature (but don't sign it yet) XMLSignature signature = sigFactory.newXMLSignature(si, keyInfo); // Marshal, generate (and sign) the enveloped signature signature.sign(dsc); // output the resulting document OutputStream os = new FileOutputStream("c:/brisi/PodpisanXml.xml"); //ByteArrayOutputStream os = new ByteArrayOutputStream(); Transformer trans = TransformerFactory.newInstance() .newTransformer(); trans.transform(new DOMSource(doc), new StreamResult(os)); os.flush(); os.close(); // System.out.println(new String(os.toByteArray())); System.out.println("preverjam xml"); SchemaFactory fc = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = fc.newSchema(new URL("http://www.datoteke.fu.gov.si/dpr/files/wsdl_v1/FiscalVerificationSchema.xsd")); Validator validator = schema.newValidator(); final List<SAXParseException> exceptions = new LinkedList<SAXParseException>(); validator.setErrorHandler(new ErrorHandler() { @Override public void warning(SAXParseException exception) throws SAXException { exceptions.add(exception); } @Override public void fatalError(SAXParseException exception) throws SAXException { exceptions.add(exception); } @Override public void error(SAXParseException exception) throws SAXException { exceptions.add(exception); } }); validator.validate(new StreamSource(new File(outputFile))); System.out.println(exceptions.toString()); } private static void usage() { System.out.println("Usage: java SignFile <inputFile> <outputFile> [id|path|whole]"); } }
Zgodovina sprememb…
- spremenilo: peterv6i ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
veqlargh ::
Ja, isti problem, s katerim sem si razbijal glavo precej časa. Skratka, po verziji 1.6.2x (se mi zdi) so "zakomplicirali" obnašanje atributov. Treba je povedat XML-ju, da je atribut tipa ID in ne tipa string (nisem gledal kako je to v shemi). Skratka, tole pokličete na elementu, ki ima ta atribut:
element.setIdAttributeNode(atribut, true);
![](https://static.slo-tech.com/stili/avatar_gray.gif)
peterv6i ::
Ja.. jaz sem delal z Javo 1.6 ker imam ta JDK na oracle bazi kateri poganja java stored procedure...
Z javo < 1.6 so bile težave zaradi SHA256withRSA...
Z javo < 1.6 so bile težave zaradi SHA256withRSA...
Zgodovina sprememb…
- spremenilo: peterv6i ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Infinity ::
Kolega je spisal knjižnico za python.
Dobite jo preko pip-a ali na https://github.com/boris-savic/python-f...
Dobite jo preko pip-a ali na https://github.com/boris-savic/python-f...
![](https://static.slo-tech.com/stili/avatar_gray.gif)
peterv6i ::
Zanima me koliko časa vam traja generiranje ZOI številke?
Namreč v Javi pridem do nekje 70msec...
Če pomnožim to vrednost s številom faktur, ki jih imamo v obdelavah potem bo samo generiranje številk trajao 4 ure...
Namreč v Javi pridem do nekje 70msec...
Če pomnožim to vrednost s številom faktur, ki jih imamo v obdelavah potem bo samo generiranje številk trajao 4 ure...
![](https://static.slo-tech.com/stili/avatar.gif)
perci ::
Pa moraš celotno obdelavo dati v potrditev? So res gotovinski računi? Glede na tvojo količino računov, sklepam, da delaš za kakšnega telekom operaterja ali komunalno podjetje, tam pa gotovinski računi predstavljajo cca 5% računov.
Zgodovina sprememb…
- spremenil: perci ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
DamijanD ::
Hmm nisem gledal samo ZOI - mi je pa potrdilo 924 (vključno z ZOI generiranjem) računov v dveh minutah (pa nimam nekaj blazno optimizirane kode...)
![](https://static.slo-tech.com/stili/avatar_gray.gif)
veqlargh ::
Za 10k ZOI številk cca 5 minut. S tem, da sem za vsako še Keystore in to sranje generiral. Moram še poštimat. Ampak tole je samo ZOI za dane podatke.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Strato5 ::
Dodaš vodilno ničlo, če zakodiran ZOI ni dovolj dolg?
Meni tudi prej ni delovalo in je bila zmešnjava z datumi, po updejtu aplikacija deluje kot mora. No, moje kode dekodira pravilno :-)
Misliš po pretvorbi iz šestnajstiškega v desetiški zapis naj dodam vodilne ničle, da bo ZOI vedno dolg enako številko znakov? točno koliko znakov pa bi naj bil dolg?
![](https://static.slo-tech.com/stili/avatar_gray.gif)
peterv6i ::
Ja jaz sem poštelal tako, da Certifikate in ostala jajca naložim samo 1x..
S profiler-jem sem gledal in se največ časa potroši na podpisu (kjer pač nimaš vpliva na hitrost)...
MD5 pa sem uporabil ta.. (ker se mi ne da nalagat še par megabajtov knjižnic apache-a na bazo)
Torej na bazi pokličem samo 1x metodo initcert, ki inicializira objekte...
Potem pa v zanki ali kjerkoli pač pokličem generiranjeZOI številke..
Kot sem rekel se največ časa troši na Signature.sign
Zanima me če vam deluje validacija po shemi?
Recimo... če vzamem xml in ga preverim po shemi, ki je na fursu dobim:
Exception in thread "main" org.xml.sax.SAXParseException: InvalidRegex: Pattern value '\d{4}[-]\d{2}[-]\d{2}' is not a valid regular expression. The reported error was: ''-' is an invalid character range. Write '\-'.' at column '6'.
Če pa ta isti XML odložim na FURS ga ta sprejme brez težav...
S profiler-jem sem gledal in se največ časa potroši na podpisu (kjer pač nimaš vpliva na hitrost)...
MD5 pa sem uporabil ta.. (ker se mi ne da nalagat še par megabajtov knjižnic apache-a na bazo)
Torej na bazi pokličem samo 1x metodo initcert, ki inicializira objekte...
Potem pa v zanki ali kjerkoli pač pokličem generiranjeZOI številke..
Kot sem rekel se največ časa troši na Signature.sign
StringBuilder sb = new StringBuilder(); public static KeyStore p12 = null; public static String geslo; public static String vmesni_rezultat = ""; public static String alias = null; public static Key privateKey = null; public static Signature podpis = null; public static MessageDigest md = null; public static StringBuilder sb = new StringBuilder(); static { try { podpis = Signature.getInstance("SHA256WithRSA"); md = MessageDigest.getInstance("MD5"); } catch(Exception ex) { } } . . public static void initCert(String direktorij, String certifikat, String gesloc) throws Exception { if (certifikat == null) { throw new Exception("ime datoteke certifikata ni podano!"); } if (gesloc == null) { throw new Exception("geslo certifikata ni podano!"); } geslo = gesloc; if (p12 == null) { p12 = KeyStore.getInstance("pkcs12"); p12.load(new FileInputStream(direktorij + "/" + certifikat), geslo.toCharArray()); Enumeration e = p12.aliases(); alias = (String) e.nextElement(); //pridobimo privatni ključ privateKey = p12.getKey(alias, geslo.toCharArray()); //določimo način podpisa //Signature podpis = Signature.getInstance("SHA256WithRSA"); podpis.initSign((PrivateKey) privateKey); } } private static String md5Java(byte[] message) throws Exception { byte[] hash = md.digest(message); //.getBytes("UTF-8")); sb.setLength(0); for (byte b : hash) { sb.append(String.format("%02x", b & 0xff)); } return sb.toString(); } public static String getZOI( String davcnaStevilka, String datumIzdaje, String stevilkaRacuna, String oznakaPoslovnegaProstora, String electronicDeviceId, String znesekRacuna) throws Exception { //sestavimo vrstico vmesni_rezultat = davcnaStevilka.concat(datumIzdaje).concat(stevilkaRacuna).concat(oznakaPoslovnegaProstora).concat(electronicDeviceId).concat(znesekRacuna); podpis.update(vmesni_rezultat.getBytes("UTF-8")); byte[] podpisano = podpis.sign(); //MD5 hash return md5Java(podpisano); }
Zanima me če vam deluje validacija po shemi?
Recimo... če vzamem xml in ga preverim po shemi, ki je na fursu dobim:
Exception in thread "main" org.xml.sax.SAXParseException: InvalidRegex: Pattern value '\d{4}[-]\d{2}[-]\d{2}' is not a valid regular expression. The reported error was: ''-' is an invalid character range. Write '\-'.' at column '6'.
Če pa ta isti XML odložim na FURS ga ta sprejme brez težav...
Zgodovina sprememb…
- spremenilo: peterv6i ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
PrimozHisof ::
Dodaš vodilno ničlo, če zakodiran ZOI ni dovolj dolg?
Ja. Če je ZOI destiški dolg 59 znakov, dodaš na začetku 0, da je dolžina 60.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Strato5 ::
PrimozHisof je izjavil:
Ja. Če je ZOI destiški dolg 59 znakov, dodaš na začetku 0, da je dolžina 60.
Odlično tole pa zdaj pravilno razbere podatke iz QR kode
![](https://static.slo-tech.com/stili/avatar_gray.gif)
peterv6i ::
Iz FURS-a so mi odgovorili, da so težave z validacijo le tam kjer to počne Java...
mah...ne razumem več nič.. Torej je priporočeno orodje pri uporabi FURSOVIH api-jev le .net?
==========
Spoštovani,
To je problem javanske knjižnice, ki se uporabljajo za validacijo. Njemu ni regular expression všeč, čeprav je pravilen.
Isti primer je tu:
http://www.oxygenxml.com/forum/topic101...
Lep pozdrav,
REPUBLIKA SLOVENIJA
MINISTRSTVO ZA FINANCE
mah...ne razumem več nič.. Torej je priporočeno orodje pri uporabi FURSOVIH api-jev le .net?
==========
Spoštovani,
To je problem javanske knjižnice, ki se uporabljajo za validacijo. Njemu ni regular expression všeč, čeprav je pravilen.
Isti primer je tu:
http://www.oxygenxml.com/forum/topic101...
Lep pozdrav,
REPUBLIKA SLOVENIJA
MINISTRSTVO ZA FINANCE
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne - PHPOddelek: Programiranje | 6240 (1286) | vsepocenv |
» | C# davčno potrjevanjeOddelek: Programiranje | 4485 (3954) | windigo |
» | E-računOddelek: Programiranje | 7581 (4344) | ivanhoe5x |
» | PHP davčna blagajnaOddelek: Programiranje | 8186 (6210) | brble |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3197 (1927) | peterv6i |