Articoli Referenze Script FAQ Downloads ASP E-Commerce con ASP Menu Javascript Ricette Cocktail Registrazione domini Area Aziende



Pagamenti online con Banca Sella - gestire l'interfaccia OTP con ASP

Home + Articoli + E-Commerce + Articolo # 85
Autore: Max Bossi

Concesso in esclusiva a ASP Center. Vietata la riproduzione.


Con il crescente diffondersi dei sistemi di E-Commerce in Italia, diventa indispensabile, per chiunque abbia un sito di vendita, sfruttare ed integrare al massimo le moderne tecnologie di pagamento online. Tra queste, un posto di primo piano in Italia spetta certamente al sistema di incasso offerto da Banca Sella, storica banca italiana tra le prime in assoluto ad intuire i nuovi vantaggi dell'era digitale, tanto da imporre il proprio sistema GestPay quale vero e proprio standard di sicurezza ed affidabilità nelle transazioni online.

In questo articolo vedremo quindi come è possibile integrare, con estrema facilità, il sistema GestPay all'interno delle nostre pagine ASP. GestPay offre diverse possibilità di interfacciamento con il sito di E-Commerce
  1. Interfaccia Crittografia
  2. Interfaccia Compatibilità
  3. Interfaccia OTP
Qui mi limiterò ad illustrarvi come utilizzare l'ultimo di questi: il sistema OTP, acronimo di One Time Password, che sfrutta, appunto, un sistema di controlli incrociati Server/Server (il Server di Banca Sella sfrutta un sistema di sicurezza SSL a 128 bit) per verificare l'univocità (e la bontà) della transazione attraverso la verifica, e la contestuale rimozione, di password "monouso" appositamente create.

Nota: la scelta dell'interfaccia OTP è dipesa anche dal fatto che, tra le tre, è la più semplice da utilizzare e, allo stesso tempo, offre ottime garanzia in termini di sicurezza delle transazioni.

