Autor Téma: Delphi a EKASA  (Přečteno 1568 krát)

Offline bronek999

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
    • Verze Delphi: Delphi 7, XE7
Delphi a EKASA
« kdy: 12-03-2019, 10:09:42 »
Zakladam toto vlakno na zdielanie skusenosti  s vyvojom aplikacii pre ekasu.

Dost je to podobne s ceskou EET, cerpal som tu vo vlakne https://forum.delphi.cz/index.php/topic,15267.0.html a nasiel som tam vela inspiracii.
Na rozdiel od EET sa na Slovensku kluce ukladaju do chraneneho uloziska. A tu mam otazku.
Od financnej spravy dostane pouzivatel xml subor s autentifikacnymi a identifikacnymi udajmi. Z neho viem  cez Base64 dekodovat pfx(PKCS#12) krypto archiv.
Vzorove priklady maju cca 5kB. Financne riaditelstvo nevie ake velke budu realne autentifikacne udaje, odhadli ze budu do 10kB.
Z archivu viem exportovat privatny kluc, ten ma cca 1.5kB.

Zaujima ma ci je mozne kryptovat SOAP XML (pouzivam xmlsec) len tym privatnym klucom alebo je potrebne do uloziska ukladat cely pfx archiv a heslo k nemu?

soaper

  • Host
Re:Delphi a EKASA
« Odpověď #1 kdy: 20-03-2019, 19:27:50 »
Zdravím,

k podepisování SOAP zprávy musíte mít oba, tj. jak veřejný klíč tak i privátní klíč (veřejný klíč je součástí hlavičky SOAP zprávy). Doporučuji vyexportovat oba klíče do PEM (Base64) a ukládat je textově. Při exportování potřebujete Heslo, a pak to heslo už nikdy nebudete potřebovat.

Chci se také zeptat, funguje Vám HTTP POST request na jejich Integrační Prostředí?

https://iekasa.financnasprava.sk/soap/services/v2

Mně to vždy vrátí HTTP 500 -- Internal Server Error, i když tam posílám jejich vzorové requesty.

bronek

  • Host
Re:Delphi a EKASA
« Odpověď #2 kdy: 22-03-2019, 15:51:04 »
Dakujem za odpoved.
Post funguje.
Kedysi to bezalo aj ContentType text/html

Potom to zmenili bez akehokolvek oznamenia a aktualne to ide len s application/soap+xml

Ako prve som to testoval so SoapUI. Ak som importoval original wsdl tak bez problemov. Rucne vyrobeny htp.Post siel, potom to zmenili a musel som zmenit ten ContentType

Offline bronek999

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
    • Verze Delphi: Delphi 7, XE7
Re:Delphi a EKASA
« Odpověď #3 kdy: 22-03-2019, 16:00:38 »
Dakujem za odpoved.
Post funguje.
Kedysi to bezalo aj ContentType text/html

Potom to zmenili bez akehokolvek oznamenia a aktualne to ide len s application/soap+xml

Ako prve som to testoval so SoapUI. Ak som importoval original wsdl tak bez problemov. Rucne vyrobeny htp.Post siel, potom to zmenili a musel som zmenit ten ContentType

Omylom som to poslal bez prihlasenia na delphi.cz

My to mame v podstate cele rozbehane, tie kluce ukladame v povodnej podobe aku zasiela financna sprava, iba z xml vyberieme archiv a Base64 ho dekodujeme na binarne data.
Jedine s cim mam zatial problem tak je zapisanie BinarySecurityTokenu  -  obcas to vyhodi acces violation. Riadok iNode2.Text := ............................

do Inode2.Text som povodne vkladal cely dlhy retazec (~2kB). Na skusku som tam dal aj kratky text 'GetRawCertDataAsBase64String' a niekde dalej som ho v surovom requeste nahradil celym dlhym textom cca 2kB. Ale stale mi to obcas vyhodi acces violation.

Pouzivam Delphi 7, neviem ci je tam s IXMLNode nejaka chyba alebo je problem u mna. Na mojom vyvojovom PC to vyhodi chybu zriedkavo, na testovacom PC skoro stale.
Viem to softverovo osetrit /zaplatat/ ale chcem to mat vyriesene. Akurat nebol na to cas, tak je to len zaplatane.

Kód: Delphi [Vybrat]
  1.                                 iNode2 := iNode2.ChildNodes.FindNode('wsse:BinarySecurityToken','http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd');
  2.                                 if iNode2 <> nil then
  3.                                 begin
  4.                                         try
  5.                                                 iNode2.Text := 'GetRawCertDataAsBase64String';
  6.                                         except
  7.                                                 AddWarning('Error.GetRawCertDataAsBase64String');
  8.                                                 FErrorCode := F64AccesViolation;
  9.                                                 Exit;
  10.                                         end;
  11.                                 end;

requesty posielam cez TIdHttp s SSL IOHandlerom. Samostatny TThread aby som to vedel po 2 sekundach bez odpovede stopnut.
Cele spracovanie aj so zapisom do chraneneho uloziska je zhruba 800mS, ak server odpoveda nacas.
« Poslední změna: 22-03-2019, 16:04:55 od bronek999 »

soaper

  • Host
Re:Delphi a EKASA
« Odpověď #4 kdy: 22-03-2019, 18:18:04 »
Děkuji za radu, moc jste mi pomohl.

S tím Vaším problémem mě napadá jen to, že ten node ještě neexistuje ve chvíli, kdy se snažíte do něho vepisovat. Nejsem si jistý, co vrací iNode2.ChildNodes.FindNode(), a navíc bych na to vytvořil novou proměnnou.

Offline bronek999

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
    • Verze Delphi: Delphi 7, XE7
Re:Delphi a EKASA
« Odpověď #5 kdy: 26-03-2019, 08:28:39 »
Mne to posledne dva dni zase nefunguje. Nejdu mi ani vzorove requesty cez SoapUI. Pisal som uradnikom na podporu, odstal som len strohu odpoved ze bolo realizovany update rozhrania.
A ze vsetko funguje ako ma. Odpoved hodna uradnika. Dnes to zas nefunguje, neviem ci som ja hlupak.

Chyba tu nejaka komunita, ktora by spolupracovala ak ak je nejaky problem na strane financnej spravy tak im to dala patricne vyzrat. Pretoze vzdy tahame za kratsi koniec, u nich problem nikdy nie je.

Offline Slappy

  • Plnoletý
  • ***
  • Příspěvků: 164
  • Karma: 9
  • Slappy
    • Verze Delphi: 10.2 Tokyo + Vsetky :)
    • unSigned
