# Co je nového v Accept SDK: září 2026

> Osm vydání za čtyři týdny. Vlastní branding platebních obrazovek, platba na dvou displejích, odkaz na účtenku hned od první události, podpora externích čteček karet a platby, které už nečekají na polohu. Přehled změn v Accept SDK pro Android mezi verzemi 1.10 a 1.15.

Září bylo zatím naším nejrušnějším měsícem v historii Accept SDK. Vydali jsme osm verzí, od 1.10.0 ze 3. září po 1.15.0 z 23. září. Většina změn vzešla přímo z provozu u partnerů: pultové terminály, zařízení se dvěma displeji, prodejny s vlastními čtečkami karet a platformy, u kterých má platba vypadat stejně jako zbytek produktu.

Myšlenka zůstává stejná. Partner integruje jednou a zážitek obchodníka zůstává v jeho produktu, zatímco veškerou složitost plateb pod tím řeší Tapaya. Tady je, co to tento měsíc znamenalo v praxi.

## Vlastní branding platebních obrazovek

![Ikona palety barev](/images/posts/whats-new-in-the-accept-sdk-september-2026-branding.svg)

Verze **1.14.0** přináší `Accept.setTheme()`. SDK tím umožňuje předat aplikaci Tapaya Terminal barvy a loga partnera, které se pak zobrazí na obrazovkách aktivace, stavu i platby. Obchodník tak vidí jeden produkt od začátku prodeje až po účtenku, bez přechodu na obrazovku, která vypadá jako cizí aplikace.

Motiv platí po celou relaci. Nastavuje se jednou, před `initialize()` nebo po něm, a zůstává aktivní, dokud se nezmění nebo nezruší. Pro loga vybraná z galerie v telefonu, která nejsou nikde na webu, je k dispozici `Accept.createLocalThemeImageUri()`: z lokálního obrázku vytvoří URI, které terminálová aplikace dokáže načíst.

## Podpora platby na dvou displejích

![Ikona monitoru a telefonu](/images/posts/whats-new-in-the-accept-sdk-september-2026-dualscreen.svg)

Verze **1.10.0** přidává podporu zařízení se dvěma displeji („oboustranných“). `Accept.displays` poskytuje přehled obrazovek, které zařízení má, a nová volba `PaymentDisplay` umožňuje zobrazit platební rozhraní na displeji zákazníka, zatímco aplikace partnera zůstává na displeji obchodníka.

```kotlin
Accept.payments.pay(
    amount = 1500,
    currency = "CZK",
    display = PaymentDisplay.CustomerFacing,
)
```

Pokud zařízení požadavek splnit nedokáže, například `CustomerFacing` na telefonu s jedním displejem, SDK použije výchozí obrazovku. Stejný kód tak funguje na všech podporovaných zařízeních. Celou platbu na dvou displejích předvádí nová ukázková aplikace `:dualscreen`.

## Odkaz na účtenku hned od první události

![Ikona odkazu](/images/posts/whats-new-in-the-accept-sdk-september-2026-receipt-link.svg)

Verze **1.12.0** zpřístupňuje URL hostované účtenky přímo v platebním toku. `PaymentEvent.Created` nově obsahuje `receiptUrl` vedle platebního tokenu, takže odkaz je k dispozici ještě předtím, než se Tapaya Terminal otevře. Obsahují ho i `PayResult.Success` a `PayResult.Declined`, takže dokončená platba nese vše potřebné a kvůli zobrazení účtenky už není nutné volat `status()`.

Odkaz funguje od chvíle, kdy platba vznikne, a po jejím vypořádání zobrazí finální účtenku. Obě pole mohou být `null` a to je i jejich výchozí hodnota, takže stávající integrace se dál zkompilují beze změn.

## Podpora externích čteček karet

![Ikona platební karty](/images/posts/whats-new-in-the-accept-sdk-september-2026-external-reader.svg)

