Davide Gullo, Consulente web

09.09.2010
19:09 (+00:00)
36a settimana
251o giorno

  "E il mare il web concederà ad ogni uomo nuove speranze, come il sonno i sogni..." Cristoforo Colombo

Tutorial per uso multilingua del Payment Gateway del Consorzio Triveneto

martedì, 17 novembre 2009

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 ;-)

1 commento

[...] utilizzerà la lingua di default settata nel file di configurazione. Per maggiori dettagli leggi il Tutorial multi lingua. Il metodo setAction imposta l’Action. Purchase si occupa di eseguire direttamente [...]

Scrivi un commento
Istruzioni e suggerimenti

A capo e la separazione tra i paragrafi sono automatici.
L'indirizzo e-mail non verrà mai mostrato.
Il codice HTML permesso è:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
I campi con * sono obbligatori.





TrackBack

TrackBack URI per questo articolo

 

Pinguino imperatore

Aptenodytes forsteri,
descritto da G. R. Gray nel 1844, Mari Antartici.

Tux è la mascotte ufficiale del kernel Linux. Creato da Larry Ewing nel 1996, è un pinguino paffuto dall'aria contenta. L'idea che la mascotte di Linux dovesse essere un pinguino venne da Linus Torvalds, il creatore del kernel Linux.
[FSF Associate Member]
Free Software Foundation
Associate Member
Join!
Davide Gullo
   Crea il tuo badge