Pagamenti legati alla sessione

3.1.7. Pagamenti legati alla sessione#

A volte controllare se un ordine è stato pagato non è sufficiente. Ad esempio, quando si vende l’accesso ai media online, l’editore potrebbe voler essere pagato per lo stesso prodotto da ogni cliente. Taler supporta questo modello consentendo al mechant di verificare se la «ricevuta di pagamento» è disponibile sul dispositivo corrente dell’utente. Questo impedisce agli utenti di condividere facilmente l’accesso ai supporti trasmettendo un link alla pagina di adempimento. Naturalmente, anche gli utenti più sofisticati potrebbero condividere le ricevute di pagamento, ma non è facile come condividere un link e in questo caso è più probabile che condividano direttamente i media.

Per utilizzare questa funzione, il commerciante deve prima assegnare al browser corrente dell’utente un session_id effimero, di solito tramite un cookie di sessione. Quando si esegue o si riproduce un pagamento, il portafoglio riceve una firma aggiuntiva (session_sig). Questa firma certifica che il portafoglio ha mostrato una ricevuta di pagamento per il rispettivo ordine nella sessione corrente.

I pagamenti legati alla sessione si attivano passando il parametro session_id all’endpoint /check-payment. Il portafoglio rimanderà alla pagina di adempimento, ma includerà un parametro aggiuntivo session_sig. Il frontend può interrogare /check-payment con entrambi i parametri session_id e session_sig per verificare che la firma sia corretta.

L’ultimo ID di sessione che è stato usato con successo per dimostrare che la ricevuta di pagamento è nel portafoglio dell’utente è disponibile anche come last_session_id nella risposta a /check-payment.