Natrag   Forum.hr > Informatička tehnologija > Za napredne korisnike > Programiranje

Programiranje Za programere i one koji to žele postati ...

Odgovor
 
Tematski alati Opcije prikaza
Old 15.10.2012., 10:48   #61
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.
tompagrompa is offline  
Odgovori s citatom
Old 15.10.2012., 13:26   #62
Quote:
GuraJura kaže: Pogledaj post
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
Baphomet is offline  
Odgovori s citatom
Old 15.10.2012., 15:55   #63
Quote:
tompagrompa kaže: Pogledaj post
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.
GuraJura is offline  
Odgovori s citatom
Old 15.10.2012., 15:56   #64
Quote:
Baphomet kaže: Pogledaj post
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.
GuraJura is offline  
Odgovori s citatom
Old 15.10.2012., 18:10   #65
Quote:
GuraJura kaže: Pogledaj post
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š.
acmevagabundo is offline  
Odgovori s citatom
Old 15.10.2012., 20:24   #66
Quote:
acmevagabundo kaže: Pogledaj post
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 ???
GuraJura is offline  
Odgovori s citatom
Old 15.10.2012., 20:34   #67
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 ?
GuraJura is offline  
Odgovori s citatom
Old 16.10.2012., 08:27   #68
Quote:
tompagrompa kaže: Pogledaj post
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.
PBDudek is offline  
Odgovori s citatom
Old 16.10.2012., 08:38   #69
Evo, na stranici http://fiskalizacija-dev.com.hr/preuzmi.aspx je sadržaj napokon dostupan, pa možete preuzeti aktualnu komponentu.
RenatoIT is offline  
Odgovori s citatom
Old 17.10.2012., 00:59   #70
Quote:
Baphomet kaže: Pogledaj post
Eto potpisano i uspješno poslano sa prastarim Delphi 7.0 i XML Security Library-em (http://www.aleksey.com/xmlsec/)

Evo radi i na VB6. I potpisivanje i sapunica i SSL i ........

a1centar is offline  
Odgovori s citatom
Old 17.10.2012., 08:46   #71
Quote:
GuraJura kaže: Pogledaj post
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
Code111 is offline  
Odgovori s citatom
Old 17.10.2012., 10:00   #72
Š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...
trex13 is offline  
Odgovori s citatom
Old 17.10.2012., 12:19   #73
Quote:
a1centar kaže: Pogledaj post
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
Kruno M is offline  
Odgovori s citatom
Old 17.10.2012., 12:26   #74
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:
Quote:
Ovo je očekivani rezultat. Riječ je o različitim standardima. Od korisnika se eksplicitno traži korištenje http://www.w3.org/2001/10/xml-exc-c14n# za poruku zahtjeva kao što je opisano u Tehničkoj specifikaciji u poglavlju 7. Odgovor koji vraća CIS je prema http://www.w3.org/TR/2001/REC-xml-c14n-20010315 i to ne bi trebalo imati utjecaja na rad s porukom odgovora na strani korisnika.
Veky is offline  
Odgovori s citatom
Old 17.10.2012., 13:56   #75
Quote:
Veky kaže: Pogledaj post
...
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
acmevagabundo is offline  
Odgovori s citatom
Old 17.10.2012., 14:35   #76
Kaže:
xmlsec --verify p2.xml
func=xmlSecOpenSSLEvpDigestVerify:file=..\src\open ssl\digests.c:line=229bj=sha1ubj=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...
Veky is offline  
Odgovori s citatom
Old 17.10.2012., 14:55   #77


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
Baphomet is offline  
Odgovori s citatom
Old 17.10.2012., 15:19   #78
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.
Veky is offline  
Odgovori s citatom
Old 17.10.2012., 15:29   #79
Quote:
Veky kaže: Pogledaj post
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
Baphomet is offline  
Odgovori s citatom
Old 17.10.2012., 15:51   #80
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!
Veky is offline  
Odgovori s citatom
Odgovor



Kreni na podforum




Sva vremena su GMT +2. Trenutno vrijeme je: 21:29.