Tutorial per uso multilingua del Payment Gateway del Consorzio Triveneto

e-commerce payment gateway

Ho appena aggiornato la classe PgConsTriv che implementa una serie di metodi utili alla realizzazione di siti e-commerce che necessitano di interfacciarsi al Payment Gateway del Consorzio Triveneto S.p.A.

E’ stata migliorato il file di configurazione in modo che si possa passare più facilmente dall’ambiente di Test a quello di Produzione e viceversa. Ora il file include i seguenti paramentri:

  • _PG_ID_Merchant_Test
  • _PG_Password_Test
  • _PG_ID_Merchant_Production
  • _PG_Password_Production

Il passaggio da un ambiente all’altro avviene semplicemente settando il parametro _PG_System_Environment al quale è possibile assegnare uno dei due valori: Test o Production.

La classe inoltre è stata migliorata sull’aspetto multi-lingua. Nelle precedenti versioni era necessario infatti passare alcuni parametri ai metodi per ottenere i diversi URL in base alla lingua selezionata. Ora basta inizializzare la classe con la lingua (se necessario) e tutti i metodi si comporteranno di conseguenza.

// init PgConsTriv Class
$pg = new PgConsTriv('en');
$pg->setAction('Purchase');
$pg->setVal_NM($_POST);

Le lingue dell’interfaccia del Payment Gateway attualmente gestite e configurabili sono:

  • ITA = Italiano(valore da impostare it)
  • USA = Inglese (valore da impostare en)
  • FRA = Francese (valore da impostare fr)
  • DEU = Tedesco (valore da impostare de)
  • ESP = Spagnolo (valore da impostare es)
  • SLO = Sloveno (valore da impostare sl)

Qui sopra la classe viene inizializzata con la lingua inglese (en è l’impostazione per l’inglese, come da codifica ISO 639-1). Questo vuol dire che la HPP (Home Page Payment) che verrà presentata all’utente sarà in lingua inglese. In realtà il parametro da passare al Gateway per l’inglese sarebbe USA (vedi Documentazione Rif. 1.4.4) ma la classe gestisce una conversione automatica grazie ad un array (questo solo dalla versione 1.3 in poi!). Non solo, anche i diversi URL (errorURL, responseURL, goodURL)  presenteranno lo stesso parametro se la lingua viene impostata.

Nel file di configurazione infatti abbiamo:

/*
* E' possibile aggiungere %s
* %s verrà valorizzato se viene passata una lingua in fase di inizializzazione della classe
*     (Vedi __construct)
*/
define("_PG_responseURL", "responseURL.php");
define("_PG_errorURL", "errorURL.php");
define("_PG_goodURL", "goodURL.php");

Come descritto nel commento è possibile inserire il valore %s per aggiungere il parametro della lingua. Esempio:

define("_PG_responseURL", "/payment/%s/responseURL/");
define("_PG_errorURL", "/payment/%s/errorURL/");
define("_PG_goodURL", "/payment/%s/goodURL/");

N.B.: Nel caso qui sopra utilizziamo il modulo mod_rewrite di Apache per convertire gli url.

I valori %s, se la lingua viene impostata in fase di inizializzazione classe, verranno sostituiti dal valore stesso. Nel nostro caso quindi verrà inserito en. In questo modo potremo facilmente agganciare tale parametro nel nostro codice PHP e convertire i contenuti (testo, immagini, ecc.) nella lingua selezionata.

Se utilizzo codici diversi per le lingue?

Dalla versione 1.3 in poi la conversione di tali codici avviene in automatico (se necessario impostare i valori nell’array $arLingue impostato come proprietà della classe).

Se si utilizza una versione precedente alla 1.3 è possibile risolvere il problema in questo modo:

Nel mio caso, ad esempio, su un sito multilingua, preferisco utilizzare codici standard (it=italiano, en=english, es=spagnolo, ecc). Vi è quindi discordanza tra i due parametri della lingua. Per ovviare a questo problema, per prima cosa, a monte di tutto, è stato creato un Array per l’associazione tra i diversi codici lingua utilizzati.

// Array Lingue per Payment Gateway
$ArLinguePG = array(
'it' => 'ITA',
'en' => 'USA',
'es' => 'ESP',
'de' => 'DEU',
'fr' => 'FRA',
);

Poi ho aggiunto, in cima alle pagine che possono ricevere entrambi i parametri (es: USA ed en), il seguente codice che mi riconosce quale dei due parametri (codifica Consorzio o Standard) mi è stato passato tramite il valore $_REQUEST[“lingua”]:

// Set lingua PG secondo la mia codifica
$lngDefault = "it";
if( isset($_REQUEST["lingua"]) )
{
// Codifica Consorzio
if( strlen($_REQUEST["lingua"]) == 3 )
{
$keyLng = array_search($_REQUEST["lingua"], $ArLinguePG);
$lingua = ($keyLng !== false) ? $keyLng : $lngDefault;
}
// Codifica mia
if( strlen($_REQUEST["lingua"]) == 2 )
{
$lingua = array_key_exists($_REQUEST["lingua"], $ArLinguePG) ? $_REQUEST["lingua"] : $lngDefault;
}
} else {
$lingua = $lngDefault;
}
// Set Lingua secondo la codifica utilizzata dal Consorzio Triveneto
$lngPG = $ArLinguePG[$lingua];

In questo modo, nel codice che seguirà, avrò a disposizione entrambe le variabili:

$lingua = codifica Standard della lingua richiesta
$lngPG = codifica Consorzio della lingua richiesta

Un pò arrangiato ma funzionante, che poi è quello che conta 😉

Un pensiero su “Tutorial per uso multilingua del Payment Gateway del Consorzio Triveneto

  1. Pingback: Consorzio Triveneto Payment Gateway (Tutorial e Classe PHP) | Davide Gullo, Consulente web

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *