Forum » Programiranje » Davčne blagajne
Davčne blagajne
anarho ::
ce bo kdo imel se tezave z Androidom ... Base64 razred, pri kodiranju wrapa tekst po defaultu in vmes dodaja '\n', zato je potrebno izrecno uporabiti flag 'NO_WRAP'.
npr.
imam pa sedaj drug problem. Sam uporabljam Retrofit knjiznico in OkHttp klienta za komunikacijo z REST servici. Pri posiljanju tokena pride do napake:
meni zgleda kot bug v OkHttp klientu. Ce mi uspe resiti javim, ce pa je kdo ze naletel na isti problem in ga uspel resiti, pa prosim delite resitev z ostalimi.
Zgornjo napako dobim tudi pri posiljanju istega tokena kot je v dokumentaciji.
lp
npr.
Base64.encodeToString(json.getBytes('UTF-8'), Base64.URL_SAFE|Base64.NO_WRAP);
imam pa sedaj drug problem. Sam uporabljam Retrofit knjiznico in OkHttp klienta za komunikacijo z REST servici. Pri posiljanju tokena pride do napake:
{"fault":{"faultstring":"ExtractVariables ExtractVariables.BpExtractVATNumberJSON: Json path parsing failed for for flow variables copy.payload","detail":{"errorcode":"steps.extractvariables.JsonPathParsingFailure"}}}
meni zgleda kot bug v OkHttp klientu. Ce mi uspe resiti javim, ce pa je kdo ze naletel na isti problem in ga uspel resiti, pa prosim delite resitev z ostalimi.
Zgornjo napako dobim tudi pri posiljanju istega tokena kot je v dokumentaciji.
lp
Zgodovina sprememb…
- spremenil: anarho ()
Mavrik ::
Hmm, probaj pognati Charles Proxy in pogledati kako se payload razlikuje od primera?
The truth is rarely pure and never simple.
inkanet ::
@anarho
A pošiljaš na pravi URL? Url-ja za račune in poslovni prostor sta pri JSON-u različna.
....v1/cash_registers/invoices/register za Poslovni prostor
....v1/cash_registers/invoices za Račune
A pošiljaš na pravi URL? Url-ja za račune in poslovni prostor sta pri JSON-u različna.
....v1/cash_registers/invoices/register za Poslovni prostor
....v1/cash_registers/invoices za Račune
Zgodovina sprememb…
- spremenilo: inkanet ()
anarho ::
Hmm, probaj pognati Charles Proxy in pogledati kako se payload razlikuje od primera?
Mi ne rata ... na androidu napravi sem nastavil proxy networka, da posreduje klice prek racunalnika in vidim requeste in response ampak prikazuje cudne znake (kvadratki ipd). sem instaliral tudi Charlijev certifikat pa se vedno isto.
Mi pa isto napako javlja tudi ce hardkodiram JWT kot je v dokumentaciji, tako da ni problem v samem tokenu.
@inkanet, posiljam na razlicne ja. ne bi pa rad se z SOAPom ukvarjal leta 2015 ... ampak ocitno bom moral :S
Zgodovina sprememb…
- spremenil: anarho ()
Chuck Borris ::
@DamjanD za .net 3.5 sem našel tole:
http://www.componentpro.com/doc/saml/wo...
ampak pri meni nič ne pomaga, če spreminjam machine.config
http://www.componentpro.com/doc/saml/wo...
ampak pri meni nič ne pomaga, če spreminjam machine.config
anarho ::
Glede na to da google za iskalni niz BpExtractVATNumberJSON vrne samo dva rezultata (to temo in moje vprasanje na stackoverflowu), zgleda kot da napako dejansko vraca server. Probal sem tudi brez Retrofita in OkHttp-ja in s tem izkljucil moznost napake v knjiznicah ki jih uporabljam. Enako napako dobim tudi pri uporabi Android APIja (HttpsURLConnection)
Po opisu napake sodec (predvidevam da prvi dve crki predstavljata BusinessPremise) ni mogel sparsat VAT stevilke iz JSONa ki predstavlja poslovni prostor. Ce to drzi potem mi ni jasno kaksno VAT stevilko, ce tega ni nikjer v definiciji BusinessPremise razreda in zakaj ne vrnejo navadn response z napako da shema ni skladna?
sfuzlalo se mi bo pocas. morm spet pisat pisat na furs :(
{"fault":{"faultstring":"ExtractVariables ExtractVariables.BpExtractVATNumberJSON: Json path parsing failed for for flow variables copy.payload","detail":{"errorcode":"steps.extractvariables.JsonPathParsingFailure"}}}
Po opisu napake sodec (predvidevam da prvi dve crki predstavljata BusinessPremise) ni mogel sparsat VAT stevilke iz JSONa ki predstavlja poslovni prostor. Ce to drzi potem mi ni jasno kaksno VAT stevilko, ce tega ni nikjer v definiciji BusinessPremise razreda in zakaj ne vrnejo navadn response z napako da shema ni skladna?
sfuzlalo se mi bo pocas. morm spet pisat pisat na furs :(
Zgodovina sprememb…
- spremenil: anarho ()
inkanet ::
Vem da je trivialno ampak meni je isto napako javljalo ko sem podatke za račun pošiljal na URL od poslovnega prostora. Sem še enkrat preveril in mi naredi enako.
PrimozHisof ::
Danes so sporočili iz FURS, da dela povezava na XP SP3.
Končno imajo prav... FX 3.5, Tls 1.0.
Končno imajo prav... FX 3.5, Tls 1.0.
vofra ::
ima ze kdo narejen command line exe za komunikacijo s FURS za Windows (32,64),
sedaj, ko ne bo vec potrebna QR koda, bi se mogoce lotil predelave
sedaj, ko ne bo vec potrebna QR koda, bi se mogoce lotil predelave
anarho ::
inkanet dejansko tako deluje kot da posiljam na naslov od racunov, saj ocitno tezi da ne more davka extractat iz json payloada (davek seveda ni del poslovnega prostora ampak racuna) ... no to je vceraj javljalo. danes ista koda javlja 404 "Napačni parametri vnosa" :S
anarho ::
pardon ... se vedno javlja isto napako. 404:Napacni parametri vnosa javlja ce v header ne dodas charset=UTF-8
perci ::
sedaj, ko ne bo vec potrebna QR koda, bi se mogoce lotil predelaveQR koda ne bo potrebna, če boš namesto tega zagotovil zapis zahtevnaih podatkov v kodi PDF417 ali kodi 128.
vofra ::
res, ampak pred tem rabim
>command line exe za komunikacijo s FURS za Windows (32,64)
izgleda, da tega se nihce nima, sem nasel ene tri hrvaske, ki pa (se) niso prilagojene nasem (FURSovem) sistemu
>command line exe za komunikacijo s FURS za Windows (32,64)
izgleda, da tega se nihce nima, sem nasel ene tri hrvaske, ki pa (se) niso prilagojene nasem (FURSovem) sistemu
PrimozHisof ::
Chuck Borris je izjavil:
@DamjanD za .net 3.5 sem našel tole:
http://www.componentpro.com/doc/saml/wo...
ampak pri meni nič ne pomaga, če spreminjam machine.config
kaj če dodaš v registry še OID-e od SHA256, FX 4.0?
Nam še ni uspelo podpisati na 4.0. Smo predelali c#, ampak ni uspeha. Pa tudi če dvakrat kreiraš podpis na istih podatkih, je vsakič drugačen...tako Digest kot Signature..kaj je to za ena logika??
grandibal ::
Jaz podpisujem xml z libxmlsec in ga parsam z libxml2, pa mi noče parsati dokumenta, če je notri kakšen šumnik.
Če poskusim uporabiti latin1 encoding pa dobim vrnjeno Digitalni podpis ni ustrezen, brez šumnika pa gre normalno čez.
Ostalim deluje s šumniki normalno?
Če poskusim uporabiti latin1 encoding pa dobim vrnjeno Digitalni podpis ni ustrezen, brez šumnika pa gre normalno čez.
Ostalim deluje s šumniki normalno?
Mavrik ::
Jaz podpisujem xml z libxmlsec in ga parsam z libxml2, pa mi noče parsati dokumenta, če je notri kakšen šumnik.
Če poskusim uporabiti latin1 encoding pa dobim vrnjeno Digitalni podpis ni ustrezen, brez šumnika pa gre normalno čez.
Ostalim deluje s šumniki normalno?
Ne razumem kaj počneš z latin1 (v 21. stoletju?!) če je v glavi definiran UTF-8 kot encoding?
The truth is rarely pure and never simple.
Zgodovina sprememb…
- spremenil: Mavrik ()
grandibal ::
Strato5 ::
Tole s tole QR kodo je čedalje bolj annoying in vedno manj zanimivo...
sprobal sem že dve knjižnici za generiranje in če nastavim vse po specifikacijah (error correction L, version 3 itd) potem mi ena knjižnica generira kodo v velikosti 33x33 modulov (kar ni version 3, možno da knjižnica avtomatsko prilagodi verzijo količini podatkov ali kaj?...), druga knjižnica mi pa vrne dataoverflow exception... pač kao da je ZOI#davčna#časIzdaje vse skupaj preveč podatkov za version 3 QR kodo...
Vedno bolj imam občutek da so zadeve pisali kar neki politiki, brez da bi se posvetovali s "strokovnjaki".
V planu imam danes poslat še en mail na FURS, ker imm še nekaj drugih vprašanj zanje. Bom javil ko/če dobim kak odgovor.
LP, Matija7
sprobal sem že dve knjižnici za generiranje in če nastavim vse po specifikacijah (error correction L, version 3 itd) potem mi ena knjižnica generira kodo v velikosti 33x33 modulov (kar ni version 3, možno da knjižnica avtomatsko prilagodi verzijo količini podatkov ali kaj?...), druga knjižnica mi pa vrne dataoverflow exception... pač kao da je ZOI#davčna#časIzdaje vse skupaj preveč podatkov za version 3 QR kodo...
Vedno bolj imam občutek da so zadeve pisali kar neki politiki, brez da bi se posvetovali s "strokovnjaki".
V planu imam danes poslat še en mail na FURS, ker imm še nekaj drugih vprašanj zanje. Bom javil ko/če dobim kak odgovor.
LP, Matija7
theanswer3 ::
Sej sem napisal na eni od prejšnjih strani, da rabite generirat 33x33 kodo. Uradni odgovor iz fursa je bil to.
perci ::
Kot je bilo že večkrat povedano, se pripravlja sprememba pravilnika in vsebina kode ter vrste kod se bodo spremenile.
Zdej ne vem, kako ste vi navajeni delat, ampak če bi bil jaz na vašem mestu, ne bi tikal dela, ki se tiče generiranja in izpisa kod, dokler mi ne javijo končne rešitve.
Zdej ne vem, kako ste vi navajeni delat, ampak če bi bil jaz na vašem mestu, ne bi tikal dela, ki se tiče generiranja in izpisa kod, dokler mi ne javijo končne rešitve.
PrimozHisof ::
dela nam povezava in tudi podpis na .NET Framework 4.0. !
Problem je bil naslednji
CryptoConfig.AddAlgorithm(GetType(System.Deployment.Internal.CodeSigning.RSAPKCS1SHA256SignatureDescription), "http://www.w3.org/2001/04/xmldsig-more#...
to ne dela na FX 4.0. .... NI TEGA RAZREDA System.Deployment.Internal.CodeSigning
če pa kreiramo svoj C# DLL (osnovna koda je v VB) za description pa je OK
CryptoConfig.AddAlgorithm(GetType(HiFursLib.RSAPKCS1SHA256SignatureDescription), "http://www.w3.org/2001/04/xmldsig-more#...
Problem je bil naslednji
CryptoConfig.AddAlgorithm(GetType(System.Deployment.Internal.CodeSigning.RSAPKCS1SHA256SignatureDescription), "http://www.w3.org/2001/04/xmldsig-more#...
to ne dela na FX 4.0. .... NI TEGA RAZREDA System.Deployment.Internal.CodeSigning
če pa kreiramo svoj C# DLL (osnovna koda je v VB) za description pa je OK
CryptoConfig.AddAlgorithm(GetType(HiFursLib.RSAPKCS1SHA256SignatureDescription), "http://www.w3.org/2001/04/xmldsig-more#...
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Security.Cryptography; namespace HiFursLib { public class RSAPKCS1SHA256SignatureDescription : SignatureDescription { /// <summary> /// Registers the http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 algorithm /// with the .NET CrytoConfig registry. This needs to be called once per /// appdomain before attempting to validate SHA256 signatures. /// </summary> public static void Register() { CryptoConfig.AddAlgorithm( typeof(RSAPKCS1SHA256SignatureDescription), "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"); } /// <summary> /// .NET calls this parameterless ctor /// </summary> public RSAPKCS1SHA256SignatureDescription() { KeyAlgorithm = "System.Security.Cryptography.RSACryptoServiceProvider"; DigestAlgorithm = "System.Security.Cryptography.SHA256Managed"; FormatterAlgorithm = "System.Security.Cryptography.RSAPKCS1SignatureFormatter"; DeformatterAlgorithm = "System.Security.Cryptography.RSAPKCS1SignatureDeformatter"; } public override AsymmetricSignatureDeformatter CreateDeformatter(AsymmetricAlgorithm key) { var asymmetricSignatureDeformatter = (AsymmetricSignatureDeformatter)CryptoConfig.CreateFromName(DeformatterAlgorithm); asymmetricSignatureDeformatter.SetKey(key); asymmetricSignatureDeformatter.SetHashAlgorithm("SHA256"); return asymmetricSignatureDeformatter; } public override AsymmetricSignatureFormatter CreateFormatter(AsymmetricAlgorithm key) { var asymmetricSignatureFormatter = (AsymmetricSignatureFormatter)CryptoConfig.CreateFromName(FormatterAlgorithm); asymmetricSignatureFormatter.SetKey(key); asymmetricSignatureFormatter.SetHashAlgorithm("SHA256"); return asymmetricSignatureFormatter; } } }
Zgodovina sprememb…
- spremenil: PrimozHisof ()
anarho ::
Jaz lahko potrdim da smo uspešno implementirali celoten proces na Androidu s pomočjo REST storitev in JSON sporočil.
Nekaj opozoril za ostale ki bodo sli po podpobni poti.
Base64 v Androidu po defaultu dodaja '\n' pri kodiranju sporočil, zato je potrebno pri enkripciji uporabljati dodaten flag NO_WRAP.
Ce bo kdo uporabljal Retrofit knjiznico, priporocam da v @Body vstavlja TypedInput in ne String saj le tega knjiznica se enkrat pretvori v JSON in pri tem zamenja nekatere znake (kot npr enačaj) s primernim UNICODEom. Lahko se tudi nastavi lasten Gson converter z uporabo nastavitve 'disableHtmlEscaping()'.
Malce nejasno je v dokumentaciji zapisano kaj se pravzaprav podpisuje zato se enkrat ... podpisuje se:
BASE64URL(UTF8(JWS Header)) + "." + BASE64URL(Payload)
lp
Nekaj opozoril za ostale ki bodo sli po podpobni poti.
Base64 v Androidu po defaultu dodaja '\n' pri kodiranju sporočil, zato je potrebno pri enkripciji uporabljati dodaten flag NO_WRAP.
Ce bo kdo uporabljal Retrofit knjiznico, priporocam da v @Body vstavlja TypedInput in ne String saj le tega knjiznica se enkrat pretvori v JSON in pri tem zamenja nekatere znake (kot npr enačaj) s primernim UNICODEom. Lahko se tudi nastavi lasten Gson converter z uporabo nastavitve 'disableHtmlEscaping()'.
Malce nejasno je v dokumentaciji zapisano kaj se pravzaprav podpisuje zato se enkrat ... podpisuje se:
BASE64URL(UTF8(JWS Header)) + "." + BASE64URL(Payload)
lp
Zgodovina sprememb…
- spremenil: anarho ()
anarho ::
te spremembe ne bodo bistveno vplivale na proces fiskalizacije racunov in registracije prostorov ... kokr razumem se bo spremenil algoritem za generiranje ZOIja kar pa za sabo povlece spremembo ene ali dveh vrstic kode.
miran123 ::
<?php $url = 'https://blagajne-test.fu.gov.si:9002/v1/cash_registers'; $Cert = '/home/usb/Desktop/php/test-tls.cer'; $xml_string = file_get_contents('/home/usb/Desktop/php/PrimerDokumentacijaPrijavaProstoraXmlPodpisan.xml'); $xml = new DOMDocument(); $xml->loadXML($xml_string); $header = array( "Content-Type: text/xml; charset=UTF-8", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: \"/echo\"" ); $conn = curl_init(); $settings = array( CURLOPT_URL => $url, CURLOPT_CONNECTTIMEOUT_MS => 3000, CURLOPT_TIMEOUT_MS => 3000, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $xml, CURLOPT_FRESH_CONNECT => true, CURLOPT_HTTPHEADER => $header, // secure this! CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_CAINFO => $Cert ); curl_setopt_array($conn, $settings); if ($rawResponse = curl_exec($conn)) { print_r($rawResponse); } else { throw new Exception('CODECURL: ' . curl_error($conn)); } echo "\n".$xml->saveXML(); ?>
Uporabil sem objavljen primer na nihovi strani
PrimerDokumentacijaPrijavaProstoraXmlPodpisan.xml
Pa mi javi tole:
PHP Fatal error: Uncaught exception 'Exception' with message 'CODECURL: SSL certificate problem: self signed certificate in certificate chain' in /home/usb/Desktop/php/fis.php:38 Stack trace: #0 {main} thrown in /home/usb/Desktop/php/fis.php on line 38
Zgodovina sprememb…
- spremenilo: miran123 ()
sajmons ::
Kljub temu da uspešno prijavim poslovni prostor, dobim pri vsakem poslanem računu napako S006 (Podatki o poslovnem prostoru niso posredovani).
Nekajkrat sem že preveril XML in vse zgleda OK. Ker mi je prejšnji teden nekajkrat uspelo poslati račun BP, sumim da je težava na testnem web serisu.
Se še komu to dogaja?
Nekajkrat sem že preveril XML in vse zgleda OK. Ker mi je prejšnji teden nekajkrat uspelo poslati račun BP, sumim da je težava na testnem web serisu.
Se še komu to dogaja?
miran123 ::
Prijava prostora.
Tole mi javi moj program
Tole je pa odgovor iz durs serverja:
Poslal sem DURS PrimerDokumentacijaPrijavaProstoraXmlPodpisan.xml
in uporabil test-tls.cer
Tole mi javi moj program
*********************************** TLS handshake successful Response: 200 OK, data... 188... Finished. Disconnected. ***********************************
Tole je pa odgovor iz durs serverja:
************************************************* <html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 2311022752657740899</body></html> **************************************************
Poslal sem DURS PrimerDokumentacijaPrijavaProstoraXmlPodpisan.xml
in uporabil test-tls.cer
Zgodovina sprememb…
- spremenilo: miran123 ()
grandibal ::
theanswer3 ::
Kljub temu da uspešno prijavim poslovni prostor, dobim pri vsakem poslanem računu napako S006 (Podatki o poslovnem prostoru niso posredovani).
Nekajkrat sem že preveril XML in vse zgleda OK. Ker mi je prejšnji teden nekajkrat uspelo poslati račun BP, sumim da je težava na testnem web serisu.
Se še komu to dogaja?
Preveri če se TaxNumber in BusinessPremiseID na XML-u od poslovnega prostora ujemata s tistima na XML-u od računa.
miran123 ::
miran123 ::
unit mainhttcptest; {$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, lNet, lHTTP, lNetComponents, ExtCtrls, StdCtrls, Buttons, Menus, lHTTPUtil; type { TMainForm } TMainForm = class(TForm) ButtonSendRequest: TButton; EditURL: TEdit; HTTPClient: TLHTTPClientComponent; LabelURI: TLabel; SSL: TLSSLSessionComponent; MainMenu1: TMainMenu; MemoHTML: TMemo; MemoStatus: TMemo; MenuItemExit: TMenuItem; MenuItemAbout: TMenuItem; MenuItemHelp: TMenuItem; MenuItemFile: TMenuItem; MenuPanel: TPanel; PanelSep: TPanel; procedure ButtonSendRequestClick(Sender: TObject); procedure EditURLKeyPress(Sender: TObject; var Key: char); procedure HTTPClientDisconnect(aSocket: TLSocket); procedure HTTPClientDoneInput(ASocket: TLHTTPClientSocket); procedure HTTPClientError(const msg: string; aSocket: TLSocket); function HTTPClientInput(ASocket: TLHTTPClientSocket; ABuffer: pchar; ASize: dword): dword; procedure HTTPClientProcessHeaders(ASocket: TLHTTPClientSocket); procedure MenuItemAboutClick(Sender: TObject); procedure MenuItemExitClick(Sender: TObject); procedure SSLSSLConnect(aSocket: TLSocket); private HTTPBuffer: string; procedure AppendToMemo(aMemo: TMemo; const aText: string); { private declarations } public { public declarations } end; var MainForm: TMainForm; implementation { TMainForm } procedure TMainForm.HTTPClientError(const msg: string; aSocket: TLSocket); begin MessageDlg(msg, mtError, [mbOK], 0); end; procedure TMainForm.HTTPClientDisconnect(aSocket: TLSocket); begin AppendToMemo(MemoStatus, 'Disconnected.'); end; procedure TMainForm.ButtonSendRequestClick(Sender: TObject); var aHost, aURI: string; aPort: Word; XMLFile: TStrings; request:TClientRequest; begin HTTPBuffer := ''; SSL.SSLActive := DecomposeURL('https://blagajne-test.fu.gov.si:9002/v1/cash_registers', aHost, aURI, aPort); HTTPClient.Host := aHost; //aHost = 'blagajne-test.fu.gov.si' HTTPClient.URI := aURI; //aURI = '/v1/cash_registers' HTTPClient.Port := aPort; // aPort = 9002 XMLFile:= TStringList.Create; try XMLFile.LoadFromFile('/home/usb/Desktop/php/PrimerDokumentacijaPrijavaProstoraXmlPodpisan.xml'); //tole je nespremenjen na dursu. // HTTPClient.Method:= hmPost; HTTPClient.AddExtraHeader(XMLFile.Text); XMLFile.Clear; XMLFile.LoadFromFile('/home/usb/Desktop/php/key/test-tls.cer'); // XMLFile.LoadFromFile('/home/usb/Desktop/php/key/sitest-ca.cer'); // XMLFile.LoadFromFile('/home/usb/Desktop/php/key/TaxCATest.cer'); HTTPClient.AddExtraHeader(XMLFile.Text); finally XMLFile.Free; end; HTTPClient.SendRequest; end; procedure TMainForm.EditURLKeyPress(Sender: TObject; var Key: char); begin if Key = #13 then ButtonSendRequestClick(Sender); end; procedure TMainForm.HTTPClientDoneInput(ASocket: TLHTTPClientSocket); begin aSocket.Disconnect; AppendToMemo(MemoStatus, 'Finished.'); end; function TMainForm.HTTPClientInput(ASocket: TLHTTPClientSocket; ABuffer: pchar; ASize: dword): dword; var oldLength: dword; begin oldLength := Length(HTTPBuffer); setlength(HTTPBuffer,oldLength + ASize); move(ABuffer^,HTTPBuffer[oldLength + 1], ASize); MemoHTML.Text := HTTPBuffer; MemoHTML.SelStart := Length(HTTPBuffer); AppendToMemo(MemoStatus, IntToStr(ASize) + '...'); Result := aSize; // tell the http buffer we read it all end; procedure TMainForm.HTTPClientProcessHeaders(ASocket: TLHTTPClientSocket); begin AppendToMemo(MemoStatus, 'Response: ' + IntToStr(HTTPStatusCodes[ASocket.ResponseStatus]) + ' ' + ASocket.ResponseReason + ', data...'); end; procedure TMainForm.MenuItemAboutClick(Sender: TObject); begin MessageDlg('Copyright (c) 2006-2008 by Ales Katona and Micha Nelissen. All rights deserved :)', mtInformation, [mbOK], 0); end; procedure TMainForm.MenuItemExitClick(Sender: TObject); begin Close; end; procedure TMainForm.SSLSSLConnect(aSocket: TLSocket); begin MemoStatus.Append('TLS handshake successful'); end; procedure TMainForm.AppendToMemo(aMemo: TMemo; const aText: string); begin aMemo.Append(aText); aMemo.SelStart := Length(aMemo.Text); end; initialization {$I mainhttcptest.lrs} end.
<?xml version="1.0" encoding="utf-8"?><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>d9e022a8-362c-4aba-857d-c2b4e79295bd</fu:MessageID> <fu:DateTime>2015-10-01T12:07:28</fu:DateTime> </fu:Header> <fu:BusinessPremise> <fu:TaxNumber>99999862</fu:TaxNumber> <fu:BusinessPremiseID>36CF</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>2100-08-25</fu:ValidityDate> <fu:SoftwareSupplier> <fu:TaxNumber>24564444</fu:TaxNumber> </fu:SoftwareSupplier> <fu:SpecialNotes>Primer prijave poslovnega prostora</fu:SpecialNotes> </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="#data"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /><DigestValue>mqBkm+EhzlSunaTRw289IQ8/013GIQsKcFavXymJu4k=</DigestValue></Reference></SignedInfo><SignatureValue>NRVae9V4z9GGLQk96rUi5GE2dBiqtwHivYvK0nFSftP7wONIRwSOxQUfPTXZMGTUYxaWDolayO3n1Sm3uAfWhdHQWSWJmwaSJiHlOl8M4dbKciR7tsZpQEA75i1pRn7L7xcmBkAbDUKSU9kPsopQ3ZqmYGjozLs76ByEe//h2r1dCrDVARpCjCOmjhmUVcXqiNKUWU+f+HB1t2uL6GTq4zN3jw7mK/r5aDqGHfMkKdh9VYUdEMNkkXnZWoR9aHIsLeaC0SJM5ulk5UWaDYH23nhxE3cOSQp5TQNqrAlHNQAiXYybp61XfNTpeiq7M1ccUWCAuRNKhtswj6y5Ic4QQg==</SignatureValue><KeyInfo><X509Data><X509IssuerSerial><X509IssuerName>CN=Tax CA Test, O=state-institutions, C=SI</X509IssuerName><X509SerialNumber>2575988469811686647</X509SerialNumber></X509IssuerSerial><X509SubjectName>CN="ITM STORITVE, ŠPELA PERGAR S.P.", SERIALNUMBER=1, OU=99999862, OU=DavPotRacTEST, O=state-institutions, C=SI</X509SubjectName></X509Data></KeyInfo></Signature></fu:BusinessPremiseRequest> </soapenv:Body> </soapenv:Envelope>
Tole javi program
TLS handshake successful Response: 200 OK, data... 188... Finished. Disconnected.
Tole dobimi od durs serverja.
<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 2311022752657626593</body></html>
DamijanD ::
@PrimozHisof: Meni in Chucku Borrisu tudi deluje na 4.0, nisva pa uporabila lastne implementacije opisa, ampak sva kar uporabila Security.Cryptography.dll
S tem je meni delovalo tudi na XPjih (SP3 + POSReady 2009 registry vnos + KB3055973)
@Chucku Borris: Ni mi uspelo, da bi zadeva delovala v 3.5, ampak ni tak velik problem, ker (na srečo) ni bilo težav pri portanju aplikacije v 4.0. Tako, da jaz se s 3.5 ne bom več ukvarjal... Si ti imel kaj več uspeha?
@miran123: Kako importat wsdl je opisal Chuck na prvi ali drugi strani. Jaz s tem echo lahko delam, ni mi pa jasno kako bi podpisoval te objekte, tako da jaz delam ročne webrequeste.
S tem je meni delovalo tudi na XPjih (SP3 + POSReady 2009 registry vnos + KB3055973)
@Chucku Borris: Ni mi uspelo, da bi zadeva delovala v 3.5, ampak ni tak velik problem, ker (na srečo) ni bilo težav pri portanju aplikacije v 4.0. Tako, da jaz se s 3.5 ne bom več ukvarjal... Si ti imel kaj več uspeha?
@miran123: Kako importat wsdl je opisal Chuck na prvi ali drugi strani. Jaz s tem echo lahko delam, ni mi pa jasno kako bi podpisoval te objekte, tako da jaz delam ročne webrequeste.
sajmons ::
Sem preveril že nekajkrat :(
theanswer3 je izjavil:
Kljub temu da uspešno prijavim poslovni prostor, dobim pri vsakem poslanem računu napako S006 (Podatki o poslovnem prostoru niso posredovani).
Nekajkrat sem že preveril XML in vse zgleda OK. Ker mi je prejšnji teden nekajkrat uspelo poslati račun BP, sumim da je težava na testnem web serisu.
Se še komu to dogaja?
Preveri če se TaxNumber in BusinessPremiseID na XML-u od poslovnega prostora ujemata s tistima na XML-u od računa.
vuego ::
Odstrani tag "closingTag" iz BusinessPremise XML-ja in poizkusi ponovno.
Če je ta tag prisoten pomeni, da je enota zaprta.
lp
Če je ta tag prisoten pomeni, da je enota zaprta.
lp
sajmons ::
51M3K ::
Tudi jaz se ukvarjam z enim problemom, katerega sem že zasledil v tej temi, rešitve pa še nimam.
Podpisujem XML za poslovni prostor, pa vedno dobim odgovor, da digitalni podpis ni ustrezen.
Imam XML z ustrezno vsebino http://pastebin.com/xDCEqCWS
Podpisujem skoraj enako kot je v testnem primeru s potrdilom, ki so mi ga poslali http://pastebin.com/nxDkJx6B
(razlika je samo, da naložim certifikat iz datoteke, ne izberem ga iz shrambe in da uporabim del kode iz Security.Cryptography.dll za definicijo SHA256, ker je v frameworku 4.0 ni)
Dobim podpisan XML, ki ga pošljem na strežnik http://pastebin.com/4U0HTtcg
in dobim odgovor, da podpis ni ustrezen.
Če kdo kaj ve, se priporočam.
Lp, S.
Podpisujem XML za poslovni prostor, pa vedno dobim odgovor, da digitalni podpis ni ustrezen.
<fu:ErrorCode>S003</fu:ErrorCode> <fu:ErrorMessage>Digitalni podpis ni ustrezen</fu:ErrorMessage>
Imam XML z ustrezno vsebino http://pastebin.com/xDCEqCWS
Podpisujem skoraj enako kot je v testnem primeru s potrdilom, ki so mi ga poslali http://pastebin.com/nxDkJx6B
(razlika je samo, da naložim certifikat iz datoteke, ne izberem ga iz shrambe in da uporabim del kode iz Security.Cryptography.dll za definicijo SHA256, ker je v frameworku 4.0 ni)
Dobim podpisan XML, ki ga pošljem na strežnik http://pastebin.com/4U0HTtcg
in dobim odgovor, da podpis ni ustrezen.
Če kdo kaj ve, se priporočam.
Lp, S.
Loading...
sajmons ::
Jaz sem imel podobno težavo. Poskusi vklopiti PreserveWhitespace na XML dokumentu, ki ga podpisuješ.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.LoadXml(xml);
// sledi koda za podpis
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.LoadXml(xml);
// sledi koda za podpis
51M3K ::
Jaz sem imel podobno težavo. Poskusi vklopiti PreserveWhitespace na XML dokumentu, ki ga podpisuješ.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.LoadXml(xml);
// sledi koda za podpis
To imam že od začetka, žal ni v tem problem.
p.s.: Zgoraj ko sem objavil XML na pastebin, je SoftwareSupplier TaxNumber dolga 7 znakov in ne ustreza shemi; to sem naredil samo za zakritje informacij, drugače je vsebina pri podpisovanju in pošiljanju ustrezna.
Loading...
sajmons ::
Kaj pa pravi schema validator?
Jaz sem imel podobno težavo. Poskusi vklopiti PreserveWhitespace na XML dokumentu, ki ga podpisuješ.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.LoadXml(xml);
// sledi koda za podpis
To imam že od začetka, žal ni v tem problem.
p.s.: Zgoraj ko sem objavil XML na pastebin, je SoftwareSupplier TaxNumber dolga 7 znakov in ne ustreza shemi; to sem naredil samo za zakritje informacij, drugače je vsebina pri podpisovanju in pošiljanju ustrezna.
51M3K ::
Vsebina ustreza shemi, vse je ok. Pravim samo, da sem zgoraj, ko sem objavil kodo, nepodpisan in podpisan XML, za zakritje informacij spremenil nekatere podatke v XMLju in sem dal v SoftwareSupplier TaxNumber 1234567, moral pa bi dat 12345678, da bi blo ok, da ne bo kdo mislil, da mi zaradi tega ne dela.
Loading...
sajmons ::
51m3k: Mislim, da imaš problem v podpisu, ker moj izgleda precej drugače http://pastebin.com/9UaACa0L
grandibal ::
@51M3K
Kaj pa če spremeniš
Mislim, da je "test" za Račun, "data" pa za Poslovni prostor, če ima to sploh kaj veze.
Kaj pa če spremeniš
<fu:BusinessPremiseRequest Id="test">v
<fu:BusinessPremiseRequest Id="data">in potem URI
<Reference URI="#data">?
Mislim, da je "test" za Račun, "data" pa za Poslovni prostor, če ima to sploh kaj veze.
51M3K ::
Ne, referenca nima vpliva, čeprav sem tudi to že poizkusil.
sajmons, najina podpisa sta razen podpisa (ki je isto dolg) in ostalih stvari, ki se ločijo glede na enega in drugega popolnoma enaka: http://pastebin.com/WazRe4zU
sajmons, najina podpisa sta razen podpisa (ki je isto dolg) in ostalih stvari, ki se ločijo glede na enega in drugega popolnoma enaka: http://pastebin.com/WazRe4zU
Loading...
sajmons ::
51M3K: ja, mogoče vsebinsko, ampak moj je kot si najbrž opazil brez praznih znakov (whitespace-ov) problem maš v neustrezni kanonikalizaciji.
XML Signature @ Wikipedia
XML Signature @ Wikipedia
grandibal ::
Meni v Delphi XE3 s komponento HTTPReqResp vrne vredu response, če pa uporabim INDY 10 IdHTTP komponento, pa vrne tole.
Ali je kdo dobival tak odgovor, pa mu je uspelo rešit?
<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 2311022752657630949</body></html>
Ali je kdo dobival tak odgovor, pa mu je uspelo rešit?
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne - PHPOddelek: Programiranje | 6203 (1249) | vsepocenv |
» | C# davčno potrjevanjeOddelek: Programiranje | 4321 (3790) | windigo |
» | E-računOddelek: Programiranje | 7422 (4185) | ivanhoe5x |
» | PHP davčna blagajnaOddelek: Programiranje | 8044 (6068) | brble |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3167 (1897) | peterv6i |