asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 3585
ASPCode.it - Store

  > > Articoli

ASP e i sistemi di pagamento per il commercio elettronico

Data di pubblicazione: 13/09/2002        Voto della community: 4,31 (Votanti: 16)


Quando mi è stato commissionato di fare una semplice interfaccia per il pagamento con carta di credito ho notato che in giro c'è grande confusione sui servizi in questo senso offerti dalle banche e sulla tecnologia da usare per accedervi.
Uno dei primi istituti a credere al commercio elettronico, e quindi ai sistemi di pagamento online, è stata Banca Sella che nel tempo è diventata leader in questo settore.

Le offerte di Banca Sella per il merchant sono di tre tipi:
  • GestPay Basic Edition
  • GestPay Advanced Edition
  • GestPay Professional Edition
Questi tre servizi si differenziano tra loro solo per le funzionalità del pannello di amministrazione back office che comunque è sempre incluso nell'offerta.
I prezzi variano dai 7.75 € + IVA (mensili) del Basic ai 18.08 € + IVA (mensili) del Professional. Il mio consiglio è (se si vuole provare a fare commercio elettronico) di scegliere il Basic che è economico e fornisce le funzionalità sufficienti per amministrare online le transazioni generate dal sito.
Una volta scelto il tipo di contratto con Banca Sella bisogna scegliere il tipo d'interfaccia e la tecnologia che ci permetterà di accedere in maniera sicura alla pagina di pagamento di Banca Sella.

Esistono tre tipi di interfacce:
  • Interfaccia Compatibilità
  • Interfaccia OTP
  • Interfaccia Crittografia
In questo articolo vi parlerò dell'interfaccia OTP.

OTP sta per One Time Password ovvero delle password che vengono utilizzate un'unica volta, e poi cancellate, nella procedura di riconoscimento del merchant da parte del sistema di gestione che risiede sul server sicuro (SSL 128 bit) di Banca Sella.
Prima di fare richiesta dei file OTP reali è bene fare degli esperimenti con dei codici di prova. Per fare questo bisogna registrarsi sul sito www.sellanet.it ed accedere all'area indicata per l'ottenimento delle OTP di prova, in quel frangente potremo scegliere anche quante OTP vogliamo. La scelta varia tra 5 e 10000. In poco tempo (all'incirca 3-4 ore) riceveremo, all'indirizzo di posta indicato in fase di registrazione, una cartella zippata contenente due file: un .ric e un .ris .Questi due file, i cui nomi sono delle lunghissime sequenze numeriche, contengono le OTP richieste. Lo script asp che andremo ad utilizzare si occuperà di prelevare una OTP dal file .ric e di cancellarne l'equivalente dal file .ris. Dal confronto tra i due file si sarà sempre sicuri di utilizzare una sola volta l'OTP.

Il cuore dello script per il pagamento tramite carta di credito si basa su due file asp.
Uno, che chiamerò invio.asp, riceve dal vostro sito di commercio elettronico un valore associato alla variabile <%=tot %> che rappresenta l'importo totale che deve essere transato attraverso l'interfaccia di pagamento di Banca Sella.
L'altro, che chiamerò otp.asp, contiene il numero minimo di valori associati al merchant tali da farlo riconoscere dal sistema di Banca Sella. Questo file verrà incluso in invio.asp.

Il file otp.asp

<%@LANGUAGE="VBSCRIPT"%> <SCRIPT language="vbscript" runat="server">

Const CodEs = "GESPAY05031"
‘ questa costante rappresenta il codice identificativo del cliente (nel caso stiate facendo delle prove ve ne verrà fornito uno come nell'esempio qui riportato altrimenti sarà uno di tipo solo numerico)
Const RicName = "d:\inetpub\webs\miodominio\public\11513__2002_9_58_39.ric"
Const RisName = "d:\inetpub\webs\miodominio\public\11513__2002_9_58_51.ris"
‘ queste costanti sono i percorsi assoluti dei file ric e ris (n.b. la cartella dove risiedono deve avere permessi di lettura e scrittura)
Const T_ID = "1"
‘ questa costante rappresenta la transaction id (uno stesso merchant può sottoscrivere più contratti quindi avere transazioni di diversa natura ed utilizzo. Anche questo numero vi viene comunicato da Banca Sella all'atto della sottoscrizione del servizio)

Function PrelevaOTP()
  Dim Strings(5000)
  ‘questo numero deve essere sempre uguale o superiore al numero di OTP contenute nel fil ric
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set a = fs.OpenTextFile(RicName, 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(RicName, True)
  For n = 1 To i-1
    a.WriteLine( Strings(n))
  Next
  a.Close

  Set fs = Nothing
End function
‘ qui termina la funzione che preleva la singola OTP dal file ric

Sub RimuoviOTP( OTP)
  Dim Strings(5000)
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set a = fs.OpenTextFile(RisName, 1, false)
  i = 0
  Do While Not a.AtEndOfStream
    aLine = a.ReadLine
    If aLine <> OTP Then
      Strings(i) = aLine
      i = i+1
    End If
  Loop

  a.Close

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

  Set fs = Nothing
End Sub
‘ qui termina la funzione che elimina la OTP utilizzata nella transazione

</script>

Il sistema quindi è molto semplice: verranno utilizzate solo le OTP che sono presenti in entrambi i file.

Il file invio.asp

<!--#include file="otp.asp"-->
<html>
<head>
<title>Invio Parametri</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<div align="center">

<%
Dim PAY1_OTP
Dim tot
‘ qui dichiaro le variabili che userò nello script
tot = request.form("totale")
‘ richiamo il valore totale della transazione
PAY1_OTP = PrelevaOTP()
‘ attivo la funzione PrelevaOTP()
%>

</div>
<form action="https://ecomm.sella.it/gestpay/pagam.asp">
<%
‘ indirizzo del sistema di pagamento di Banca Sella
‘ "a" e "b" rappresenta il numero minimo di parametri da inviare (per l'elenco completo fare riferimento alla documentazione ufficiale)
%>
<input type="hidden" name="a" value=<%=CodEs%>>
<input type="hidden" name="b" value="PAY1_UICCODE=242*P1*PAY1_AMOUNT=<%=tot%>*P1*PAY1_SHOPTRANSACTIONID=<%=transaction_id %>*P1*PAY1_OTP=<%=PAY1_OTP%>">
<%
‘ questo rappresenta il valore "b" dove: 242 è il codice per la divisa (per adesso – 07/08/2002 – è accettato solo l'euro); PAY1_SHOPTRANSACTIONID è il numero identificativo della transazione che deve essere inviato dal sistema e-commerce del merchant con una variabile che io ho chiamato transaction_id; PAY1_OTP è la famosa OTP prelevata col sistema di cui sopra. Si noti che il separatore non è la solita & oppure un + ma è *P1* ossia un separatore che viene utilizzato solo da Banca Sella.
%>
  <table width="100%" border="1" cellspacing="2" cellpadding="2" bordercolor="#CCCCCC">
    <tr>
      <td>
        <div align="center"> <b><font face="Arial, Helvetica, sans-serif" size="2">
        <input type="text" name="prova" value=<%=tot%>>
        <input type="submit" name="Submit" value="Conferma importo">
        </font></b></div>
      </td>
    </tr>
  </table>
</form>
</body>
</html>

Per quanto riguarda il codice questo è tutto il necessario per effettuare una transazione. Una volta che il sistema di Banca Sella avrà accettato la OTP e riconosciuta come corretta la "chiamata" si passerà direttamente alla pagina di pagamento che risiede sul loro server dove verranno immessi i dati sensibili della carta di credito e personali.
Resta inteso che le possibilità di personalizzazione dello script sopra riportato sono enormi.

Note sul pannello di controllo fornito da Banca Sella

Nonostante il palese sforzo di Banca Sella per rendere tale pannello di controllo semplice ma completo indicherò comunque alcune operazioni che vanno necessariamente fatte.
  • Nella sezione Configurazione -> Indirizzi IP bisogna indicare l'IP (o gli IP) del sito da cui proverrà la chiamata alla pagina di pagamento. Diversamente non avverrà il riconoscimento da parte del server sicuro.
  • 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. Tutto questo si trova in Configurazione -> Risposte.
  • Una volta ricevute le OTP bisogna attivarle tramite l'apposito tasto della sezione OTP.
  • Un esempio del pannello di controllo è visibile qui http://www.sellanet.it/demo/italian/index.html.
N.B.: nel pannello di esempio di cui sopra non è presente la sezione OTP.




Utenti connessi: 3585