Synchronizácia cez iKros - krv, pot a slzy
Minulý rok som robil na spojení Krosovej Alfy a elektronického obchodu cez iKros. Nakoniec som to nejak dokončil a som rád, že sa nevyskytol problém, ktorý sa nedal vyriešiť. Aj keď to aj po 20 hodinách vyzeralo stále všelijak.
iKros funguje tak, že skript externého obchodu zapíše údaje do API iKrosu a potom sa v Alfe stlačí tlačidlo na synchronizáciu a ona načíta nové údaje.
Je fajn, že existuje nejaká dokumentácia API typu Swagger, ale je dosť odfláknutá - asi tak na úrovni API dokumentácie v súkromnej aplikácii. Je dobré, že uvádzajú všetky atribúty pre Alfu aj Omegu, ale je tam iba jeden príklad a chýbajú tam všetky príklady z “enumov”, niekedy sú čísla vlastne reťazce znakov a podobne.
Tiež je strašná pičovina, že tento iKros, čo má byť API prostredník pre Alfu alebo Omegu a externé zdroje je vlastne nejaký ich eshop, akurát len usekli z toho webové rozhranie a nechali len API na zápis (externý obchod -> iKros -> Alfa). Nielenže z toho nejde čítať a pozrieť sa, čo sa tam vlastne práve nachádza, ale prepojenie s Alfou sa často úplne rozbije až to nejde opraviť synchronizáciou. Kto vymyslel takú kokotinu? Neviem. Ani teraz neviem ako presne to funguje, len si domýšľam veci.
Pri vývoji som potreboval meniť staré záznamy a tým sa to úplne rozmrdalo, Alfa hlásila generickú chybu pri parsovaní a musela sa volať podpora, ktorá to úplne nedávala. Našťastie ja som s nimi nemusel sedieť. Vždy to vyriešil nový API kľúč. Z Alfy sa nedajú mazať záznamy na iKrose.
Dôvod, prečo sa to rozbíja a je to také amatérske je, že nekontrolujú dostatočne vstupné údaje na API iKrosu. Haluz je, že pár kontrol na unikátne ID v rámci záznamu sa tam púšťa. Ale zvyšné chyby si veselo prebublajú do Alfy, ktorá tiež nevie napísať niečo schopné, až podpora povie, čo tam chýba. Len je blbé, že to chýbajúce sa tam nedá doplniť…
Nakoniec som to dal dokopy, asi po siedmych rôznych API kľúčoch, formát je správny a ani záznamy sa nesynchronizujú väčšinou viac krát. Skript umožňuje vybrať obdobie od a do. Dodatočné opravy sa robia priamo v Alfe.
Rady:
- synchronizácia preskakuje existujúce IDčka v Alfe
- pokazené dáta tam ostanú navždy, treba vymeniť API kľúč a začať odznovu
A to je tak všetko, toto je stav v októbri 2021. Potreboval som čas to rozdýchať a nájsť nejaký odstup. Ako…ono to dáva zmysel ako to funguje, len vďaka validáciám je to ťažkopádne na vývoj. A teda žiadny ľahký reset tiež. Rozhodne by som nechcel s takýmito API robiť denne, lebo to už hraničí s mrhaním času.
Add Comment