Closed Dacesilian closed 7 years ago
Možná by mohla být metoda public String getBKP(final byte[] pkp)
v SecurityCodesGenerator statická? Na první pohled nevyužívá clientKey
.
Zdá se, že ano, dává to dobře vypadající BKP:
getBKP(result.getRequest().getKontrolniKody().getPkp().getValue())
resp. getBKP(e.getRequest().getKontrolniKody().getPkp().getValue())
Dobrý den,
BKP kód je dostupný vždy po zavolání funkce client.submitReceipt
. Buď přímo přes result.getBKP()
nebo přes objekt chyby, přesně jak píšete e.getRequest().getKontrolniKody().getBkp()
. Právě jsem doplnil i pomocnou metodu do objektu výjimky a v příštím release bude možné volat i exception.getBKP()
.
Můžete prosím blíže popsat situaci, kdy result.getBKP()
vrací null? Výsledek toho volání by nijak neměl záviset na komunikaci s WS. Kódy jsou předpočítány dříve, než dojde k samotné komunikaci.
Díky!
EDIT: Release 2.0.2 k dispozici, exception.getBKP()
implementováno.
Používám CommunicationMode.TEST
a endpoint PRODUCTION, server vrátí Datovou zpravu evidovane trzby v overovacim modu se podarilo zpracovat
(správně) a result.getBKP() je null.
SubmitResult result = client.submitReceipt(data, CommunicationMode.TEST, endpoint, submType);
System.out.println("BKP = " + result.getBKP());
Druhý případ - přímo getKontrolniKody().getBkp() jsem nezkoušel, děkuji za úpravu. Já jsem to řešil vyčleněním těch metod z SecurityCodesGenerator.
Aha, už to vidím, V případě SubmitResult
se BKP získával z hlavičky odpovědi (result.getHlavicka().getBkp()
), ne samotného requestu. Mělo by jít vždy o ta samá data, kód jsem tedy upravil a už by měl vždy vracet správný BKP, bez ohledu na stav odpovědi z WS.
Pokud to je možné, otestujte prosím verzi 2.0.3 a dejte vědět, jestli je problém vyřešen :-)
Díky za hlášení problému a dodatečné info!
Už to funguje ve všech případech! Děkuji.
Super, také díky :+1:
Dobrý den, děkuji za skvělou knihovnu! Mám dotaz na získání BKP v případě chyby. BKP by měl být dostupný a tisknout se na účtenku vždy.
Když server odpoví, ale nedostanu FIK (
SubmitResult result = client.submitReceipt(..)
), voláníresult.getBKP()
vrátíNULL
.Když dojde k chybě komunikace (
catch (final CommunicationException e)
), není metoda pro získání BKP k dispozici. Možná by šel BKP získat přese.getRequest().getKontrolniKody().getBkp()
?Jak prosím dostat BKP vždy? Děkuji.