xlthlx

I am not an early bird or a night owl. I am some form of permanently exhausted pigeon


Come criptare i dati da inviare a Banca Sella usando il WebService WSCryptDecrypt


01 ottobre 2010

Poiché non ho trovato nessun esempio al riguardo, riporto un semplice esempio di come criptare i dati da inviare a Banca Sella senza passare dalla libreria ma utilizzando il WebService WSCryptDecrypt, messo a disposizione da Banca Sella stessa.

//Effettua la chiamata Soap
 $client = new SoapClient("https://ecomms2s.sella.it/gestpay/gestpayws/WSCryptDecrypt.asmx?WSDL");
//Imposta tutti i parametri; quelli valorizzati sono i minimi necessari
 $params->shopLogin = 'ilmioshoplogin';
 $params->uicCode = '242'; //euro
 $params->amount = '1.00';
 $params->shopTransactionId = 'aBgtsr234wZy75';
 $params->cardNumber = '';
 $params->expiryMonth = '';
 $params->expiryYear = '';
 $params->buyerName = 'Nome Cognome';
 $params->buyerEmail = 'nome@indirizzo.com';
 $params->languageId = '1'; //italiano
 $params->cvv = '';
 $params->customInfo = '';
 $objectresult = $client->Encrypt($params);
 $simpleresult = $objectresult->EncryptResult;

//Legge la risposta dal server
 $xml = simplexml_load_string($simpleresult->any);

 if ($xml->TransactionResult == "OK" ) {
	 $a = 'ilmioshoplogin';
	 $b=$xml->CryptDecryptString;
	 $link= "https://ecomm.sella.it/gestpay/pagam.asp?a=".$a."&b=".$b;
	 //Invia i dati verso Banca Sella
	 header('Location: '.$link);
 }
 else {
        //Scrive la risposta in caso di errore
	echo($xml->ErrorDescription);
 }

Ecco anche un esempio per decriptare:

$client = new SoapClient("https://ecomms2s.sella.it/gestpay/gestpayws/WSCryptDecrypt.asmx?WSDL");
$params->shopLogin = $_GET["a"];
$params->CryptedString = $_GET["b"];
$objectresult = $client->Decrypt($params);
$simpleresult = $objectresult->DecryptResult;

$xml = simplexml_load_string($simpleresult->any);

//Se la transazione è andata a buon fine, scrive i dati
if ($xml->TransactionResult == "OK" ) {

	$ShopTransactionID = $xml->ShopTransactionID;
		echo $ShopTransactionID."
";

	$BankTransactionID = $xml->BankTransactionID;
	echo $BankTransactionID."
";

	$AuthorizationCode = $xml->AuthorizationCode;
		echo $AuthorizationCode."
";

	$Currency = $xml->Currency;
		echo $Currency."
";

	$Amount = $xml->Amount;
		echo $Amount."
";

	$BuyerName = $xml->BuyerName;
		echo $BuyerName."
";

	$BuyerEmail = $xml->BuyerEmail;
		echo $BuyerEmail."
";
}

//Altrimenti restituisce l'errore
else {
	echo $xml->ErrorCode . " – " . $xml->ErrorDescription;
}
Generic placeholder image
shira

Grazie per l’esempio – hai capito come decriptare l’xml che viene inviato indietro? Hai per caso un esempio di come leggere la risposta?

Generic placeholder image
Maria Serena Piccioni

Basta utilizzare il metodo Decrypt https://testecomm.sella.it/gestpay/gestpayws/WSCryptDecrypt.asmx?op=Decrypt.
Ho aggiunto un esempio al post.

Generic placeholder image
Shira

Grazie 1000!, funziona perfettamente.

Saluti e auguri.

Shira.

Generic placeholder image
Maria Serena Piccioni

Prego, saluti e auguri a te.

Generic placeholder image
Enrico

Ciao, non riesco a trovare documentazione per fare un banale sistema di pagamento con Gestpay… in pratica ho un primo form nel quale il cliente inserisce i suoi dati, a quel punto vorrei che alla pressione del tasta “acquista” andasse alla pagina di pagamento con carta di credito su banca sella – mi chiedo: dove va inserito il codice che posti? Aiutoooooo!!!!

Generic placeholder image
Maria Serena Piccioni

Ciao Enrico,
devi richiedere un account di test a banca Sella, all’interno del back office trovi anche la documentazione.
Come connetterti e cosa usare per la connessione dipende dal contratto che è stato fatto; per ogni spiegazione chiedi direttamente a loro. C’è anche un forum apposito.

Generic placeholder image
Enrico

Ciao Maria, grazie per la risposta.

il tipo di contratto che ho stipulato è questo:

Tipologia comunicazione: Crittografia
Versione: ADVANCED

