E-COMMERCE

ACCETTARE UN PAGAMENTO ON-LINE

NET CORECi sono varie soluzioni tecniche per accettare pagamenti-on-line. Potremmo creare noi un Form e raccogliere i dati della carta di credito, tuttavia c’è un grosso ostacolo, ossia la fiducia del cliente. Immaginiamo che un utente arrivi sul nostro sito, mai sentito nominare, l’utente potrebbe essere titubante nell’inserire i dati della carta di credito, proprio perché essendo una prima visita l’utente potrebbe manifestare una scarsa fiducia nei confronti delle persone che sono alle spalle di MyCourse. Se vogliamo mettere in piedi un Form, ammettendo che il cliente si fidi, che raccolga i numeri di carta di credito dobbiamo soddisfare queste regole basilari sulla sicurezza.

Punti sicurezza

Se non vogliamo creare noi il Form per la carta di credito dobbiamo affidarci a servizi esterni.

Servizi esterni (Gateway)

Come vedi ci sono commissioni da pagare, quindi non tutto l’importo derivato dall’acquisto di un corso arriverà alla nostra committente. Questi servizi offrono un flusso di pagamento che si chiama Checkout.

Checkout

Noi non verremmo mai a conoscenza dei dati di pagamento su stripe.com o PayPal e questo ci evita un sacco di problemi. Quello che vedi rappresentato è il flusso delle informazioni. Vediamo l’implementazione del Checkout nell’applicazione. Cliccando su iscriviti verrà richiamata l’action Pay, la quale ci reindirizzerà al sito di PayPal per il pagamento. Una volta completato il pagamento è PayPal stesso che ci reindirizzerà all’action Subscribe di CoursesController.cs per la conferma dello stesso.

Implementazione Checkout

Vediamo il flusso un po’ più dettagliato.

Flusso
Log file

ACCETTARE PAGAMENTI CON PAYPAL:LA SANDBOX

La Sandbox è un ambiente di test completamente isolato dalla produzione, dove possiamo fare tutti i test che vogliamo. Vai con il tuo Browser al seguente indirizzo e crea un app. https://developer.paypal.com/dashboard/applications/sandbox.  Una volta che ti sei autenticato verrai rediretto alla seguente pagina.

PayPal app

Io ho già creato l’app MyCourse e PayPal mi ha fornito Client ID e secret. Ora fai click sull’app MyCourse che ti ricordo devi creare.

MyCourse

Click su Testing Tools e scegli la voce di menù Sandbox Account. PayPal ti mette a disposizione due account, un account Business che è un tipico account aziendale e un account Personal che dovrai usare per acquistare i corsi. Ti mostro una schermata.

PayPal account

ACCETTARE PAGAMENTI CON PAYPAL:LA RIDIREZIONE ALLA PAGINA

In questa sezione vedremo come si crea l’URL di reindirizzamento alla pagina di pagamento di PayPal. Vediamo l’implementazione.

Implementazione paypal

Ho creato questa interfaccia infrastrutturale.

Interfaccia

L’implementazione concreta la trovi nel servizio infrastrutturale PaypalPaymentGateway.cs. commentato passo passo.

Generare url

ACCETTARE PAGAMENTI CON PAYPAL:LA CATTURA DEL PAGAMENTO

Una volta fatto il pagamento, PayPal ci reindirizza all’action Subscribe fornendo un token che ci permette di stabilire se è stato effettuato il pagamento. Se lo ha fatto noi dobbiamo catturare il pagamento, ossia trasferire i fondi dalla carta o dal conto PayPal dell’acquirente a quello del venditore. Sapere come si cattura un pagamento con PayPal non è responsabilità di un servizio applicativo, ma di un servizio infrastrutturale. Il codice nel servizio infrastrutturale PaypalPaymentGateway.cs è commentato.

LINK AL CODICE SU GITHUB

GITHUB

Scaricare il codice della sezione19 oppure il ramo master o clonare il repository GITHUB per avere a disposizione tutte le sezioni nel tuo editor preferito.