September bol zatiaľ naším najrušnejším mesiacom v histórii Accept SDK. Vydali sme osem verzií, od 1.10.0 z 3. septembra po 1.15.0 z 23. septembra. Väčšina zmien vzišla priamo z prevádzky u partnerov: pultové terminály, zariadenia s dvoma displejmi, predajne s vlastnými čítačkami kariet a platformy, pri ktorých má platba vyzerať rovnako ako zvyšok produktu.
Myšlienka zostáva rovnaká. Partner integruje raz a zážitok obchodníka zostáva v jeho produkte, zatiaľ čo celú zložitosť platieb pod tým rieši Tapaya. Tu je, čo to tento mesiac znamenalo v praxi.
Vlastný branding platobných obrazoviek
Verzia 1.14.0 prináša Accept.setTheme(). SDK tým umožňuje odovzdať aplikácii Tapaya Terminal farby a logá partnera, ktoré sa potom zobrazia na obrazovkách aktivácie, stavu aj platby. Obchodník tak vidí jeden produkt od začiatku predaja až po účtenku, bez prechodu na obrazovku, ktorá vyzerá ako cudzia aplikácia.
Motív platí počas celej relácie. Nastavuje sa raz, pred initialize() alebo po ňom, a zostáva aktívny, kým sa nezmení alebo nezruší. Pre logá vybrané z galérie v telefóne, ktoré nie sú nikde na webe, je k dispozícii Accept.createLocalThemeImageUri(): z lokálneho obrázka vytvorí URI, ktoré terminálová aplikácia dokáže načítať.
Podpora platby na dvoch displejoch
Verzia 1.10.0 pridáva podporu zariadení s dvoma displejmi („obojstranných“). Accept.displays poskytuje prehľad obrazoviek, ktoré zariadenie má, a nová voľba PaymentDisplay umožňuje zobraziť platobné rozhranie na displeji zákazníka, zatiaľ čo aplikácia partnera zostáva na displeji obchodníka.
Accept.payments.pay(
amount = 1500,
currency = "EUR",
display = PaymentDisplay.CustomerFacing,
)Ak zariadenie požiadavku splniť nedokáže, napríklad CustomerFacing na telefóne s jedným displejom, SDK použije predvolenú obrazovku. Rovnaký kód tak funguje na všetkých podporovaných zariadeniach. Celú platbu na dvoch displejoch predvádza nová ukážková aplikácia :dualscreen.
Odkaz na účtenku hneď od prvej udalosti
Verzia 1.12.0 sprístupňuje URL hostovanej účtenky priamo v platobnom toku. PaymentEvent.Created teraz obsahuje receiptUrl vedľa platobného tokenu, takže odkaz je k dispozícii ešte predtým, než sa Tapaya Terminal otvorí. Obsahujú ho aj PayResult.Success a PayResult.Declined, takže dokončená platba nesie všetko potrebné a kvôli zobrazeniu účtenky už nie je nutné volať status().
Odkaz funguje od chvíle, keď platba vznikne, a po jej zúčtovaní zobrazí finálnu účtenku. Obe polia môžu byť null a to je aj ich predvolená hodnota, takže existujúce integrácie sa ďalej skompilujú bez zmien.
Podpora externých čítačiek kariet
Verzia 1.11.0 pridáva NfcPositionConfig.ExternalReader pre situácie, keď je čítačka kariet samostatné zariadenie: čítačka na pulte, pinpad na boku alebo dok otočený k zákazníkovi. Na telefóne vtedy nie je miesto, na ktoré by sa dalo ukázať, a tak Tapaya Terminal skryje animáciu priloženia a zobrazí sumu s krátkou výzvou pod ňou. Predvolený text výzvy sa dá nahradiť vlastným cez message.
Accept.payments.setOptions(
nfcPosition = NfcPositionConfig.ExternalReader(message = "Priložte kartu k čítačke"),
)Funkcia vyžaduje Tapaya Terminal 1.5.2 alebo novší. Staršie verzie nastavenie ignorujú a fungujú ako predtým.
Platby bez čakania na polohu
Mnohí partneri prevádzkujú SDK na pultových termináloch a niektoré z týchto zariadení majú slabú alebo ne-Googlovú lokalizačnú službu. Verzie 1.14.1, 1.14.2 a 1.15.0 to vyriešili nadobro.
pay()už nečaká na čerstvé určenie polohy. Hneď použije poslednú známu polohu a na pozadí ju obnoví, keď je staršia ako hodina. Terminál na pulte sa medzi platbami nehýbe, takže hodinu stará poloha je rovnako presná ako nová.- Keď SDK novú polohu naozaj potrebuje, opýta sa všetkých dostupných zdrojov naraz a použije prvú odpoveď. Predtým zariadenie, ktorého hlavná lokalizačná služba vyzerala v poriadku, ale nikdy neodpovedala, zlyhalo s
LocationUnavailable, aj keď GPS a sieťová poloha fungovali. - Pri studenom štarte SDK najprv využije polohu, ktorú Android už pozná. Na polohu čaká len terminál, ktorý ju nikdy nemal, a to najdlhšie 30 sekúnd.
Pre obchodníkov to znamená rýchlejšie platby a oveľa menej chýb s polohou uprostred predaja.
Ďalšie vylepšenia
- Zrozumiteľnejšie chyby pri aktivácii terminálu (1.10.0, 1.14.0).
activateTerminal()teraz namiesto všeobecnéhoUnknownvraciaNoTidsAvailableForMerchant, keď obchodníkovi nezostalo žiadne voľné ID terminálu. Ak obchodník nedokončil onboarding, volanie skončí hneď sMerchantOnboardingIncomplete, čo umožňuje vrátiť ho na správny krok. - Žiadne zamŕzanie UI pri pripájaní k terminálovej aplikácii (1.14.0). Volania do Tapaya Terminal teraz bežia mimo hlavného vlákna. Predtým mohlo pomalé prvé pripojenie spustené z
viewModelScope.launchzmraziť obrazovku alebo spôsobiť ANR. - Presnejšia diagnostika
PluginUnavailable(1.13.0). SDK teraz loguje, o ktorý prípad ide: Tapaya Terminal nie je nainštalovaný, je vypnutý, bol pre daného používateľa odstránený, alebo v manifeste aplikácie chýba položka<queries>, ktorú Android 11+ vyžaduje. Súčasťou záznamu je aj verzia terminálovej aplikácie a zdroj jej inštalácie. Opravili sme aj únik spojenia pri neúspešnom pripojení,SecurityException, ktorá prenikala do kódu aplikácie namiestoPluginUnavailable, a čakanie na celý timeout, keď proces terminálovej aplikácie počas pripájania spadol.
Aktualizácia
Všetky septembrové vydania sú spätne kompatibilné. Stačí zvýšiť verziu závislosti:
dependencies {
implementation("com.tapaya:accept:1.15.0")
}Pre nasadenie na termináloch v teréne odporúčame kvôli opravám polohy hlavne verziu 1.15.0. Kompletný changelog je v repozitári Accept SDK na GitHube a integračné návody na docs.tapaya.com. Dokumentáciu je možné pripojiť k IDE alebo AI agentovi aj cez Tapaya MCP server.
Chýba v SDK niečo, čo partneri potrebujú? Ozvite sa nám. Väčšina toho, čo sme v septembri vydali, sa začala rozhovorom s partnerom.