ho già attivato l’utente di test e ho scaricato la documentazione.

Purtroppo solo due paginette sono state dedicate al webservice (senza installazione sul server di oggetti), e non riesco a capire a livello logico come dovrebbe funzionare il pagamento.

Ti chiedo se puoi darmi qualche delucidazione. ho una prima pagina nel quale l’utente vede il prodotto e clicca il tasto “compra”, va ad una successiva pagina nel quale gli chiedo le info personali (email, indirizzo, nome, congnome, ecc) a questo punto ci sarà un tasto procedi che dovrà mandare alla pagina di pagamento di banca sella. In questa seguenza, dove si colloca lo script che hai postato?

ps il tuo script mi resituisce questo errore: Nome parametro non previsto. Verificare la configurazione Campi e Parametri nel Back Office.

Generic placeholder image
Maria Serena Piccioni

Ciao Enrico,
come da errore, devi controllare come hai impostato i tuoi parametri nel back office; probabilmente ne manca uno.
Lo script va nella pagina dove hai inserito il tasto procedi: è solo in quella pagina che hai tutti i dati dell’utente no? A quel punto li recuperi inserendoli nello script.

Generic placeholder image
Shira

Ciao Maria,
Ho scoperto adesso adesso che questi esempi che funzionano perfettamente chrome, firefox e IE, generano un errore di sicurezza in Safari:

Unsafe JavaScript attempt to access frame with URL http://www.domain…. from frame with URL https://testecomm.sella.it/gestpay/PAGAMERR.asp. Domains, protocols and ports must match.

Hai incontrato anche tu questo problema? Forse è un problema con il webservice di banca sella (adesso provo sentirli). Oppure dobbiamo aggiungere in qualche modo una testata per cross domain origin… Hai qualche idea? Grazie!

Generic placeholder image
Maria Serena Piccioni

Ciao Shira,
a dire il vero non sto attualmente utilizzando lo script (nel frattempo ho cambiato lavoro), e purtroppo non ho idee sull’errore.
Mi sembra alquanto strano però, se senti Banca Sella ci faresti sapere? Grazie mille.
Per tutti: di solito nessuno mi chiama Maria, mi chiamano Serena.

Generic placeholder image
Shira

Ciao Serena,
L’errore era mio – l’impostazione di safari per i cookie era settato da accettare soltanto dati da qualcuni domini. Cambiandola per accettare dati da tutti domini, il problema si è risolto.

Banca Sella mi diceva “i nostri Web Services non pongono limitazioni ai domini da cui possono essere contattati, se non per quanto riguarda il controllo dell’indirizzo IP.”.

Tutto a posto. Grazie di nuovo.

Generic placeholder image
Maria Serena Piccioni

Ciao Shira,
ok, grazie a te per l’informazione.

Generic placeholder image
Gigio2k

ATTENZIONE:

per la versione BASIC
si devono passare SOLO ED ESCLUSIVAMENTE

$params->shopLogin = ‘iltuoshopid’;
$params->uicCode = ‘242’; //euro
$params->amount = ‘1.00’;
$params->shopTransactionId = ‘transID’;

altrimenti si genera un errore :

“Nome parametro non previsto. Verificare la configurazione Campi e Parametri nel Back Office.”
Ma che nel back office non potete cambiare/visualizzare ;)

(certo che c’e’ una certa carenza di documentazione su bancasella…)

Generic placeholder image
Marco Faustinelli

Buongiorno e innanzitutto grazie per il post, davvero unico e prezioso
Ho due domande riguardo ai WS di Banca Sella:
– che senso ha usare la url s2s quando si usano i WS? L’unico scopo che vedo è quello di preparare una pagina che scrive nel log della mia applicazione
– dove si trova di preciso il forum di cui parli?
Buona giornata,
Marco

Generic placeholder image
Andrea

Ciao e complimenti per l’articolo.
In questi giorni è arrivata una direttiva di Sella:

https://www.gestpay.it/gestpay/sicurezza/poodle.jsp

Io uso GestPayCrypt e mi dicono che da ora in avanti bisogna passare all’interfaccia web service WsCryptDecrypt

Questo codice, anche se datato, rimane comunque valido?

Grazie,

Andrea

Generic placeholder image
Maria Serena Piccioni

Ciao Andrea, purtroppo non ti so dire, e nel frattempo mi sono trasferita all’estero, e quindi non credo che userò più GestPay. Ho visto però che c’è un esempio in PHP all’indirizzo https://www.gestpay.it/gestpay/specifiche-tecniche/index.jsp

Generic placeholder image
Andrea

Grazie lo stesso per la risposta e in bocca al lupo per tutto ;)

Commenta


Utilizzando questo blog, accetti l'utilizzo dei cookie. Maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi