3.1.5. Rilevamento dei riacquisti e URL di adempimento#

Gli ordini e i contratti Taler devono contenere un fulfillment_url o un fulfillment_message, che vengono utilizzati dal portafoglio dopo il pagamento del contratto. Questo tutorial spiega come impostare correttamente questi valori.

3.1.5.1. Messaggio di adempimento#

Questo campo è semplicemente un messaggio che verrà mostrato all’utente dal portafoglio Taler dopo che l’utente ha completato l’acquisto. Può essere impostato con qualsiasi tipo di testo UTF-8 e dovrebbe essere utilizzato come messaggio finale amichevole da parte del commerciante al termine della transazione commerciale.

Nota

I portafogli Whe apprendono il testo prima che venga effettuato l’acquisto, quindi gli utenti potrebbero ottenere il messaggio di adempimento prima dell’acquisto effettivo. Di conseguenza, non dovrebbe contenere le credenziali o le informazioni che l’utente potrebbe acquistare con il contratto.

I messaggi di adempimento vengono utilizzati quando il commerciante non dispone di un URL di adempimento a cui reindirizzare l’utente.

3.1.5.2. url_adempimento#

I contratti possono contenere un fulfillment_url invece di un fulfillment_message. L”fulfillment_url deve fare riferimento a un sito Web (che inizia con http:// o https://) e l’utente vi sarà reindirizzato subito dopo aver completato l’acquisto ed eventualmente in seguito dalla finestra di dialogo dei dettagli dell’acquisto nella cronologia delle transazioni del suo portafoglio.

Gli URL di evasione hanno un secondo scopo: vengono utilizzati anche per il rilevamento del riacquisto. Pertanto, è necessario prestare attenzione all’uso corretto degli URL di adempimento. Nelle prossime due sezioni spiegheremo i due scenari rilevanti e la loro motivazione.

3.1.5.3. Rilevamento dei riacquisti e URL di adempimento#

Un possibile problema per i commercianti che vendono l’accesso agli articoli digitali è che un cliente potrebbe aver pagato per un articolo su un dispositivo, ma potrebbe poi volerlo leggere su un altro dispositivo, magari uno che non ha nemmeno un portafoglio Taler installato.

Naturalmente, a questo punto al cliente verrebbe richiesto di pagare nuovamente l’articolo. Se il cliente apre il link taler:// nel portafoglio che ha precedentemente pagato l’articolo (ad esempio scansionando il codice QR sul desktop con l’app Android), il portafoglio rivendica il contratto, rileva che l’URL di adempimento è identico a uno per il quale ha già effettuato un pagamento in passato e avvia il reindirizzamento all’acquisto: In questo caso, il portafoglio contatterà il commerciante e riprodurrà il pagamento precedente, ma questa volta utilizzando l’ID di sessione (corrente) del browser (apprende l’ID di sessione dal codice QR).

Il backend del commerciante aggiorna quindi l’ID di sessione dell’ordine esistente con l’ID di sessione corrente del browser. Quando viene controllato lo stato di pagamento del «nuovo» ordine non pagato (o già in long-polling), il backend rileva che per l”ID di sessione e l”URL di evasione del browser esiste un contratto già pagato. Quindi dice al browser di reindirizzare immediatamente all’URL di evasione dove è disponibile l’articolo già pagato.

È quindi fondamentale che i commercianti utilizzino costantemente lo stesso URL di adempimento per lo stesso prodotto digitale, quando si desidera un rilevamento dei riacquisti.

Nota

La modifica dell’ID di sessione a un dispositivo diverso richiede il coinvolgimento del portafoglio originale che ha effettuato il pagamento, limitando così ragionevolmente la possibilità di condividere ampiamente gli acquisti digitali.

3.1.5.4. Consentire acquisti ripetuti#

Per garantire che questo meccanismo funzioni come previsto, gli esercenti devono assicurarsi di non utilizzare lo stesso URL di adempimento per prodotti diversi o per prodotti fisici per i quali si prevede che i clienti acquistino l’articolo più volte. Allo stesso modo, è fondamentale che i commercianti utilizzino costantemente lo stesso URL di adempimento per lo stesso prodotto digitale, quando si desidera un rilevamento dei riacquisti.

Un modo comodo per creare un URL di evasione unico è incorporare l’ID dell’ordine** nell’URL di evasione. Per consentire l’uso dell’ID dell’ordine in un URL di evasione anche se il campo order_id non è impostato dal commerciante quando si invia un nuovo ordine (e quindi l’ID effettivo dell’ordine sarà scelto dal backend del commerciante), è possibile utilizzare il testo segnaposto ${ORDER_ID} nel fulfillment_url quando lo si invia al backend del commerciante. Il backend del commerciante sostituirà immediatamente ${ORDER_ID} nell’URL con l’ID effettivo dell’ordine (prima di persistere i termini del contratto a livello locale).