Skip to content

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

Attenzione: questo articolo è stato scritto più di 13 anni fa, alcune informazioni potrebbero essere obsolete.

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 = 'my_shop_login';
 $params->uicCode = '242'; //euro
 $params->amount = '1.00';
 $params->shopTransactionId = 'aBgtsr234wZy75';
 $params->cardNumber = '';
 $params->expiryMonth = '';
 $params->expiryYear = '';
 $params->buyerName = 'Name Surname';
 $params->buyerEmail = 'name@website.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 = 'my_shop_login';
 $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 {
        //Altrimenti restituisce un 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 "<p>".$ShopTransactionID."</p>";

$BankTransactionID = $xml->BankTransactionID;
echo "<p>".$BankTransactionID."</p>";

$AuthorizationCode = $xml->AuthorizationCode;
echo "<p>".$AuthorizationCode."</p>";

$Currency = $xml->Currency;
echo "<p>".$Currency."</p>";

$Amount = $xml->Amount;
echo "<p>".$Amount."</p>";

$BuyerName = $xml->BuyerName;
echo "<p>".$BuyerName."</p>";

$BuyerEmail = $xml->BuyerEmail;
echo "<p>".$BuyerEmail."</p>";
}

//Altrimenti restituisce un errore
else {
echo $xml->ErrorCode . " – " . $xml->ErrorDescription;
}

Articolo precedente

Articolo successivo

Discussione

  1. Grazie per l'esempio - hai capito come decriptare l'xml che viene inviato indietro? Hai per caso un esempio di come leggere la risposta?

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

  3. 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!!!!

  4. 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.

  5. 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.

  6. 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.

  7. 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!

  8. 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.

  9. 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.

  10. 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'è una certa carenza di documentazione su bancasella...)

  11. 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

  12. 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

  13. 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

Rispondi a xlthlx Annulla risposta

Il tuo indirizzo email non sarà pubblicato.