Prima cosa da fare, per iniziare a fare dei test, è creare un account gratuito (l'abbonamento effettivo è a pagamento) su Sellanet.it. Dopo esserci registrati potremo accedere all'area di generazione OTP, grazie alla quale potremo richiedere le nostre prime password di prova. Dopo qualche ora dalla richiesta (il tempo di attesa varia a seconda del numero di OTP richieste) riceveremo, all'indirizzo di posta indicato in fase di registrazione, una cartella zippata contenente due file (uno con estensione .ric ed uno .ris).

Questi file contengono le OTP richieste che utilizzeremo per effettuare le nostre prove.

Più precisamente, nel nostro esempio, ci limiteremo ad utilizzare il file .ric (le OTP di richiesta), tralasciando il file .ris (OTP di risposta) il cui utilizzo è facoltativo e strettamente legato alle specifiche esigenze del singolo webmaster (l'utilizzo del file .ris consente di autenticare le risposte di GestPay; ciò è utile qualora si voglia procedere con l'abilitazione automatica di un servizio a seguito dell'avvenuto pagamento, senza alcun intervento "manuale", intervento necessario qualora, come nel nostro esempio, si utilizzi invece il solo file .ric).

Lo script ASP che andremo ad utilizzare si occuperà di prelevare una OTP dal file .ric e di cancellarla dopo il suo utilizzo
<%
' Codice identificativo del cliente (quello di sotto è di prova)
Const CodEsercente = "GESPAYXXXXX"

' Specifico il percorso assoluto del file .ric
' Importante: ricordatevi che la cartella che ospita il file .ric
' deve avere i permessi di lettura e scrittura!
Const FileRic = "d:\sitiweb\miosito\nome_file.ric"

' Accesso al file .ric e prelevare l'OTP
' necessaria per questa transazione
Function PrelevaOTP()
' Imposto un numero NON inferiore
' del numero di OTP a disposizione!
Dim Strings(5000)
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile(FileRic, 1, false)
i = 0
Do While Not a.AtEndOfStream
Strings(i) = a.ReadLine
i = i + 1
Loop

PrelevaOTP = Strings(0)
a.Close

Set a = fs.CreateTextFile(FileRic, True)
For n = 1 To i-1
a.WriteLine( Strings(n))
Next
a.Close

Set fs = Nothing
End function

Dim costo, id_transazione

' Recupero il valore del campo costo
' dal nostro form di pagamento
costo = request.form("costo")

' Recupero il valore del campo id_transazione
' dal nostro form di pagamento
' Il campo in questione ci fornisce
' l'identificativo della transazione
' per la quale stiamo ricevendo il pagamento.
' Sarà, ovviamente, compito del nostro sistema
' di E-Commerce valorizzare questa variabile!
id_transazione = request.form("id_transazione")

With Response
.Write "<form action='https://ecomm.sella.it/gestpay/pagam.asp'>"
.Write "<input type='hidden' name='a' value='" & CodEsercente & '">"
.Write "<input type='hidden' name='b' value='PAY1_UICCODE=242*P1*"
.Write "PAY1_AMOUNT=" & costo & "*P1*PAY1_SHOPTRANSACTIONID="
.Write id_transazione & "*P1*PAY1_OTP=" & PrelevaOTP() & '">"
.Write "<input type='submit' name='Submit' value='Vai al pagamento!'>"
.Write "</form>"
End With
%>
Lo script appena visto, in sostanza, recupera la OTP necessaria per gestire la (richiesta di) transazione, dopodichè provvede a cancellarla al fine di evitarne un ulteriore utilizzo.
Il nostro script, poi, trasferisce al server sicuro della banca le informazioni della transazione (costo, identificativo della transazione e, appunto, l'OTP utilizzata). Il server di Sella verificherà in primo luogo la bontà della OTP e, solo in caso di esito positivo, procederà a mostrare la pagina di pagamento vera e propria dove l'utente, in tutta tranquillità, potrà inserire i dati della propria carta di credito per completare la transazione.
La pagina di pagamento, quindi, rimane sui Server di Banca Sella e, solo al termine della transazione, l'utente verrà rispedito sul nostro sito (è in questo momento che, eventualmente, potrebbero tornarvi utili le OTP del file .ris).

Prima di procedere al test dobbiamo tornare sul pannello di controllo di Sellanet ed eseguire alcune importanti operazioni:
  1. Nella sezione Configurazione -> Indirizzi IP bisogna indicare l'IP (o gli IP) del sito da cui partirà la chiamata alla pagina di pagamento. Diversamente non avverrà il riconoscimento da parte del server sicuro (se non conosciamo l'IP del nostro sito possiamo chiederlo al nostro amministratore di sistema oppure effettuare un ping dal Prompt dei comandi di Windows. es. ping www.nomesito.ext)
  2. Nella sezione Configurazione -> Risposte bisogna indicare le pagine (ed il relativo percorso web) cui il server di Banca Sella dovrà comunicare l'esito della transazione (una per l'esito positivo ed una per quello negativo)
  3. Una volta ricevute le OTP bisogna attivarle tramite l'apposito tasto della sezione OTP
Bene. Dopo queste doverose precisazioni, torniamo al codice ASP e salviamo il tutto con il nome di bancasella.asp, poi scriviamo un piccolo codice HTML per testarne il funzionamento:
<form method="POST" action="bancasella.asp">
Costo dell'acquisto:<br>
<input type="text" name="costo" value="100"> Euro<br>
Identificativo di questa transazione:<br>
<input type="text" name="id_transazione" value="PROVA" Disabled><br>
<input type="Submit" value="Clicca qui!">
</form>
Ovviamente il form qui sopra serve solo per testare il funzionamento dell'interfaccia di pagamento! In realtà il form di pagamento dovrà essere creato dinamicamente dal vostro sistema di E-Commerce sulla base degli acquisti effettuati dal vostro cliente.

Per qualsiasi dubbio o problema vi rimando al forum tecnico di SellaNet dove troverete tutto l'aiuto di cui avrete bisogno.

© 2008 ASP Center di Luca Ruggiero - P. IVA 05564851219 - Disclaimer | Privacy | Pubblicità | Supportaci | Staff | Contatti
  Appunti PHP | Giornale Webmaster | Mr.Webmaster | Download | DevSpy.com | ASPCode.it | ClaudioGarau.it | Webmaster Facile | Come Faccio | AlVerde.net | CodiceFacile.it | I Programmatori | By Luciani | VoiceXML Italian User Group | Giochi | Extro Web Site | Morpheus Web | AG Web Solutions | Net-Free | PC Sicuro | PC Self | Tutorial Web | Dablones