Proč peněženka a ne aplikace
Věrnostní program stojí a padá s tím, jestli si ho zákazník vůbec pořídí. Instalace aplikace je u kavárny nebo kadeřnictví překážka, na které řada lidí skončí. Kartu lze v běžném scénáři přidat do podporované peněženky bez instalace samostatné aplikace. Konkrétní průchod závisí na platformě a způsobu vydání. Přesně na tom stojí Walio.
Cenou je, že pravidla určuje Apple a Google. A nejsou to stejná pravidla: Apple Wallet a Google Wallet vypadají pro zákazníka podobně, technicky ale fungují odlišně. Jinak se karta vydává, jinak se aktualizuje a jinak se řídí upozornění. Proto je níže popisujeme každou zvlášť.
Co karta v peněžence umí
Na obou platformách karta zvládne totéž základní:
- Nést stav: počet razítek, body, zbývající návštěvy. Údaje se dají po vydání měnit na dálku.
- Zobrazit QR nebo čárový kód, který obsluha načte.
- Ukázat zákazníkovi změnu, třeba nový stav razítek. Jestli a jak se změna ohlásí upozorněním, určuje platforma a nastavení telefonu.
- Nabídnout se v relevantní chvíli, například poblíž provozovny. Podmínky se mezi platformami liší a závisí na poloze a nastavení telefonu.
- Nést vzhled značky: barvy, logo, popisky polí.
Apple Wallet: podepsaný pas a registrace zařízení
Soubor .pkpass podepsaný certifikátem
Karta v Apple Wallet je pas, tedy soubor .pkpass. Je to balíček s údaji karty, obrázky a podpisem. Každý pas musí být podepsaný certifikátem, který vydavatel získá přes vývojářský účet u Apple. Bez platného podpisu peněženka pas nepřijme. Certifikát má omezenou platnost, takže jeho obnovu je potřeba hlídat.
Aktualizace přes registraci zařízení
Když si zákazník pas přidá, telefon se zaregistruje u serveru vydavatele. Registrace znamená, že server ví, kterým zařízením má dát vědět o změně. Při změně server pošle telefonu signál, telefon si stáhne novou verzi pasu a peněženka ji zobrazí. Server tedy musí běžet a odpovídat, dokud jsou karty v oběhu.
Relevantní zobrazení
Pas může nést informaci, kdy nebo kde je užitečný, například místo provozovny. Systém ho pak může zákazníkovi nabídnout. Je to nabídka systému, ne zaručené zobrazení: o tom, jestli a kdy se pas objeví, rozhoduje telefon a jeho nastavení, včetně povolení polohy.
Upozornění na změnu (change message)
U pole karty lze nastavit text změny, tzv. changeMessage. Když se hodnota pole změní, telefon zákazníkovi zobrazí upozornění, třeba „Máte 7 razítek z 10“. Apple doporučuje používat changeMessage pro časově důležité změny a výslovně uvádí, že nemá sloužit k marketingovým nebo jiným nekritickým zprávám. Zákazník si navíc může upozornění u konkrétní karty vypnout.
Google Wallet: třídy, objekty a API
Třída a objekt
Google Wallet pracuje se dvěma vrstvami. Třída (Class) popisuje program jako celek: název, logo a údaje společné pro všechny karty. Objekt (Object) je konkrétní karta jednoho zákazníka s jeho stavem a kódem. K jedné třídě tak patří karty všech zákazníků programu.
Účet vydavatele, service account a JWT
Google používá jiný model vydávání než Apple. Vydavatel má u Googlu účet vydavatele (issuer) a jeho server se ke Google Wallet API přihlašuje přes service account, tedy technický účet určený pro komunikaci mezi servery. Karta se zákazníkovi předává přes odkaz nebo tlačítko „Přidat do Google Wallet“, které nese podepsaný JWT. To je krátký podepsaný token s údaji karty, podle kterého Google kartu uloží. Nepodepisuje se tedy soubor certifikátem jako u Apple, ale požadavky a tokeny klíčem service accountu.
Aktualizace objektu
Změna stavu karty znamená úpravu objektu přes API. Server vydavatele neposílá nic přímo do telefonu, mění data u Googlu a Google kartu v peněžence aktualizuje. Co platí pro celý program, se upravuje ve třídě.
Zprávy a podmínky upozornění
K objektu nebo třídě lze přidat zprávu (message), která se zobrazí u karty. Aby o ní zákazník dostal upozornění, musí mít příslušné notifikace povolené. U funkcí vázaných na blízkost provozovny jsou podmínky spojené s polohou a nastavením telefonu.
Co naopak neumí a překvapí to
Co se dá po vydání změnit a co ne
U Apple Wallet lze podle dokumentace aktualizovat obsah pasu, zatímco některé identifikační údaje zůstávají neměnné. Konkrétní omezení závisí na typu pasu a způsobu aktualizace. Typ pasu zároveň určuje, kolik polí se kam vejde. U Google Wallet se mění objekt konkrétní karty a rozvržení určuje hlavně třída. Rozvržení proto navrhujeme s rezervou, aby pozdější údaj nemusel nic vytlačit.
Aktualizace karty nejsou marketingové zprávy
Aktualizace karty umí zákazníkovi ukázat změnu, například nový stav razítek nebo blížící se odměnu. Nejsou to ale marketingové push zprávy. Apple je určuje pro časově důležité změny, u Google musí mít uživatel notifikace povolené a na obou platformách si je zákazník může vypnout. Kdo kartu používá jako reklamní kanál, riskuje, že upozornění vypne nebo kartu smaže.
Karta není doklad o identitě
Kód na kartě se dá vyfotit a poslat dál. U bodů to nevadí. U vstupenky nebo odměny vyšší hodnoty musí systém hlídat, že se uplatní jednou, a to se řeší na serveru, ne na kartě.


Kdo karty vydává, ten určuje cenu
Vydávání karet si podnik může zajistit přes službu třetí strany, která za něj podepisuje pasy pro Apple Wallet a komunikuje s Google Wallet API. Takové služby si obvykle účtují za každou vydanou kartu nebo za aktivního zákazníka měsíčně. U programu s tisíci kartami je to položka, která roste přesně tehdy, když se programu daří.
Walio podepisuje pasy na vlastní infrastruktuře, ne přes cizí službu. Vydávání karet tak máme pod kontrolou sami a na nás zůstává i hlídání certifikátů. Je to práce navíc, ale předvídatelná.
Terminál je polovina úspěchu
Karta je jen jedna strana. Druhá je obsluha, která má tři lidi ve frontě. Když načtení kódu a připsání bodu trvá víc než dvě klepnutí nebo se čeká na server, obsluha to po týdnu přestane dělat a program umře. Terminál musí fungovat i při slabém signálu a nesmí vyžadovat pokladní systém.
Tohle je věc, kterou nejde vyřešit později. Když se navrhuje karta, navrhuje se zároveň to, co dělá člověk za barem. Stejně přistupujeme ke všem aplikacím na míru: začíná se u toho, kdo s tím bude pracovat denně.