Re:Delphi a EKASA
« Odpověď #6 kdy: 27-03-2019, 16:26:09 »
Mne to posledne dva dni zase nefunguje. Nejdu mi ani vzorove requesty cez SoapUI. Pisal som uradnikom na podporu, odstal som len strohu odpoved ze bolo realizovany update rozhrania.
A ze vsetko funguje ako ma. Odpoved hodna uradnika. Dnes to zas nefunguje, neviem ci som ja hlupak.

Chyba tu nejaka komunita, ktora by spolupracovala ak ak je nejaky problem na strane financnej spravy tak im to dala patricne vyzrat. Pretoze vzdy tahame za kratsi koniec, u nich problem nikdy nie je.

Skus napisat ludom zo Slovensko.Digital

Riesia vsetko okolo statneho IT kam spada aj eKasa.
Moje projekty: http://www.unsigned.sk Tvorba cool dizajnovych instalatorov v NSIS a Inno Setup. Rozsirenie pre Visual Studio a RAD Studio pre tvorbu NSIS a Inno Setup instalatorov.

soaper

  • Host
Re:Delphi a EKASA
« Odpověď #7 kdy: 27-03-2019, 17:29:25 »
V pondělí asi měli nějakou údržbu. Celý den mi to vrátilo chybu s kódem -1, něco ve smyslu "Systém je nyní vytížený, zkuste to prosím později". XML zprávy ale normálně procházely těmi XSD schema a WSSecurity kontrolami, tj. když jsem schválně porušil integritu XML dokumentu, tak to vrátilo jinou chybu.

soaper

  • Host
Re:Delphi a EKASA
« Odpověď #8 kdy: 27-03-2019, 17:33:12 »
Jinak, že neexistuje veřejná komunita, to je asi kvůli té dohodě o mlčenlivosti, kterou dostala každá firma, která se snaží integrovat do eKasy. Souhlasím ale s tím, že by nám to všem hodně pomohlo jak při vývoji, tak i provozu, např. když udělají nějaké breaking changes přes noc, abychom byli o tom informováni.

soaper

  • Host
Re:Delphi a EKASA
« Odpověď #9 kdy: 01-04-2019, 16:31:47 »
Tady je zajímavá diskuze ohledně CHDÚ. Doporučuji přečíst.

https://forum.root.cz/index.php?topic=20242

Offline bronek999

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
    • Verze Delphi: Delphi 7, XE7
Re:Delphi a EKASA
« Odpověď #10 kdy: 02-04-2019, 08:49:46 »
Excellent
Rated 1 time
Minuly tyzden som hned rano hlasil financnej sprave ze im to nefunguje. Poobede som dostal email ze robili nejaky update, nic sa v podstate nemenilo a sluzba bezi ako ma.
Mne nie. Vykaslal som sa na to a siel domov. V utorok rovnaka situacia. Uz ma to naozaj sralo a zacal som byt dotieravy. Potom som dostal otazku : "A naozaj vam to veobec nekomunikuje?"

