Obiettivo
In questo articolo tratteremo come creare un sistema di pagamento con php e banca sella
Passo 1. Registrarsi al sito:
https://www.sella.it/AuthenticationDelegatedServlet?delegated_service=208


finita la registrazione, nel nostro indirizzo di posta ci arriva una email di iscriviti@sella.it
che ci da il benvenuto

Passo 2. Scegliere i servizi:
http://www.sellanet.it/ecoframe.asp e mettiamo i dati forniti con la registrazione.


Clicchiamo su codici test->prosegui
http://www.easynolo.it/ecoframe.asp?to=downloadguidato&where=codtest

dobbiamo inserire di nuovo i dati e arriviamo in una pagina in cui dobbiamo scegliere il tipo di piano
che vogliamo usare:
BASIC ADVANCED PROFESSIONAL

Passo 3. Il piano da scegliere
Io visto che sto provando, scelgo professional. Scegliamo e clicchiamo su procedi.
Ci viene chiesto che tipo di interfaccia scegliere tra
Compatibile O.T.P. Crittografia

Passo 4. Tipo di interfaccia
Tra questi noi scegliamo Crittografia e clicchiamo su procedi.
Fatto cio' nel nostro indirizzo di posta, ci arriva il codice esercente tipo
"GESPAYxxxxx"

che ci servira' per accedere a tutti i servizi del sito
Passo 5. Configurazione dell'ambiente lato admin
https://ecomm.sella.it/gestpay/backoffice/LoginGestPay.asp

e mettiamo i dati identificativi siamo portati alla pagina
https://ecomm.sella.it/gestpay/backoffice/Wizard.asp

e qui dobbiamo scelgiere tra
Tecnica* Amministrativa
e noi scegliamo "tecnica"
Passo 6. Parte tecnica
poi ci viene chiesto l'indirizzo ip del sito che fara' le richieste alla banca e noi lo mettiamo

Poi ci viene chiesto
E-mail per risposta positiva
E-mail per risposta negativa
URL del nostro sito per risposta positiva (sotto https)
URL del nostro sito per risposta negativa (sotto https)
URL Server to Server

Fatto cio' scegliamo la pagina del pagamento e clicchiamo su procedi.
Passo 7. Parte amministrativa
Veniamo riportati alla pagina in cui si sceglieva tra parte amministrativa e parte tecnica
e scegliamo amministrativa e clicchiamo prosegui. Ci viene chiesto di inserire:
mail informazioni
Email Customer Care
Telefono Customer Care
Alla prossima pagina ci viene chiesto le impostazioni del m.o.t.o. (Mail Order Telephone Order
vengono indicate le transazioni effettuate senza la presenza fisica del compratore presso il negozio).
Alla schermata successiva ci viene poi chiesto di inserire dei parametri relativi alla categoria del sito
e poi siamo pronti per partire cliccando su "accedi". Se tutto e' andato bene, dovremmo essere su
https://ecomm.sella.it/gestpay/backoffice/menu.asp

Passo 8. Lato client
Scarichiamo la libreria per gestire le comunicazioni con la banca su http://gestpaycryptphp.sourceforge.net
e scarichiamo il file gestpaycrypt-php-2.0.1.tar.gz cliccando il link.
Passo 9. Gli script
Vediamo come creare lo script; iniziamo a creare la pagina del pagamento
<?
require_once "GestPayCrypt.inc.php";
$objCrypt = new GestPayCrypt();
$myshoplogin = "GESPAY33330"; // Es. 9000001
$mycurrency = "242"; //Es. 242 per euro o 18 lira
$myamount = "1.0"; // Es. 1256.28
$myshoptransactionID="34az846or9"; //Es. "34az85ord19"
$mybuyername= "antonio lopez"; //Es. "Mario Bianchi"
$mybuyeremail= "pippo@hotmail.com"; // Es. "Mario.bianchi@isp.it"
$mylanguage= "1"; //Es. 3 per spagnolo
$objCrypt->SetShopLogin($myshoplogin);
$objCrypt->SetCurrency($mycurrency);
$objCrypt->SetAmount($myamount);
$objCrypt->SetShopTransactionID($myshoptransactionID);
$objCrypt->Encrypt();
$ed=$objCrypt->GetErrorDescription();
if($ed!="")
{
echo "Errore di encoding: " . $objCrypt->GetErrorCode() . " " . $ed . "
";
}
else
{
$b = $objCrypt->GetEncryptedString();
$a = $objCrypt->GetShopLogin();
}
?>
Cliccare su OK per inviare i dati a Banca Sella
<form action="https://ecomm.sella.it/gestpay/pagam.asp">
<input name="a" type="hidden" value="<? echo $a; ?>">
<input name="b" type="hidden" value="<? echo $b; ?>">
<input type="submit" value=" OK " name="submit">
</form>
Vediamo la pagina di risposta in cui la banca ci manda l'esito della transazione "response.php".
<?php
require_once "GestPayCrypt.inc.php";
if (empty($_GET["a"])) {
die("Parametro mancante: 'a'\n");
}
if (empty($_GET["b"])) {
die("Parametro mancante: 'b'\n");
}
$crypt = new GestPayCrypt();
$crypt->SetShopLogin($_GET["a"]);
$crypt->SetEncryptedString($_GET["b"]);
if (!$crypt->Decrypt()) {
die("Error: ".$crypt->GetErrorCode().": ".$crypt->GetErrorDescription()."\n");
}
$amount=$crypt->GetAmount();
$tid=$crypt->GetShopTransactionID();
$order_id=substr($tid,strpos($tid,"-")+1,strlen($tid));
$op_result=$crypt->GetTransactionResult();
switch ($op_result) {
case "XX":
break;
case "KO":
break;
case "OK":
$pstatus="Completed";
echo"[Completed]
";
break;
default:
die("Esito transazione indefinito\n");
}
?>
<form method="post" action="fine.php">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="right" width="100%" class="globalButtons">
<input type="submit" name="" value="Continua">
</td>
</tr>
</table>
<input type="hidden" id="" name="payment_date" value="<?php echo date("d-m-Y h:i:s");?>">
<input type="hidden" id="" name="txn_type" value="web_accept">
<input type="hidden" id="" name="mc_currency" value="EUR">
<input type="hidden" id="" name="txn_id" value="<?php echo $tid;?>">
<input type="hidden" id="" name="payment_status" value="<?php echo $pstatus;?>">
<input type="hidden" id="" name="sella_reply" value="<?php echo $op_result;?>">
</form>
e la pagina che comunica l'esito "fine.php"
<?php
echo $_POST["payment_date"]."<br>";
echo $_POST["txn_type"]."<br>";
echo $_POST["mc_currency"]."<br>";
echo $_POST["txn_id"]."<br>";
echo $_POST["payment_status"]."<br>";
echo $_POST["sella_reply"]."<br>";
?>