Come implementare un pagamento online: Preparazione (1/6)
In questa serie di articoli vedremo come sia possibile implementare dei pagamenti online nel proprio sito tramite carta di credito. Per farlo ci appoggeremo ovviamente ad una società specializzata nelle transazioni on-line e nella fattispecie a PayPal. La scelta é ricaduta su questa azienda in quanto é la più conosciuta ed é oramai per tutti sinonimo di affidabilità.
Lo scenario sul quale lavoreremo è il seguente:
Nel nostro sito, vogliamo creare una area riservata nella quale saranno a disposizione dei contenuti speciali. Vogliamo che l’accesso a quest’area sia a pagamento e che i contenuti siano disponibili subito dopo il pagamento da parte dell’utente (instant access).
Nella fattispecie si tratterà di Your Inspiration Images, un sito che raccoglie immagini. Per poterle avere ad alta risoluzione sarà necessario diventare utenti pagando una quota di 50 euro.
La procedura che dovremo implementare è schematicamente questa:
- L’utente clicca sul bottone di pagamento e viene indirizzato su PayPal.
- Si troverà nella pagina del pagamento del sevizio che intendiamo offrire.
- L’utente procederà con il pagamento.
- PayPal invierà un segnale contenente i dettagli del pagamento che noi dovremo intercettare, verificare ed elaborare.
- Se la procedura è andata a buon fine ed il pagamento è verificato, procederemo alla creazione del nuovo account e all’invio dei dati di autenticazione all’utente tramite email.
É chiaro che tutta questa procedura è complessa e alla fine necessiterà di accurati test. Si pone dunque un problema: per ogni test che faremo dovremo prevedere un pagamento; ovviamente sarà un pagamento da me stesso a me stesso, ma ogni pagamento prevede delle commissioni.
Rischiamo così di perderci parecchi soldi, a meno di non disporre di un ambiente di simulazione!
L’ambiente di simulazione di PayPal
Fortunatamente PayPal mette a disposizione un ambiente di simulazione (Sandbox) che ci permette di svolgere tutti i test che vogliamo in un ambiente identico (sia nelle funzionalità che nella grafica) a quello reale.
La prima cosa che dovremo fare è crearci un account in Sandbox, a questo indirizzo:
Una volta registrato ed attivato l’account, procediamo al login.
Quello che ci interessa per ora è creare almeno due nuovi account PayPal (nell’ambiente simulato naturalmente): uno lo utilizzeremo per fare i pagamenti di test mentre l’altro sarà quello sul quale i soldi saranno versati.
Clicchiamo quindi su test accounts e scegliamo di creare un nuovo account preconfigurato (la procedura manuale è molto più lunga e a noi non serve).
Quindi scegliamo “Buyer”, decidiamo un nome per l’utente (io utilizzerò “utente”) che acquisterà il prodotto, e impostiamo una password.
Non è importante accreditare soldi (finti) sull’account.
Ora creiamo un’altro utente, stavolta di tipo “Seller”, io utilizzerò il nome “admin”
Come preparare il nostro sito?
Quello che ci interessa particolarmente è ovviamente tutta la questione relativa al pagamento, quindi il nostro sito sarà composto unicamente da una pagina che invita il visitatore ad acquistare i contenuti speciali.
Creiamo la pagina index.html in questo modo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Contenuti speciali</title> </head> <body> <h1>Diventa utente di Your Inspiration Images</h1> <h2>Potrai scaricare tutte le immagini ad alta risoluzione</h2> <p>Diventa utente per soli 50 €</p> <!-- qui metteremo il bottone "paga subito" --> </body> </html>
Prepariamo la tabella utenti del database
Quando l’utente pagherà il servizio, dovremo automaticamente creargli un account, quindi inserirlo nella tabella utenti, che avrà i seguenti campi:
- id_utente: la chiave primaria;
- nome: che ricaveremo direttamente dalla notifica che riceveremo da PayPal;
- cognome: che ricaveremo direttamente dalla notifica che riceveremo da PayPal;
- email: che ricaveremo direttamente dalla notifica che riceveremo da PayPal. Non dovremo nemmeno disturbarci a verificarlo, in quanto l’email che utilizziamo su PayPal è già ampiamente verificato;
- username: utilizzeremo ancora una volta l’indirizzo email come username;
- password: inseriremo una password casuale che invieremo per email all’utente. Naturalmente, nel caso reale dovrà avere la possibilità di modificarla;
- idTransazione: in questo campo salveremo il codice di identificazione unico della tranasazione, che ci fornisce PayPal attraverso la notifica. Perché? Uno dei controlli che dovremo fare sarà quello di verificare che una transazione non sia già stata elaborata. E’ un caso raro ma potrebbe capitare (problemi con il server ad esempio) che la richiesta arrivi due volte. In questo caso verrebbero creati due account. Per questo motivo, prima di procedere, dovremo verificare che l’id della transazione non sia già inserito nel database. Memorizziamo questo dato arbitrariamente nella tabella utenti; probabilmente, nel caso reale faremmo una tabbella ad hoc.
Creiamo adesso il database paypal ed eseguiamo questa query:
CREATE TABLE `utenti` ( `id_utente` int(6) unsigned NOT NULL auto_increment, `nome` varchar(25) character set utf8 NOT NULL, `cognome` varchar(25) character set utf8 NOT NULL, `email` varchar(60) character set utf8 NOT NULL, `username` varchar(60) character set utf8 NOT NULL, `password` varchar(32) character set utf8 NOT NULL, `idTransazione` varchar(60) character set utf8 NOT NULL, PRIMARY KEY (`id_utente`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Come implementare il bottone di pagamento PayPal?
Torniamo ora nell’ambiente di simulazione di PayPal ed eseguiamo il login. Selezioniamo l’utente admin e premiamo sul bottone “enter Sandbox test site”.
Eseguiamo il login e ci troveremo nell’account che abiamo creato per “ricevere i soldi”. É esattamente come un account reale. Dunque le opèrazioni che vedremo ora nella simulazione, sono identiche a quelle che dovremo eseguire sull’account reale quando andremo in produzione.
Clicchiamo su profilo e quindi su i miei pulsanti salvati. Ed ora scegliamo crea nuovo pulsante.
Sceglieremo come tipo pulsante paga subito.
Il nome dell’oggetto é piuttosto importante in quanto comparirà nella fatturazione. Quindi dovrebbe essere piuttosto esplicativo.
Mettiamo la somma che intendiamo incassare, nel nostro caso 50 euro.
Vai ora al passaggio numero 3 (funzioni avanzate) e rispondi no a tutte le domande (sono cose che per il nostro caso specifico non servono). Se desideri che l’utente venga indirizzato ad una pagina particolare del tuo sito quando annulla il pagamento o al termine della procedura di pagamento, lo puoi indicare negli ultimi due campi.
A questo punto, cliccando su salva modifiche, ti verrà generato il codice per l’implementazione del bottone. Dovrai copiarlo e incollarlo nella pagina index.html che abbiamo preparato prima.
La nostra pagina index.html, se eseguita, ora si mostrerà in questo modo:
E cliccando sul bottone paga adesso ci si ritroverà direttamente nella pagina del pagamento
Come prima cosa, notiamo dalla barra degli indirizzi che ci troviamo nell’ambiente di simulazione, in quanto il bottone lo abbiamo creato con un account di simulazione.
In seguito possiamo osservare il nome della società (1) che vedremo in seguito come modificare, il nome dell’oggetto (2) ed il costo (3).
Ora possiamo eseguire il login con l’account utente ed eseguire il pagamento. In seguito, eseguiamo il login all’ambiente di simulazione ed entriamo nell’account admin. Vedremo che ci sono stati accreditati 50 euro (meno le commissioni).
Così però non serve a molto. Dobbiamo fare in modo che l’avvenuto pagamento ci sia notificato immediatamente in modo da procedere automaticamente alla creazione del nuovo account.
Questo è quello che vedremo nei prossimi articoli.
Conclusione
In questo articolo abbiamo preparato quanto ci servirà per implementare la nostra procedura di pagamento; in particolare disponiamo di un ambiente di simulazione indispensabile per testare il sistema che andremo a realizzare.
E tu, hai già implementato un sistema del genere in un tuo sito?
Articoli di questa guida
53 commenti
Trackback e pingback
-
Tweets that mention Come implementare un pagamento online: Preparazione (1/6) | Your Inspiration Web -- Topsy.com
[...] This post was mentioned on Twitter by merlinox and others. merlinox said: RT @yiw Come implementare un pagamento online:… -
Come implementare un pagamento online: Le procedure generali (3/6) | Your Inspiration Web
[...] Preparazione [...] -
Come implementare un pagamento online: chiarirsi le idee (2/6) | Your Inspiration Web
[...] Preparazione [...] -
Risorse web designer – Febbraio 2011 « Ebug – Discussioni da Web Designer
[...] https://www.yourinspirationweb.com/2011/01/11/come-implementare-un-pagamento-online-preparazione-16/ [...] -
PHP e Paypal
[...] Ok grazie, e' questa: https://www.yourinspirationweb.com/20...eparazione-16/ Ho appena… -
Come aumentare la sicurezza di WordPress | Your Inspiration Web
[...] in servizi che offrono hosting “professionale”(?!) per 2 euro l’anno. Da quando ho scritto la serie di tutorial sui… -
Paypal iscrizioni sul proprio sito con notifica IPN
[…] […]
Uffa Maurizio, mi lasci così in attesa. Ho scorso tutto l’articolo conscio del fatto che ti servivano i dati di ritorno, usando il bottone classico. E ci abbandoni così: non vale.
La guida è fatta veramente bene comunque, attendo il seguito. Io ho provato a impostare una pagina di ritorno nel bottone base e a verificare se gli passa qualche parametro via POST ma di default nulla vidi!
Ciao Merlinox e grazie.
Per intercettare la notifica é necessario che paypal conosca l’ULR al quale inviarla, e nauralmente questo url non poò essere in locale. Lo vedremo nelle prossime lezioni
Ottima guida, ne stavo giusto aspettando una così completa..!!
Bravissimo (speriamo arrivino in fretta le altre lezioni)
Grazie. Questa guida é prevista a pubblicazione mensile :-(
Complimenti e grazie!!!
Proprio nel momento giusto l’hai scritto questo articolo, aspetto con ansia le altre 5 parti!!!
Grazie a te Nicola, come dicevo prima dovrete avere un po’ di pazienza
presumo che ci sarà un’esercitazione finale che consisterà in:
‘Creare un proprio sistema di pagamento e controllare se questo funzioni in modalità reale (non simulazione). Per verifica, Maurizio effettuerà i pagamenti realizzati, rimettendoci di tasca sua.’ (eh beh, deve vedere se funzionano)
Mi sembra corretto no?
Molto spiritoso antò, molto spiritoso
@Maurizio: ok ma non è cosa che fai col pulsante predefinito, secondo me.
ps: non è che un mese è pure troppo?
Mmm, in effetti. Parlerò con quel rompiscatole di un responsabile degli autori e vediamo cosa si può fare. … ops :-) ma sono io.
Ok, allora a furor di popolo vedremo di farlo settimanale.
Che blog! Basta chiedere e si esaudiscono i desideri!
…anche perchè a farla mensile l’avrebbero completata i miei figli la lettura di questa guida.
oh, detto tra noi, se c’é qualcuno di più rompiscatole del responsabile degli autori, quello é il CEO.
Nando! Tu non hai figli!
E di questo il mondo intero ti é grato. Ne basta uno.
Maurizio, ma vai a fare in c…. :D
Ha quasi 40 anni, sarebbe anche ora di farlo un bel pargoletto ;)
Oh come non parlo più… mi cucio la bocca…
Complimenti per queste guide, come sempre, molto utili.
Anche io, però, penso che un articolo a mese sia davvero troppo: si rischia di perdersi in questo modo…magari si potrebbe mettere ai voti degli utenti iscritti al sito, se farlo mensile, settimanale o ancora meno.
A presto.
Leggere commento #10 :-)
@merlinox: si, effettivamente di predefinito non imposti niente su Paypal, per utilizzare il sistema di ritorno della transazione viene impostata a priori nella richiesta POST di pagamento.
@maurizio: concordo con la tua scelta settimanale, se dovesse risultare troppo pressante puoi ovviare al quindicinale, ma mensile effettivamente risultava troppo dispersiva.
@nando: con i 40 un pargoletto ci stà proprio bene, sennò se aspetti dell’altro ti chiamerà “nonno” invece di “papà” :-D
Grande grandissimo…sei il cacio sui maccheroni….ma cmq mi hai tolto il piatto da sotto il naso…..che fameeeeeeeeee!!!!!!!!!!! :-P
Attendo con ansia gli altri tuoi articoli MITICOOOOO
Ma novità sul prossimo articolo? Non doveva essere settimanale, o bisettimanale? Attendo con anzia il prossimo e non ce la faccio più ad attendere..
Caterina e Marco, non disperate. Questa settimana arriverà :-)
Ho creato un utente admin e un utente user su sandbox.
Per admin tutto ok, ma per l’utente user non riesco ad associare al conto una carta di credito. Io ovviamente uso codici inesistenti ma sembra che sandbox li controlli per davvero e un messaggio di errore tipo:
“Numero della carta di credito: hai immesso un numero di carta di credito o prepagata non valido o parziale. Controlla i dati immessi e riprova”
Non si aspettarà mica che inserisca codici esatti :-) ..che non ho comunque.
Cosa devo fare allora per diventare utente verificato e rendere la simulazione funzionate e utilizzabile per i test?
Grazie
Mi sembra che verifichi che il codice sia nel formato corretto e che non sia già utilizzato
Innanzitutto complimenti per il tempismo!
Stavo diventando scemo a cercare una guida valida quando… tho… guarda cosa c’è quì! Ma è fantastico!
Stavo anche diventando scemo a capire la guida di PayPal scritta da qualche elfo irlandese ubriaco… non si capisce una mazza!!
2 cosine però…
1) sono arrivato alla fine di questa prima parte e quando effettuo il pagamento da “utente” i soldi me li scala… ma quando mi loggo da “admin” i soldi non ci sono O_o
2) Io ho un progettino (che vorrei far partire entro la prima 15ina di marzo) nel quale gli utenti si iscrivono prima, hanno la possibilità di personalizzare il proprio profilo da pannello di controllo, ma se non pagano non appaiono nella ricerca… pensi che il tutorial poi si riesce ad adattare?
(alla fine avrei solo bisogno di due informazioni.. utente (username) e pagato (si/no)
Intanto grazie per rendere il mondo più comprensibile!
Ciao Matteo (mi pare di avere già visto il tuo orrendo avatar sul mio blog :-))
1) Ma nell account admin ti mostra qualcosa, tipo che il pagamento risulta in revisione o qualcosa del genere?
2) Seguendo questo tutorial sarai certamente in grado di implementare quello che hai descritto, é molto semplice
Ciao Maurizio.
Si in effetti credo di aver partecipato ad altre discussioni su articoli in passato (e l’avatar è bellissimo :D :D )
Nell’account “admin” non mi pare ci sia nulla del genere…
Quì c’è lo screenshot della pagina: http://is.gd/lQztll
Bho, magari faccio un’altra prova…
Grazie 1000!!! :)
beh allora come faccio a fare delle prove se non attivo l’utente?
Grazie
devi provare un codice che vada bene
Ciao a tutti, ho un piccolo problema per quanto riguarda l’account di test di paypal. Tutto ok quando mi faccio l’account personale e quando creo i miei due account di test come compratore e venditore, quando invece devo creare il mio bottone purtroppo non mi fa fare il login dandomi errore nella password.
Come mai?
Qualcuno ha riscontrato questo errore?
Grazie.
anche a me da lo stesso errore. forse è una stupidaggine ma non capisco cosa possa essere. Qualcuno può darci una mano???
io ho risolto in un modo forse più tortuoso di quello è da fare effettivamente però lo scrivo lo stesso.
-)una volta creato l’account admin (o utente) schiacciate “Enter Sandbox test site”
-)cliccate su “problemi di accesso” (sotto il bottone giallo “accedi”)
-)selezionate “Ho dimenticato la mia password” quindi immettete la mail admin (o utente) e digitate il codice di sicurezza sotto. il sistema vi informerà che vi avrà inviato una mail all’indirizzo admin (o utente). Chiudete la finestra (l’ultima che si è aperta).
-)tornate nella finestra dove ci sono gli account admin e utente che avete creato e cliccate sul link “Test email”. -)Aprite il primo messaggio che vi visualizza (o l’ultimo arrivato, potete controllare data e ora sulla destra). nel corpo del messaggio troverete una riga come questa: “Reimposta la tua password adesso: https://www.sandbox.paypal.com/it/fq/ac=AwP4aXnV.4HIl3ZXyMRZXS5lEn3zQvwjNd315A0u9.WgBuVt5No.5IXF-LfQj5zAYZBtu9092Qd-HQ&t=pr&ifl”
-)copiate il link, aprite una nuova finestra del browser e incollatelo nella barra degli indirizzi
-)selezionate “informazioni sulla carta di credito o prepagata” e immettete il numero della carta di credito che trovate nella pagina dove avete creato gli account admin e utente. Per ogni account c’è un link “dettagli” se ci cliccate vi si visualizzeranno ulteriori informazioni sull’account, tra le quali ci sarà il numero di carta di credito (16 cifre). Copiatelo e schiacciate il bottone “continua”.
-)vi porterà in un’altra pagina dove potrete ri-inserire (2 volte) la nuova password. FINE.
spero di essere stato abbastanza preciso, in bocca al lupo ragass.
Ciao Maurizio. Complimenti, sembra davvero un’ottima guida e molto dettagliata. Purtroppo non so molto di linguaggio html, ho creato il mio sito usando blogger. Puoi dirmi se è possibile implementare questa funzione, seguendo la tua guida, anche su siti che si appoggiano a blogger (come nel mio caso appunto) o anche altervista?
Grazie
Ciao Maurizio, questa serie di articoli è stupenda. Questa notte quando torno a casa ci provo! Solo una cosa, ho scaricato i pdf però non ci sono le immagini! Pensi che si possa risolvere? :-)
Ciao Grazie!
ciao Maurizio, avrei la necessità di proteggere una pagina con password, sebbene non sia inclusa nei risultati di ricerca dai bots, preferirei cosi.. e vorrei sapere se sia possibile, dopo aver ricevuto il pagamento tramite paypal, comunicare all’utente in qualche modo da paypal una password da utilizzare appunto x accedere ai contenuti..
grazie infinitamente,
complimenti per il blog
E’ esattamente quello che viene spiegato in questa serie di tutorial….
Ciao Maurizio,
vorrei capire meglio dove trovo il link per eliminare il campo “quantita” dal carrello …così com’è spiegato in questa pagina non lo trovo
Grazie:)
Ciao Stefania,
questo articolo, come pure i successivi, non parla di questo
It seems you truly understand plenty related to this topic and it shows
by means of this posting, labeled “Come implementare un pagamento online:
Preparazione (1/6) | Your Inspiration Web”. Thanks
a lot -Wolfgang
Ciao Maurizio mi chiamo Vincenzo complimenti per l’articolo lo trovo davvero molto interessante, avrei comunque una domanda da neofita quale sono:
quel codice che hai messo sotto a:”Creiamo adesso il database paypal ed eseguiamo questa query: ….” che tipo di codice è? (nel senso, so che si tratta di SQL ma come faccio ad eseguirlo? dove lo dovrei scrivere?) Perdona l’inesperienza..
Attendo ansiosamente risposta, ciao! Grazie in anticipo
Tutto chiaro, ma la pagina di arrivo, ovvero ove si arriva dopo aver pagato, è protetta? Nel senso che non è possibile accedervi se non dopo il pagamento, anche conoscendone l’indirizzo?
Grazie per aver realizzato questa guida, solo che in uno script ho già la transizione pronta. Quello che non c’è e che vorrei fare è un qualcosa che se la transizione vada a buon fine lui effettui sul sito degli accrediti sui campi di una tabella e non solo che segni su un’altra tabella la transizione, si può? E come?
Ho letto questo testo, molto interessante,
sembra un corso 1/6,
ma gli altri 5 dove li leggo. ?
Poi mi sono reggistrata al one year togheter,
ma non mi arriva la 1° mensilità gratis.
????
Pensavo fosse tutto automatico !
In fondo all’articolo, appena sotto la Conclusione, trovi la sezione “Articoli di questa guida”: lì sono elencate tutte e 6 le parti
Buongiorno,
ho implementato un tasto di abbonamento invece di un “paga subito” e non riesco a capire come poter impostare un avviso al mio sito web al secondo pagamento.
Mi spiego meglio: oggi acquisto un servizio sul sito che ha ricorrenza di 30 giorni. Al trentesimo giorno vengono addebitati altri X € a chi ha acquistato l’ “abbonamento”. Ma come faccio ad inviare una fattura dal mio sito? Paypal dovrebbe “dirmi” che l’utente ha effettuato un nuovo pagamento. Come fa’ a darmi questa informazione e come faccio io ad intepretarla?
Grazie! ^^
Salve, volevo sapere se era possibile implementare un pagamento online tramite paysafecard dato che mi sto trovando benissimo e lo consiglio a tutti! Sarei davvero interessato ad implementare anche questa opzione dato che è un servizio che sta prendendo piede di recente e che funziona egregiamente! http://bit.ly/1kXja83
Non fosse che PayPal mangia soldi!
Come si fa a fare i moduli di pagamento Mastercard o Visa?
Grazie
Questo articolo è una miniera d’oro per me che mi affaccio per la prima volta ad implementare un sistema di pagamento nelle mie app.
Siccome sto creando la sandbox adesso che è un tantino diversa da come la fai vedere tu nell’articolo volevo sapere se seguire la tua guida ho bisogna fare qualcosa di diverso, ed oltre tutte le variabili post che restituisce sono sempre uguali a come le fai vedre tu?
Grazie per la risposta.