Nechapem. Si myslia ze nemam nic na robote len ich otravovat? Nesli ani vzorove requesty co som mal od nich.
Vymenili sme si par emailov a potom mi odpisali ze nech to skusim. Vzorovy request cez SoapUI presiel, moj z aplikacie nie. Vyhadzovalo mi nejaku chybu s TLS.
Nakoniec to skoncilo tak ze v mojej aplikacii som nechal TLS 1.2, aj ked v ich podkladoch je pozadovana minimalna verzia 1.1


Chapem ze to robia ludia a nie stroje. Ludia robia chyby. Ale nech si to tam preboha niekto prizna!!!!!!!!!!!!!!
Ja ked nieco programujem tak narobim kopec chyb. Nikto nie je dokonaly. Ale ked ma na nu niekto upozorni tak som mu kurva vdacny!!!!!!!!!!

V piatok poobede som dostal "oficialnu odpoved":
Dobrý deň,

INT prostredie evidovalo nedostupnosť, ktorá bola 26. 3. 2019 17:10 odstránená.
Volanie môžete opakovať.

Projektový tím ekasa




Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 130
  • Karma: 8
    • Verze Delphi: XE2
Re:Delphi a EKASA
« Odpověď #11 kdy: 02-04-2019, 11:59:05 »
Toť obvyklá reakce nejen státní  správy 
Má nějaký problém ?

1. Zapírat

Pokud selže postup podle bodu 1 postupujeme podle bodu 2
2. Lhát

Pokud selže postup o podle bodu 2 postupujeme podle bodu 3
3. Bagatelizovat

Pokud selže postup o podle bodu 3 postupujeme podle bodu 4
4. hodit zavinění na jiného (třeba na vás)


soaper

  • Host
Re:Delphi a EKASA
« Odpověď #12 kdy: 04-04-2019, 12:00:19 »
Pokud se někdo snažíte vyvíjet pro eKasu ORP běžící na PC/Notebooku se standardním HDD tak na to rovnou zapomeňte. Protože podle požadavků CHDÚ se musí dokoupit WORM paměť, která se běžně neprodává a která by musela být svařená do základní desky nebo jiným způsobem neoddělitelná od hardwaru. A pokud jde o mobilu/tabletu s androidem, tak to se taky nedá bez zásahu do kernelu, a navíc pokud dojde paměť v mobilu tak se musí koupit nový, protože internal storage se nedá demontovat a nahradit novým.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2275
  • Karma: 101
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Delphi a EKASA
« Odpověď #13 kdy: 04-04-2019, 13:10:35 »
Pokud se někdo snažíte vyvíjet pro eKasu ORP běžící na PC/Notebooku se standardním HDD tak na to rovnou zapomeňte. Protože podle požadavků CHDÚ se musí dokoupit WORM paměť, která se běžně neprodává a která by musela být svařená do základní desky nebo jiným způsobem neoddělitelná od hardwaru. A pokud jde o mobilu/tabletu s androidem, tak to se taky nedá bez zásahu do kernelu, a navíc pokud dojde paměť v mobilu tak se musí koupit nový, protože internal storage se nedá demontovat a nahradit novým.

Tak jsem si přečetl i tu odkazovanou diskuzi na root.cz a začínám se bavit, zlaté EET u nás
Embarcadero MVP - Czech republic

Offline bronek999

  • Nováček
  • *
  • Příspěvků: 11
  • Karma: 0
    • Verze Delphi: Delphi 7, XE7
Re:Delphi a EKASA
« Odpověď #14 kdy: 07-04-2019, 08:38:17 »
Excellent
Rated 1 time
Tak notebook ani tablet nie je problem. Akurat ako ulozisko musi byt ina pamat ako hdd alebo flash tabletu. Colnici mi poslali odkaz na worm sd kartu.

FiskalPro je postaveny na tomto zaklade.
Nikde nie je napisane ze sa to ulozisko nemoze dat vybrat z pokladne.

A ten odkaz na diskusiu ohladom chdu je velmi zavadzajuci. Je tam kopec nezmyslov a nic co by vyvojara niekam posunulo.
A potom podklady z financnej spravy....Zacal som riesit navrh chdu podla nich a nadaval som kazdy den. Tyzdne.Potom som si niektore veci ujasnil s colnikmi a navrh sa radovo zjednodusil a prestal to byt strasiak a zrazu staci uplne jednoduche a lacne riesenie. Prve testovania boli s odozvou radove sekundy. Teraz mi trva vytvorenie requestu, podpisanie,odoslanie a spracovanie odpovede + zapis do chdu a odoslanie na tlac zhruba 700ms.
« Poslední změna: 07-04-2019, 09:05:33 od bronek999 »