Closed TOA-Anakin closed 8 months ago
@TOA-Anakin Ahoj, kontrolu na již existujícího uživatele máme vymyšlenou přes API. Využijeme pro to ID08 v ALEPHu. Bude to vyžadovat nějaké prerekvizity:
Přidal jsem k tesovacímu čtenáři KNAV58607
A teď když na API pošlu XML, které má v ALEPHu shodné ID08, tak se mi vrátí z API jiná odpověď a uživatele to nezaloží:
V odpovědi API chybí na začátku několik řádků Succeeded to WRITE table
@jandera
Chápu to tedy správně, že tuto kontrolu existence pole ID08
s hodnotou PrijmeniJmenoYYYYMMDD
provádí Aleph automaticky při každém pokusu o vytvoření patrona?
Pokud ano, tak tedy v podstatě v této naší BankID-Registrator aplikaci budeme provádět kontrolu existence Aleph účtu tím, že se ho pokusíme založit za pomocí XML, které by mimo jiné obsahovalo:
...
<z308-key-type>08</z308-key-type>
<z308-key-data>PrijmeniJmenoYYYYMMDD</z308-key-data>
...
A Aleph API by nového patrona mělo či němělo vytvořit v závislosti na existenci záznamu obsahujícího pole ID08
s hodnotou PrijmeniJmenoYYYYMMDD
.
Je to tak?
@jandera
Chápu to tedy správně, že tuto kontrolu existence pole
ID08
s hodnotouPrijmeniJmenoYYYYMMDD
provádí Aleph automaticky při každém pokusu o vytvoření patrona?Pokud ano, tak tedy v podstatě v této naší BankID-Registrator aplikaci budeme provádět kontrolu existence Aleph účtu tím, že se ho pokusíme založit za pomocí XML, které by mimo jiné obsahovalo:
... <z308-key-type>08</z308-key-type> <z308-key-data>PrijmeniJmenoYYYYMMDD</z308-key-data> ...
A Aleph API by nového patrona mělo či němělo vytvořit v závislosti na existenci záznamu obsahujícího pole
ID08
s hodnotouPrijmeniJmenoYYYYMMDD
.Je to tak?
@TOA-Anakin Ano, je to tak. My můžeme sestavit XML z údajů získaných od BankID, s novým ID, barcode, se záměrem založit nového patrona, ale pokud shodné ID08 v ALEPHu již bude, tak se nezaloží a vrátí to jinou odpověď. V tu chvíli budme vědět, že jde o prodlužování stávajícího patrona.
Pro dokumentaci a budoucí generace 😀, zde odkaz na popis důvodu proč jsme se nakonec rozhodli použít přímý dotaz do Aleph Oracle databáze (podobně jak to mají v Ostravě ale sofistikovaněji) namísto původně zamýšleného Aleph API.
Scénář:
Osoba se ověřila přes BankID a BankID do naší aplikace vrátilo údaje o ověřené osobě - tento balík dat zahrnuje mimo jiné:
Nyní tedy lze provést kontrolu zdali daná osoba již má v Alephu účet.
Řešení v Ostravě
V Ostravě to mají uděláno tak, že se hledá shoda v těchto 3 výše zmíněných údajích v jejich Aleph databázi. Ten dotaz, který posílají do jejich databáze zní takto:
Výše zmíněný dotaz u nich v Ostravě pravděpodobně vrátí takovýto záznam (tabulkou lze scrollovat horizontálně):
Naše řešení
Kontrolu zdali u nás má osoba účet na základě těchto 3 kritérií můžeme udělat stejně jako v Ostravě. Naše situace se liší v několika bodech:
KNA50.Z308_REC_KEY
, zdá se obsahuje hodnoty začínající textem00KNAV
00KNAV
KNA50.Z303_LAST_NAME
aKNA50.Z303_FIRST_NAME
. Místo toho používáme jenKNAV50.Z303_NAME
, které obsahuje příjméní a jméno dohromadyKNAV50.Z303_NAME
obsahovalo hodnoty v nějaké univerzálním vzoru např. nejprve příjmení a pak jméno - tento vzor se u nás zdá se používá, ale zdali je to u všech čtenářů, to nedokážu říct ...Když pozměním dotaz z Ostravy pro naši situaci, tak bude vypadat takto:
Tento náš dotaz pak vrátí např. toto (tabulkou lze scrollovat horizontálně):
ZÁVĚR
@jandera Jak vidíš, u nás to vrátí vícero záznamů, zdá se, že pro každou bázi jeden. Potřeboval bych tedy nějaké bližší info na toto téma.