Programiranje Za programere i one koji to žele postati ... |
|
|
15.10.2012., 10:48
|
#61
|
Registrirani korisnik
Registracija: Apr 2007.
Lokacija: Velika Gorica
Postova: 14
|
Pozdrav.
Razvijam modul za slanje računa na fiskalizaciju u .Net-u i za sada sam naletio na par zanimljivih momenata.
Naime, uočio sam da echo response nije soap formata, odgovor dođe, ali nema envelope.
Nadalje, slanje računa na fiskalizaciju mu uporno javlja "Neispravan digitalni potpis." što je greška s004, a meni se čini da je (vizualnom usporedbom) ono što dobijem potpisivanjem identično primjerima iz tehničke specifikacije.
Ako ima netko da se pati .Net-om, bilo bi lijepo da malo razmjenimo iskustva.
|
|
|
15.10.2012., 13:26
|
#62
|
Nomad
Registracija: Dec 2002.
Lokacija: Unknown
Postova: 30,138
|
Quote:
GuraJura kaže:
Jedino još ostaje Zaštitni kod izdavatelja. Molim te pokušaj u svom kodu nalupetati nešto bezveze u dužini od 32 karaktera umjesto pravog zaštitnog koda. Baš me zanima da li će ti javiti pravi opis greške ili internal server error 500.
|
Prošlo je i sa bezveznim kodom
__________________
"Make up your mind. Is Death a friend? Then go joyfully to hunt with it, as I did. If it's an enemy, then fight it. But don't sag here like a wounded cow waiting for predators to finish it off. You are not prey, nor I! If we must die, let us die as wolves!”- Nighteyes
|
|
|
15.10.2012., 15:55
|
#63
|
Registrirani korisnik
Registracija: Oct 2012.
Postova: 14
|
Quote:
tompagrompa kaže:
Pozdrav.
Razvijam modul za slanje računa na fiskalizaciju u .Net-u i za sada sam naletio na par zanimljivih momenata.
Naime, uočio sam da echo response nije soap formata, odgovor dođe, ali nema envelope.
Nadalje, slanje računa na fiskalizaciju mu uporno javlja "Neispravan digitalni potpis." što je greška s004, a meni se čini da je (vizualnom usporedbom) ono što dobijem potpisivanjem identično primjerima iz tehničke specifikacije.
Ako ima netko da se pati .Net-om, bilo bi lijepo da malo razmjenimo iskustva.
|
Tebi bar nešto javlja. Meni uporno javlja internal server error 500.
|
|
|
15.10.2012., 15:56
|
#64
|
Registrirani korisnik
Registracija: Oct 2012.
Postova: 14
|
Quote:
Baphomet kaže:
Prošlo je i sa bezveznim kodom
|
Mogu li ti poslati svoj potpisani xml file pa da ga pokušaš poslati kroz svoj kod. Ako se slažeš daj neki email.
|
|
|
15.10.2012., 18:10
|
#65
|
Registrirani korisnik
Registracija: Oct 2009.
Postova: 1,206
|
Quote:
GuraJura kaže:
Mogu li ti poslati svoj potpisani xml file pa da ga pokušaš poslati kroz svoj kod. Ako se slažeš daj neki email.
|
SoapUI.
Instaliraj. Možeš učitati WSDL sa stranice porezne uprave, pa imaš primjere za echo i račun. Meni račun (iz njihovog primjera) javlja grešku (očekivano jer nema podataka), ali možeš staviti bilo koji XML, pa možeš i svoj, te ćeš vidjeti u odgovoru koju grešku imaš.
|
|
|
15.10.2012., 20:24
|
#66
|
Registrirani korisnik
Registracija: Oct 2012.
Postova: 14
|
Quote:
acmevagabundo kaže:
SoapUI.
Instaliraj. Možeš učitati WSDL sa stranice porezne uprave, pa imaš primjere za echo i račun. Meni račun (iz njihovog primjera) javlja grešku (očekivano jer nema podataka), ali možeš staviti bilo koji XML, pa možeš i svoj, te ćeš vidjeti u odgovoru koju grešku imaš.
|
Ovo je stvarno interesantno. Grešku generira WebResponse oResponse = oRequest.GetResponse() ali tek nakon što pročita cijeli odgovor sa servera. U try ... catch mogu doći do cijelog odgovora. Znači grešku ne generira server nego client.
Ima li tko kakvu ideju ???
|
|
|
15.10.2012., 20:34
|
#67
|
Registrirani korisnik
Registracija: Oct 2012.
Postova: 14
|
Još jedno pitanje za sve.
U odgovoru servisa vidim da je CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" i Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" a u primjeru zahtjeva stoji CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" i Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#". Što je ispravno ?
|
|
|
16.10.2012., 08:27
|
#68
|
priučenjak
Registracija: Oct 2012.
Postova: 234
|
Quote:
tompagrompa kaže:
Pozdrav.
Razvijam modul za slanje računa na fiskalizaciju u .Net-u i za sada sam naletio na par zanimljivih momenata.
Naime, uočio sam da echo response nije soap formata, odgovor dođe, ali nema envelope.
Nadalje, slanje računa na fiskalizaciju mu uporno javlja "Neispravan digitalni potpis." što je greška s004, a meni se čini da je (vizualnom usporedbom) ono što dobijem potpisivanjem identično primjerima iz tehničke specifikacije.
Ako ima netko da se pati .Net-om, bilo bi lijepo da malo razmjenimo iskustva.
|
I meni je do jutros odgovarao "Possible SOAP version mismatch: Envelope namespace http://www.apis-it.hr/fin/2012/types/f73 was unexpected. Expecting http://schemas.xmlsoap.org/soap/envelope/.", a u Fiddleru se vidio odgovor bez SOAP omotnice.
Dečki iz Porezne su očigledno primijetili da je previše SOAP zahtjeva za echo, pa su se potrudili: od jutros je response sa SOAP omotnicom, greške više nema, bez da sam u kodu išta mijenjao.
Nice.
|
|
|
17.10.2012., 00:59
|
#70
|
Registrirani korisnik
Registracija: Jun 2009.
Lokacija: Split
Postova: 10
|
Quote:
Baphomet kaže:
|
Evo radi i na VB6. I potpisivanje i sapunica i SSL i ........
|
|
|
17.10.2012., 08:46
|
#71
|
Registrirani korisnik
Registracija: Mar 2011.
Postova: 28
|
Quote:
GuraJura kaže:
Ovo je stvarno interesantno. Grešku generira WebResponse oResponse = oRequest.GetResponse() ali tek nakon što pročita cijeli odgovor sa servera. U try ... catch mogu doći do cijelog odgovora. Znači grešku ne generira server nego client.
Ima li tko kakvu ideju ???
|
Jesi rijesio ovo?..kako?meni isto javlja
|
|
|
17.10.2012., 10:00
|
#72
|
Registrirani korisnik
Registracija: Jan 2007.
Lokacija: Virovitica
Postova: 12
|
Što mislite da li bi bilo moguće napraviti virtualni printer koji bi vršio slanje xml-a i prihvaćao rezultat i onda ga ispisao na fizičkom printeru. Ovo bi bilo kao ideja za implementirati fiskalizaciju na POS softver koji se više ne održava i kojeg je nemoguće mijenjati a vrti se na windowsima i moguće je mijenjati jedino odredišni printer... Ako je moguće, ovo je trebalo napraviti odavno...
|
|
|
17.10.2012., 12:19
|
#73
|
Registrirani korisnik
Registracija: Dec 2007.
Postova: 152
|
Quote:
a1centar kaže:
Evo radi i na VB6. I potpisivanje i sapunica i SSL i ........
|
Može pomoć oko SOAP-a i dobijanja responsa, kod ako imaš?
I šta si koristio za potpisivanje XML-a?
Hvala
|
|
|
17.10.2012., 12:26
|
#74
|
~ napustio forum ~
Registracija: Dec 2002.
Postova: 3,672
|
Molim pomoć, prvenstveno osobito dečki koji koriste xmlsec lib api.
Ukoliko mi je atribut potpisnog čvora:
Id="racunId" uz pRefNode := xmlSecTmplSignatureAddReference(pSignNode, xmlSecTransformSha1GetKlass, nil, '#racunId',nil); dokument je dtd validan no ne potpiše ga jer uri ne može pronaći element prema Id-u.
xml:d="racunId" uz pRefNode := xmlSecTmplSignatureAddReference(pSignNode, xmlSecTransformSha1GetKlass, nil, '#racunId',nil); dokument nije dtd validan jer xml:id nije prema wdsl-u. no potpiše ga, potpis ipak ne prolazi na serveru
Id="racunId" uz pRefNode := xmlSecTmplSignatureAddReference(pSignNode, xmlSecTransformSha1GetKlass, '#racunId',nil,nil); dokument nije dtd validan jer element reference po dtd sadrži uri, a ne ID element, ali ga ne potpiše i ipak ne prolazi provjeru na serveru
Soap omotač se nalazi u xmlu prije potpisivanja i ne bi trebao smetati, zar ne?
X509 podatke dodajem kroz dinamički template. Znači, u original xml-u. sam napravio element <potpis>, kod potpisivanja napravim x509 čvor i zamjenim ga sa <potpis> čvorom i nakon toga radim potpisivanje. U suprotnom bi mi (kao u primjerima prema doc rootu dodao potpis kao novi element obavijen soap omotačem).
Oko certifikata:
Imam: dsigCtx^.signKey := xmlSecCryptoAppKeyLoad(pcertfile, xmlSecKeyDataFormatPkcs12, pkeypwd, nil, nil);
Trebam li i: (xmlSecKeySetName(dsigCtx^.signKey, pcertfile) ??? (pcertfile i pkeypwd si pchar varijable s nazivom .pfx datoteke i lozinka)
Ili potpisuje krivi čvor, ili negdje totalno fulam...
Radite li cijeli <Signature> element u izvornom xml-u. ili ga stvarate dinamički kao i ja? Kako određujete referencu potpisa?
Nakon što je proradio SOAP zaključio sam da je moj "uspješno potpisani" xml zapravo neuspješno potpisan. Izgubio sam već 2 dana (i ponešto noći i kose) i nisam se pomaknuo sa mjesta osim što sam ispeglao xml da bude potpuno dtd/wsdl validan.
Heeelp!
I da, netko je pitao o razlici u kanonikalizaciji, pa sam ja upitao Apis, a oni odgovorili meni:
|
|
|
17.10.2012., 13:56
|
#75
|
Registrirani korisnik
Registracija: Oct 2009.
Postova: 1,206
|
Quote:
Veky kaže:
...
|
Dva dana je ništa, i ja se igram sa istim problemima.
xmlsec.exe ne radi ako u xml stavim URI="#RacunZahtjev", a bez njega potpisuje, ali se vraća poruka da je potpis nevaljal.
uvijek ostaje FINA-in signer za 350kn
|
|
|
17.10.2012., 14:35
|
#76
|
~ napustio forum ~
Registracija: Dec 2002.
Postova: 3,672
|
Kaže:
xmlsec --verify p2.xml
func=xmlSecOpenSSLEvpDigestVerify:file=..\src\open ssl\digests.c:line=229 bj=sha1 ubj=unknown:error =12:invalid data:data and digest do not match
FAIL
SignedInfo References (ok/all): 0/1
Manifests References (ok/all): 0/0
Error: failed to verify file "p2.xml"
xmlsec --version
xmlsec 1.2.18 (openssl)
Dakle, ili mi nešto krivo potpiše, ili ne koristim dobar ključ i certifikat (učitavanje pcks12 bi trebalo u kontekst povući i certifikate i sve ključeve), no dobijem potpis i x509 podatke i sl. samo očito nešto krivo potpiše.
Najtragičnije je što sam dobio potpisan fajl i s obzirom da izgleda "kao na slici" da je dotični uredno i potpisan. Ali... eh, ali...
|
|
|
17.10.2012., 14:55
|
#77
|
Nomad
Registracija: Dec 2002.
Lokacija: Unknown
Postova: 30,138
|
Ovako ja radim, bar za sada....napravim XML po uputama, dodam prazne čvorove za potpis i snimim datoteku.
Pokrenem potpisivanje (xmlsec) bez pRefNode. To nije potrebno pošto se podataka o podacima za potpisivanje već nalazi u XML a to je <Reference URI="#racunId">
Jedini problem na koji sam naletio ima veze sa Id koji se nalazi u elementu RacunZahtjev. Ako stavim xml:id onda ne prolazi jer nije u skladu sa xml shemom a ako stavim samo id onda mi ne potpisuje XML. Rjšenje je jednostavno, treba samo pročitati xmlsec FAQ
http://www.aleksey.com/xmlsec/faq.html
__________________
"Make up your mind. Is Death a friend? Then go joyfully to hunt with it, as I did. If it's an enemy, then fight it. But don't sag here like a wounded cow waiting for predators to finish it off. You are not prey, nor I! If we must die, let us die as wolves!”- Nighteyes
|
|
|
17.10.2012., 15:19
|
#78
|
~ napustio forum ~
Registracija: Dec 2002.
Postova: 3,672
|
Znači, ne radiš dinamički template nego u svoj xml dodaš signature čvor sa svim podčvorovima i već upisanim vrijednostima? Probavao sam to no nije upalilo, jednostavno ne potpiše i ne doživi Signature čvor.
Potpisuješ odmah datoteku sa soap ovojnicom, ili golu samo sa <?xml u prvoj liniji, jer ako kasnije dodaješ sopa omotač, on sjeda između <?xml i <tns:RacunZahtjev čvora.
Da nisam čitao faq (nekoliko puta) ne bi ni saznao za xml:id, no to očito nije riješenje. U dokumentaciji kažu da se Id zove prema imenu elementa dakle Id="RacunZahtjev". Kad generiraš xml, dodaš mu id preko xmlAddID?
Ubij me, glup sam... jednostavno ne kužim štos kako mu podvaliti taj id.
|
|
|
17.10.2012., 15:29
|
#79
|
Nomad
Registracija: Dec 2002.
Lokacija: Unknown
Postova: 30,138
|
Quote:
Veky kaže:
Znači, ne radiš dinamički template nego u svoj xml dodaš signature čvor sa svim podčvorovima i već upisanim vrijednostima? Probavao sam to no nije upalilo, jednostavno ne potpiše i ne doživi Signature čvor.
Potpisuješ odmah datoteku sa soap ovojnicom, ili golu samo sa <?xml u prvoj liniji, jer ako kasnije dodaješ sopa omotač, on sjeda između <?xml i <tns:RacunZahtjev čvora.
Da nisam čitao faq (nekoliko puta) ne bi ni saznao za xml:id, no to očito nije riješenje. U dokumentaciji kažu da se Id zove prema imenu elementa dakle Id="RacunZahtjev". Kad generiraš xml, dodaš mu id preko xmlAddID?
Ubij me, glup sam... jednostavno ne kužim štos kako mu podvaliti taj id.
|
Ne upisujem vrijednosti već stavim prazne čvorove a onda xmlsec sam upisuje vrijednosti za svaki čvor.
Potpisujem XML sa soap ovojnicom.
Znači, nakon soap ovojnice ide :
Kod:
<tns:RacunZahtjev xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tns="http://www.apis-it.hr/fin/2012/types/f73"
xsi:schemaLocation="http://www.apis-it.hr/fin/2012/types/f73 ../schema/FiskalizacijaSchema.xsd" Id="racunId">
....a oznaka o tome što se potpisuje kao i podaci o potpisu prije potpisivanja :
Kod:
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#racunId">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue/>
</Reference>
</SignedInfo>
<SignatureValue/>
<KeyInfo>
<KeyName/>
<X509Data/>
</KeyInfo>
</Signature>
Ima da mi svi pivo platite
__________________
"Make up your mind. Is Death a friend? Then go joyfully to hunt with it, as I did. If it's an enemy, then fight it. But don't sag here like a wounded cow waiting for predators to finish it off. You are not prey, nor I! If we must die, let us die as wolves!”- Nighteyes
|
|
|
17.10.2012., 15:51
|
#80
|
~ napustio forum ~
Registracija: Dec 2002.
Postova: 3,672
|
Prema tome na potpisivanje šalješ ovo:
Kod:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><tns:RacunZahtjev xmlns:tns="http://www.apis-it.hr/fin/2012/types/f73" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.apis-it.hr/fin/2012/types/f73 ../schema/FiskalizacijaSchema.xsd" Id="racunId"><tns:Zaglavlje><tns:IdPoruke>0ec86a7c-6c8f-40b7-86a9-abdb4c2e4231</tns:IdPoruke><tns:DatumVrijeme>17.10.2012T15:37:13</tns:DatumVrijeme></tns:Zaglavlje><tns:Racun><tns:Oib>8889632015</tns:Oib><tns:USustPdv>true</tns:USustPdv><tns:DatVrijeme>01.09.2012T00:00:00</tns:DatVrijeme><tns:OznSlijed>P</tns:OznSlijed><tns:BrRac><tns:BrOznRac>123456789</tns:BrOznRac><tns:OznPosPr>POSL1</tns:OznPosPr><tns:OznNapUr>12</tns:OznNapUr></tns:BrRac><tns:Pdv><tns:Porez><tns:Stopa>25.00</tns:Stopa><tns:Osnovica>10.00</tns:Osnovica><tns:Iznos>2.50</tns:Iznos></tns:Porez><tns:Porez><tns:Stopa>10.00</tns:Stopa><tns:Osnovica>10.00</tns:Osnovica><tns:Iznos>1.00</tns:Iznos></tns:Porez><tns:Porez><tns:Stopa>0.00</tns:Stopa><tns:Osnovica>10.00</tns:Osnovica><tns:Iznos>0.00</tns:Iznos></tns:Porez></tns:Pdv><tns:Pnp><tns:Porez><tns:Stopa>3.00</tns:Stopa><tns:Osnovica>10.00</tns:Osnovica><tns:Iznos>0.30</tns:Iznos></tns:Porez></tns:Pnp><tns:OstaliPor><tns:Porez><tns:Naziv>Porez na luksuz</tns:Naziv><tns:Stopa>15.00</tns:Stopa><tns:Osnovica>10.00</tns:Osnovica><tns:Iznos>1.50</tns:Iznos></tns:Porez></tns:OstaliPor><tns:IznosOslobPdv>12.00</tns:IznosOslobPdv><tns:IznosMarza>13.00</tns:IznosMarza><tns:IznosNePodlOpor>100.00</tns:IznosNePodlOpor><tns:Naknade><tns:Naknada><tns:NazivN>Povratna naknada</tns:NazivN><tns:IznosN>1.00</tns:IznosN></tns:Naknada></tns:Naknade><tns:IznosUkupno>145.68</tns:IznosUkupno><tns:NacinPlac>K</tns:NacinPlac><tns:OibOper>01234567890</tns:OibOper><tns:ZastKod>8c7de36c3cc62be2189bf417ed4ceee9</tns:ZastKod><tns:NakDost>false</tns:NakDost><tns:ParagonBrRac>0123/458/5</tns:ParagonBrRac></tns:Racun>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#racunId">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue/>
</Reference>
</SignedInfo>
<SignatureValue/>
<KeyInfo>
<KeyName/>
<X509Data/>
</KeyInfo>
</Signature>
</tns:RacunZahtjev></soapenv:Body></soapenv:Envelope>
U procesu potpisivanja potražim pSignNode, i pronađe ga, zatražim potpisivanje dokumenta i onda - ništa, ne potpiše ga!
|
|
|
|
|
Sva vremena su GMT +2. Trenutno vrijeme je: 21:29.
|
|
|
|