3.1.7. Munkamenethez kötött kifizetések#
Néha nem elég ellenőrizni, hogy a megrendelés kifizetésre került-e. Például az online médiához való hozzáférés értékesítése esetén a kiadó azt szeretné, ha minden egyes vásárló pontosan ugyanazt a terméket fizetné ki. A Taler támogatja ezt a modellt azzal, hogy a mechant ellenőrizheti, hogy a „fizetési bizonylat” elérhető-e a felhasználó aktuális eszközén. Ez megakadályozza, hogy a felhasználók egyszerűen megosszák a médiához való hozzáférést a teljesítési oldalra mutató link továbbításával. Természetesen a kifinomult felhasználók a fizetési bizonylatokat is megoszthatnák, de ez nem olyan egyszerű, mint egy link megosztása, és ebben az esetben valószínűbb, hogy csak közvetlenül a médiát osztják meg.
E funkció használatához a kereskedőnek először a felhasználó aktuális böngészőjéhez kell rendelnie egy efemer „session_id”-t, általában egy munkamenet-süti segítségével. A fizetés végrehajtásakor vagy újrajátszásakor a pénztárca kap egy további aláírást (session_sig
). Ez az aláírás igazolja, hogy a pénztárca az aktuális munkamenetben az adott megbízásról szóló fizetési bizonylatot mutatott.
A munkamenethez kötött fizetéseket a „session_id” paraméter átadásával lehet elindítani a „check-payment” végponton. A pénztárca ezután átirányít a teljesítési oldalra, de egy további session_sig
paramétert is tartalmaz. A frontend lekérdezheti a /check-payment
-t mind a session_id
, mind a session_sig
értékkel, hogy ellenőrizze az aláírás helyességét.
Az utolsó munkamenet azonosítója, amelyet sikeresen használtak annak bizonyítására, hogy a fizetési bizonylat a felhasználó pénztárcájában van, szintén elérhető last_session_id
néven a /check-payment
válaszban.