3.1.5. Pochopenie adries URL plnenia#

Objednávky a zmluvy Taler musia obsahovať buď fulfillment_url alebo fulfillment_message, ktoré sa používajú v peňaženke po zaplatení zmluvy. Tento návod vysvetľuje, ako tieto hodnoty správne nastaviť.

3.1.5.1. Správa o plnení#

Toto pole je jednoducho správa, ktorú peňaženka Taler zobrazí používateľovi po dokončení nákupu. Môže byť nastavená na akýkoľvek druh textu UTF-8 a má sa používať ako priateľská záverečná správa od obchodníka na konci obchodnej transakcie.

Poznámka

Peňaženky na kolieskach sa dozvedia text pred uskutočnením nákupu, takže používatelia by mohli získať správu o plnení pred samotným nákupom. V dôsledku toho by nemala obsahovať žiadne skutočné poverenia alebo informácie, ktoré by používateľ mohol kúpiť pomocou zmluvy.

Správy o plnení sa používajú, keď obchodník nemá adresu URL plnenia, na ktorú by mohol používateľa presmerovať.

3.1.5.2. Adresy URL plnenia#

Zmluvy môžu obsahovať fulfillment_url namiesto fulfillment_message. URL adresa fulfillment_url musí odkazovať na webové sídlo (začínať na http:// alebo https://) a používateľ tam bude presmerovaný ihneď po dokončení nákupu a prípadne neskôr z dialógového okna s podrobnosťami o nákupe v histórii transakcií svojej peňaženky.

Adresy URL plnenia slúžia aj na druhý účel, a to na zisťovanie opätovného nákupu. Preto je potrebné dbať na správne používanie adries URL plnenia. V nasledujúcich dvoch častiach vysvetlíme dva relevantné scenáre a ich motiváciu.

3.1.5.3. Zisťovanie spätného odkúpenia#

Možným problémom pre obchodníkov predávajúcich prístup k digitálnym článkom je, že zákazník môže zaplatiť za článok na jednom zariadení, ale potom si ho môže chcieť prečítať na inom zariadení, prípadne na zariadení, ktoré ani nemá nainštalovanú peňaženku Taler.

Samozrejme, v tomto momente by bol zákazník najprv ešte vyzvaný, aby za článok opäť zaplatil. Ak potom zákazník otvorí odkaz taler:// v peňaženke, ktorá predtým zaplatila za článok (napríklad naskenovaním QR kódu na počítači pomocou aplikácie pre Android), peňaženka si uplatní nárok na zmluvu, zistí, že adresa URL plnenia je identická s adresou URL, za ktorú už v minulosti zaplatila, a iniciuje presmerovanie nákupu: V tomto prípade peňaženka kontaktuje obchodníka a zopakuje predchádzajúcu platbu, lenže tentoraz použije (aktuálne) ID relácie prehliadača (ID relácie sa dozvie z kódu QR).

Backend obchodníka potom aktualizuje ID relácie existujúcej objednávky na aktuálne ID relácie prehliadača. Pri kontrole stavu platby pre „novú“ nezaplatenú objednávku (alebo už v long-pollingu) backend zistí, že pre identifikátor relácie a adresu URL plnenia prehliadača existuje existujúca zaplatená zmluva. Potom prehliadaču povie, aby sa okamžite presmeroval na URL adresu plnenia, kde je k dispozícii už zaplatený článok.

Preto je veľmi dôležité, aby obchodníci dôsledne používali rovnakú adresu URL plnenia pre ten istý digitálny produkt, pri ktorom sa požaduje zistenie opätovného nákupu.

Poznámka

Zmena identifikátora relácie na iné zariadenie si vyžaduje zapojenie pôvodnej peňaženky, ktorá platbu uskutočnila, čím sa primerane obmedzuje možnosť širokého zdieľania digitálnych nákupov.

3.1.5.4. Povolenie opakovaných nákupov#

Aby sa zabezpečilo, že zisťovanie opakovaného nákupu nezabráni zákazníkom kúpiť si tú istú službu alebo fyzický tovar druhýkrát, obchodníci musia zabezpečiť, aby nepoužívali rovnakú adresu URL plnenia pre rôzne produkty alebo pre fyzické produkty, pri ktorých sa môže očakávať, že si zákazníci kúpia tovar opakovane.

Vhodným spôsobom, ako vytvoriť jedinečnú adresu URL plnenia, je vložiť do adresy URL plnenia identifikátor objednávky. Ak chcete umožniť použitie ID objednávky v adrese URL plnenia aj v prípade, že pole order_id nie je nastavené obchodníkom pri odosielaní novej objednávky (a teda skutočné ID objednávky vyberie backend obchodníka), môžete pri odosielaní do backendu obchodníka použiť v adrese URL plnenia text ${ORDER_ID}. Obchodný backend potom okamžite nahradí ${ORDER_ID} v adrese URL skutočným ID objednávky (pred lokálnym pretrvávaním zmluvných podmienok).