Verze **1.11.0** přidává `NfcPositionConfig.ExternalReader` pro situace, kdy je čtečka karet samostatné zařízení: čtečka na pultu, pinpad na boku nebo dok otočený k zákazníkovi. Na telefonu v tu chvíli není místo, na které by šlo ukázat, a tak Tapaya Terminal skryje animaci přiložení a zobrazí částku s krátkou výzvou pod ní. Výchozí text výzvy lze nahradit vlastním přes `message`.

```kotlin
Accept.payments.setOptions(
    nfcPosition = NfcPositionConfig.ExternalReader(message = "Přiložte kartu ke čtečce"),
)
```

Funkce vyžaduje Tapaya Terminal 1.5.2 nebo novější. Starší verze nastavení ignorují a fungují jako dřív.

## Platby bez čekání na polohu

![Ikona polohy a šipka k ikoně blesku](/images/posts/whats-new-in-the-accept-sdk-september-2026-location.svg)

Řada partnerů provozuje SDK na pultových terminálech a některá z těchto zařízení mají slabou nebo ne-Googlovou lokalizační službu. Verze **1.14.1**, **1.14.2** a **1.15.0** to vyřešily nadobro.

- `pay()` už nečeká na čerstvé určení polohy. Hned použije poslední známou polohu a na pozadí ji obnoví, když je starší než hodina. Terminál na pultu se mezi platbami nehýbe, takže hodinu stará poloha je stejně přesná jako nová.
- Když SDK novou polohu opravdu potřebuje, zeptá se všech dostupných zdrojů najednou a použije první odpověď. Dřív zařízení, jehož hlavní lokalizační služba vypadala v pořádku, ale nikdy neodpověděla, selhalo s `LocationUnavailable`, i když GPS a síťová poloha fungovaly.
- Při studeném startu SDK nejdřív využije polohu, kterou Android už zná. Na polohu čeká jen terminál, který ji nikdy neměl, a to nejdéle 30 sekund.

Pro obchodníky to znamená rychlejší platby a mnohem méně chyb s polohou uprostřed prodeje.

## Další vylepšení

- **Srozumitelnější chyby při aktivaci terminálu (1.10.0, 1.14.0).** `activateTerminal()` nově místo obecného `Unknown` vrací `NoTidsAvailableForMerchant`, když obchodníkovi nezbylo žádné volné ID terminálu. Pokud obchodník nedokončil onboarding, volání skončí hned s `MerchantOnboardingIncomplete`, což umožňuje vrátit ho na správný krok.
- **Žádné zamrzání UI při připojování k terminálové aplikaci (1.14.0).** Volání do Tapaya Terminal nově běží mimo hlavní vlákno. Dřív mohlo pomalé první připojení spuštěné z `viewModelScope.launch` zmrazit obrazovku nebo způsobit ANR.
- **Přesnější diagnostika `PluginUnavailable` (1.13.0).** SDK nově loguje, o který případ jde: Tapaya Terminal není nainstalovaný, je vypnutý, byl pro daného uživatele odebrán, nebo v manifestu aplikace chybí položka `<queries>`, kterou Android 11+ vyžaduje. Součástí záznamu je i verze terminálové aplikace a zdroj její instalace. Opravili jsme také únik spojení při neúspěšném připojení, `SecurityException`, která pronikala do kódu aplikace místo `PluginUnavailable`, a čekání na celý timeout, když proces terminálové aplikace během připojování spadl.

## Aktualizace

Všechna zářijová vydání jsou zpětně kompatibilní. Stačí zvýšit verzi závislosti:

```kotlin
dependencies {
    implementation("com.tapaya:accept:1.15.0")
}
```

Pro nasazení na terminálech v terénu doporučujeme kvůli opravám polohy hlavně verzi 1.15.0. Kompletní changelog je v [repozitáři Accept SDK na GitHubu](https://github.com/tapayadot/accept-android/blob/master/CHANGELOG.md) a integrační návody na [docs.tapaya.com](https://docs.tapaya.com). Dokumentaci lze připojit k IDE nebo AI agentovi také přes [Tapaya MCP server](https://docs.tapaya.com/mcp-server).

Chybí v SDK něco, co partneři potřebují? Ozvěte se nám. Většina toho, co jsme v září vydali, začala rozhovorem s partnerem.
