PHP
JAVA
C#
VB.NET

Pagamenti online (Buy now)

Questa è l’opzione più semplice e sicura per accettare pagamenti online dal vostro sito web. Questa opzione consiste nell'utilizzo di una pagina di pagamento fornita da AXEPTA e residente sui nostri server. In questo caso, il titolare di carta verrà indirizzato sulle pagine di AXEPTA al momento del pagamento e potrà inserire i dati della carta di credito direttamente sul sito di AXEPTA, protetto con certificato SSL. Successivamente, il cliente titolare di carta verrà reindirizzato nuovamente al vostro sito Web, a cui trasmetteremo i dettagli relativi all’esito del pagamento (Figura 2). Le fasi del processo di richiesta di autorizzazione utilizzando Buy Now possono essere riepilogate nei seguenti step:
  • Il Cliente (titolare di carta) visita il web store e riempie il carrello. Al termine della scelta degli articoli di acquisto, il web store indirizza il cliente al form Buy Now. Nessuna informazione relativa alla carta di credito verrà conservata dall’esercente;
  • Il web server di Buy Now mostra il form per il pagamento, raccoglie i dati (nome e cognome del titolare di carta, PAN, scadenza carta, CCV2) immessi attraverso una connessione SSL;
  • e-POSitivity provvede all’interrogazione del Directory Server per la verifica dell’iscrizione al servizio di 3DSecure;
  • Nel caso di risposta positiva, il Merchant Plug In (MPI) passa il controllo all’Access Control Server (ACS)dell’emittente carta (issuer) che permette al cliente (titolare di carta) di inserire la password (in caso di transazione con VbV o 3D Securecode);
  • Verificata l’iscrizione al servizio 3D Secure si procede all’invio della richiesta di autorizzazione verso i circuiti.
La risposta con l’esito dell’operazione verrà inviata sia all’esercente sia al titolare di carta. Il titolare di carta, oltre a visualizzarla sul suo browser, riceve anche un’e-mail di conferma. Questa è la pagina di pagamento di e-POSitivity; il layout della stessa potrà in parte essere modificato inoltrando una richiesta a AXEPTA. È possibile personalizzare:
  • l’immagine di intestazione
  • l’immagine a piè di pagina
  • il testo sulla destra
  • il colore dello sfondo
  • il font, la dimensione, lo stile (corsivo, grassetto...) e il colore dei testi
  • il colore dei pulsanti
  • il colore del link
 

Pagamenti diretti

In questa modalità di pagamento online, la pagina di pagamento risiede sul server dell’esercente, quindi, dopo che il titolare di carta (cliente) ha concluso gli acquisti, cliccando su “paga” dal carrello verrà indirizzato in una pagina (modulo), dove inserirà i dati necessari per effettuare una transazione (PAN, data scadenza, CCV2). Il sistema effettuerà una chiamata verso e-POSitivity passando i parametri opportunamente settati. Anche con questa modalità lo scambio delle informazioni sensibili viene effettuato con protocolli sicuri (TLS 1.0). L’esercente in questo caso è responsabile dei dati della carta inseriti dai clienti e deve pertanto attenersi alle regole di PCI-DSS, AXEPTA è tenuta a controllare l’aderenza dei propri esercenti alle regole di PCI-DSS, pertanto potrà fare degli audit sui propri clienti che utilizzano questa modalità, al fine di garantirne la compliance in materia di sicurezza.

Integrazione API

L’ integrazione con le API presuppone l’importazione dei riferimenti (dll, jar, classi php) nel proprio progetto e quindi richiamare i metodi messi a disposizione per l’inizializzazione della transazione. Riportiamo tutti i metodi resi disponibili per le API con i parametri attesi.  

Pagamenti online

@ ClasseIgfsCgInit Utilizzata per eseguire una inizializzazione della richiesta di pagamento.
PROPERTYDESCRIZIONETIPO o VALORE [Dimensione]OBBLIGATORIO
serverURLIndirizzo del server di destinazione della richiesta.URLSI
timeoutTimeout massimo espresso in millisecondi di completamento di una richiesta.IntegerSI
kSigChiave per firmare il messaggio.String[64]SI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
shopUserRefIdentificativo cliente.String[256]NO
shopUserNameCognome e Nome del cliente (separati dal carattere “,” es. rossi,mario )String[256]NO
trTypeTipologia di una richiesta.
  • PURCHASE
  • AUTH
  • VERIFY
SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI (NO con trType = “VERIFY”)
currencyCodeValuta associata ad una richiesta.EURSI (NO con trType = “VERIFY”)
langIDLingua relativa alla pagina di inserimento dei dati sensibili associati ad una richiesta.
  • IT
  • EN
SI
notifyURLURL relativo alla pagina di notifica esito di una richiesta.URL[512]SI
errorURLURL relativo alla pagina di errore associato ad una richiesta. La causa dell’errore viene ritornata tramite l’aggiunta del parametro “rc” in query string.URL[512]SI
addInfo1Campo a disposizione dell’esercente.String[256]NO
addInfo2Campo a disposizione dell’esercente.String[256]NO
addInfo3Campo a disposizione dell’esercente.String[256]NO
addInfo4Campo a disposizione dell’esercente.String[256]NO
addInfo5Campo a disposizione dell’esercente.String[256]NO
payInstrTokenToken dello strumento di pagamento. NOTA: I caratteri speciali accettati sono @.-+_: SpazioString[32]NO
descriptionCausale di pagamento.String[100]NO
freeTextTesto libero associato alla funzionalità Insegna Dinamica (vedere par. successivo).String[268]NO
callbackURLPagina sulla quale ricevere la notifica server-to-server (vedere par. successivo).String[512]NO
 
METODI
MetodoDescrizioneTipo ritornato [Dimensione]
execute()Esegue la transazione.Boolean
resetFields()Azzeramento parametri di richiesta.Integer
 
SOMMARIO PROPERTIES OUTPUT
PropertyDescrizioneTipo [Dimensione]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
paymentIDCodice paymentID associato ad una richiesta.String[32]
redirectURLURL associato alla pagina di “Buy Now”.URL[512]

callbackURL server to server

In fase di inizializzazione della transazione, se è popolato il campo "callbackURL", il server invia una comunicazione sull'esito alla pagina esposta dall' esercente dichiarata nel parametro stesso. Il processo di notifica può avvenire esclusivamente attraverso le porte 80 e 443. I tentativi di comunicazione seguono le seguenti regole:
  1. Al termine del pagamento il sistema esegue una POST sulla callbackURL, inviando i seguenti campi: tid, shopID, paymentID.
  2. Ricevuta la notifica sulla pagina esposta si dovrà eseguire il processo di verify(), classe IgfsCgVerify, utilizzando i parametri riportati nello step 1. Questa chiamata riporterà l’esito della transazione.
  3. I tentativi verranno fatti finché il server non risponde con esito http 200. Per ogni esito differente, ad esempio 3xx, la notifica verrà considerata fallita.
  4. Il primo tentativo è fatto al termine della transazione dell'utente.
  5. Se il primo tentativo di notifica non va a buon fine, i contatti verso il server dell'esercente verranno tentati ogni ora fino ad una corretta risposta. Verranno selezionate le transazioni eseguite e non notificatedelle ultime 24 ore e fino ad un‘ora prima dell'esecuzione dell'autorizzazione.

Insegna Dinamica (campo freeText)

I merchant che ne richiedono il servizio, ad ogni richiesta autorizzativa se valorizzano il campo "freetext" con un codice alfanumerico di 6 caratteri, tale codice sarà postato sull' estratto conto prodotto dalla banca emittente della carta di credito utilizzata dall' utente, comprensivo dell' insegna del punto vendita. Esempio: se l'insegna del negozio è "PIZZA ITALY", e in fase di richiesta autorizzativa viene postato nel campo "freetext" il codice 34FGNO, sull' estratto conto dell' utente ci sarà; "PIZZA ITALY-34FGNO". Il prodotto si chiama insegna dinamica, perché il codice alfanumerico può cambiare ad ogni operazione di acquisto.

ShopIDcaratteri accettati

All’interno del campo “shopID” sono accettati esclusivamente i caratteri presentati nella seguente lista. Le transazioni presentate con caratteri non validi verranno scartate. @ ClasseIgfsCgVerify Utilizzata per eseguire un’operazione di verifica dati della richiesta di pagamento.
SOMMARIO PROPERTIES INPUT
PropertyDescrizioneTipo o Valore [Dimensione]Obbligatorio
serverURLIndirizzo del server di destinazione della richiesta.URLSI
timeoutTimeout massimo espresso in millisecondi di completamento di una richiesta.IntegerSI
kSigChiave per firmare il messaggio.String[64]SI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
paymentIDCodice paymentID associato ad una richiesta.String[32]SI
METODI
MetodoDescrizioneTipo ritornato [Dimensione]
execute()Esegue la transazione.Boolean
resetFields()Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
PropertyDescrizioneTipo [Dimensione]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
tranIDCodice ordine processato.Long[16]
authCodeCodice di autorizzazione restituito dall’issuer.String[32]
enrStatusStato di iscrizione carta al servizio 3D Secure.String[1]
authStatusEsito autenticazione carta al servizio 3D Secure.String[1]
brandBrand carta di credito (es. VISA, MASTERCARD, …).String[8]
maskedPanNumero di carta mascherato.String[19]
payInstrTokenToken dello strumento di pagamento.String[32]
expireMonthMese di scadenza.Integer[2]
expireYearAnno di scadenza.Integer[4]
accountNameCognome e Nome del titolare (separati dal carattere “,” es. rossi,mario )
payInstrStrumento di pagamento utilizzato (es. CC, MYBK, …).String[2,4]

Pagamenti diretti con carte di credito

@ ClasseIgfsCgAuth Viene utilizzata per le inizializzazioni delle richieste di autorizzazione dirette su carta di credito.
SOMMARIO PROPERTIES INPUT
PropertyDescrizioneTipo o Valore [Dimensione]Obbligatorio
serverURLIndirizzo del server di destinazione della richiesta.URLSI
timeoutTimeout massimo espresso in millisecondi di completamento di una richiesta.IntegerSI
kSigChiave per firmare il messaggio.String[64]SI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
shopUserRefIdentificativo cliente.String[256]NO
shopUserNameCognome e Nome del cliente (separati dal carattere “,” es. rossi,mario )String[256]NO
shopUserIPIndirizzo IP del cliente.String[256]NO
trTypeTipologia di una richiesta.
  • PURCHASE
  • AUTH
  • VERIFY
SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI (NO con trType = “VERIFY”)
currencyCodeValuta associata ad una richiesta.EURSI (NO con trType = “VERIFY”)
panNumero di carta.String[19]SI (se non impostata la proprietà payInstrToken)
payInstrTokenToken dello strumento di pagamento. Se la property “pan” non è valorizzata: valorizzare col token su cui eseguire il pagamento; Se la property “pan” è valorizzata: valorizzare col token che si vuole registrare. NOTA: I caratteri speciali accettati sono @ . - + _ : SpazioString[32]NO
cvv2Numero di sicurezza sul retro della carta.String[4]SI
expireMonthMese di scadenza.Inger[2]SI
expireYearAnno di scadenza.Integer[4]SI
addInfo1Campo a disposizione dell’esercente.String[256]NO
addInfo2Campo a disposizione dell’esercente.String[256]NO
addInfo3Campo a disposizione dell’esercente.String[256]NO
addInfo4Campo a disposizione dell’esercente.String[256]NO
addInfo5Campo a disposizione dell’esercente.String[256]NO
enrStatusDato ricevuto in risposta dall’MPIString[1]NO
authStatusDato ricevuto in risposta dall’MPI.String[1]NO
cavvDato ricevuto in risposta dall’MPI.String[28]NO
xidDato ricevuto in risposta dall’MPI.String[28]NO
descriptionCausale di pagamento.String[100]NO
freeTextTesto libero associato alla funzionalità Insegna Dinamica (vedere par. successivo).String[268]NO
METODI
MetodoDescrizioneTipo ritornato [Dimensione]
execute()Esegue la transazione.Boolean
resetFields()Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
PropertyDescrizioneTipo [Dimensione]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
tranIDCodice ordine processato.Long [16]
authCodeCodice di autorizzazione restituito dall’issuerString[32]
brandBrand carta di credito (es. VISA, MASTERCARD, …).String[8]
@ ClasseIgfsCgConfirm Viene utilizzata per movimentare un’autorizzazione fatta con carta di credito.
SOMMARIO PROPERTIES INPUT
PropertyDescrizioneTipo o Valore [Dimensione]Obbligatorio
serverURLIndirizzo del server di destinazione della richiesta.URLSI
timeoutTimeout massimo espresso in millisecondi di completamento di una richiesta.IntegerSI
kSigChiave per firmare il messaggio.String[64]SI
tidCodice del terminale attraverso il quale è stata eseguita la transazione da movimentare.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI
refTranIDCodice ordine relativo alla transazione da movimentareLong[16]SI
METODI
MetodoDescrizioneTipo ritornato [Dimensione]
execute()Esegue la transazione.Boolean
resetFields()Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
PropertyDescrizioneTipo [Dimensione]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
tranIDCodice ordine processato.Long [16]
addInfo1Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo2Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo3Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo4Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo5Dati inviati in fase di autorizzazione dall’esercente.String[256]
pendingAmountEventuale importo non confermato.Long[16]
@ ClasseIgfsCgVoidAuth Viene utilizzata per stornare un’autorizzazione effettuata con carta di credito.
SOMMARIO PROPERTIES INPUT
PropertyDescrizioneTipo o Valore [Dimensione]Obbligatorio
serverURLIndirizzo del server di destinazione della richiesta.URLSI
timeoutTimeout massimo espresso in millisecondi di completamento di una richiesta.IntegerSI
kSigChiave per firmare il messaggio.String[64]SI
tidCodice del terminale attraverso il quale è stata eseguita la transazione da stornare.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI
refTranIDCodice ordine relativo alla transazione da stornareLong[16]SI
METODI
MetodoDescrizioneTipo ritornato [Dimensione]
execute()Esegue la transazione.Boolean
resetFields()Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
PropertyDescrizioneTipo [Dimensione]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
tranIDCodice ordine processato.Long [16]
addInfo1Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo2Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo3Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo4Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo5Dati inviati in fase di autorizzazione dall’esercente.String[256]
@ ClasseIgfsCgCredit Viene utilizzata per riaccreditare un addebito effettuatosu carta di credito.
SOMMARIO PROPERTIES INPUT
PropertyDescrizioneTipo o Valore [Dimensione]Obbligatorio
serverURLIndirizzo del server di destinazione della richiesta.URLSI
timeoutTimeout massimo espresso in millisecondi di completamento di una richiesta.IntegerSI
kSigChiave per firmare il messaggio.String[64]SI
tidCodice del terminale attraverso il quale è stata eseguita la transazione da movimentare.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI
refTranIDCodice ordine relativo alla transazione da movimentareLong[16]SI
METODI
MetodoDescrizioneTipo ritornato [Dimensione]
execute()Esegue la transazione.Boolean
resetFields()Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
PropertyDescrizioneTipo [Dimensione]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
tranIDCodice ordine processato.Long [16]
addInfo1Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo2Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo3Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo4Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo5Dati inviati in fase di autorizzazione dall’esercente.String[256]
 

Funzionalità MPI

@ ClasseIgfsCGMPIEnroll Viene utilizzata per verificare se la carta è inscritta al servizio 3D Secure.
SOMMARIO PROPERTIES INPUT
PropertyDescrizioneTipo o Valore [Dimensione]Obbligatorio
serverURLIndirizzo del server di destinazione della richiesta.URLSI
timeoutTimeout massimo espresso in millisecondi di completamento di una richiesta.IntegerSI
kSigChiave per firmare il messaggio.String[64]SI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
shopUserRefIdentificativo cliente.String[256]NO
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI
currencyCodeValuta associata ad una richiesta.EURSI
panNumero di carta.String[19]SI
expireMonthMese di scadenza.Inger[2]SI
expireYearAnno di scadenza.Integer[4]SI
termURLURL dove l’ACS ridirige al termine del processo di autenticazione.URL[512]SI
descriptionValore riportato nella form dell’ACSString[100]NO
addInfo1Campo a disposizione dell’esercente.String[256]NO
addInfo2Campo a disposizione dell’esercente.String[256]NO
addInfo3Campo a disposizione dell’esercente.String[256]NO
addInfo4Campo a disposizione dell’esercente.String[256]NO
addInfo5Campo a disposizione dell’esercente.String[256]NO
METODI
MetodoDescrizioneTipo ritornato [Dimensione]
execute()Esegue la transazione.Boolean
resetFields()Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
PropertyDescrizioneTipo [Dimensione]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
xidIdentificativo della transazione.String[28]
enrStatusY – Autenticazione disponibile; N – Titolare non partecipante al servizio; U – Autenticazione non possibile; E – Errore.String[1]
paReqProcess auth request.String
mdMerchant Data.String
acsURLURL dell’ACS dove il browser deve essere rediretto. E’ necessario postare i seguenti parametri all’URL ricevuta:
  • PaReq
  • MD
  • TermURL
URL[512]
acsPageCodice HTML da inviare al browser per arrivare alla pagina ACS.String
@ ClasseIgfsCGMPIAuth Viene utilizzata per verificare il risultato dell’autenticazione 3D Secure del titolare.
SOMMARIO PROPERTIES INPUT
PropertyDescrizioneTipo o Valore [Dimensione]Obbligatorio
serverURLIndirizzo del server di destinazione della richiesta.URLSI
timeoutTimeout massimo espresso in millisecondi di completamento di una richiesta.IntegerSI
kSigChiave per firmare il messaggio.String[64]SI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
paResProcess auth response (da msg enrollment)StringSI
mdMerchant DataStringSI
METODI
MetodoDescrizioneTipo ritornato [Dimensione]
execute()Esegue la transazione.Boolean
resetFields()Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
PropertyDescrizioneTipo [Dimensione]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
xidIdentificativo della transazione.String[28]
enrStatusY – Autenticazione disponibile; N – Titolare non partecipante al servizio; U – Autenticazione non possibile; E – Errore.String[1]
cavvCardholder Auth. Verification ValueString[28]
eciElectronic Commerce IndicatorString[8]
 

Integrazione web services

L’integrazione con i servizi web di e-POSitivity presuppone l’importazione di file wsdl nel proprio progetto. Riportiamo tutte le proprietà di richiesta e risposta.

Pagamenti online

@ Metodo init() Utilizzato per eseguire una inizializzazione della richiesta di pagamento.
PaymentInitRequest
PropertyDescrizioneTipo o valore [Dimensione]Obbligatorio
signatureFirma del messaggio composta dalla concatenazione dei campi rispettando il seguente ordine:
  • tid
  • shopID
  • shopUserRef
  • shopUserName
  • trType
  • amount
  • currencyCode
  • langID
  • notifyURL
  • errorURL
  • callbackURL
  • addInfo1
  • addInfo2
  • addInfo3
  • addInfo4
  • addInfo5
  • accountName
  • description
  • freeText
  • payInstrToken
Per il calcolo della firma si veda l’APPENDICE A.
StringSI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
shopUserRefIdentificativo cliente.String[256]NO
shopUserNameCognome e Nome del cliente (separati dal carattere “,” es. rossi,mario )String[256]NO
trTypeTipologia di una richiesta.
  • PURCHASE
  • AUTH
  • VERIFY
SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI (NO con trType = “VERIFY”)
currencyCodeValuta associata ad una richiesta.EURSI (NO con trType = “VERIFY”)
langIDLingua relativa alla pagina di inserimento dei dati sensibili associati ad una richiesta.
  • IT
  • EN
SI
notifyURLURL relativo alla pagina di notifica esito di una richiesta.URL[512]SI
errorURLURL relativo alla pagina di errore associato ad una richiesta. La causa dell’errore viene ritornata tramite l’aggiunta del parametro “rc” in query string.URL[512]SI
addInfo1Campo a disposizione dell’esercente.String[256]NO
addInfo2Campo a disposizione dell’esercente.String[256]NO
addInfo3Campo a disposizione dell’esercente.String[256]NO
addInfo4Campo a disposizione dell’esercente.String[256]NO
addInfo5Campo a disposizione dell’esercente.String[256]NO
descriptionCausale di pagamento.String[100]NO
payInstrTokenToken dello strumento di pagamento. NOTA: I caratteri speciali accettati sono @ . - + _ : SpazioString[32]NO
accountNameCognome e Nome del titolare (separati dal carattere “,” es. rossi,mario ) per il prefill dei rispettivi campi.String[256]NO
freeTextTesto libero associato alla funzionalità Insegna Dinamica (vedere par. successivo).String[268]NO
callbackURLPagina sulla quale ricevere la notifica server-to-server (vedere par. successivo).String[512]NO
 
PaymentInitResponse
PropertyDescrizioneTipo o valore [Dimensione]
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • rc
  • errorDesc
  • paymentID
  • redirectURL
Per il calcolo della firma si veda l’APPENDICE A.
String
errorRestituisce true in presenza di un errore/anomaliaBoolean
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
paymentIDCodice paymentID associato ad una richiesta.String [32]
redirectURLURL associato alla pagina di “Buy Now”.URL[512]

callbackURL server to server

In fase di inizializzazione della transazione, se è popolato il campo "callbackURL", il server invia una comunicazione sull'esito alla pagina esposta dall' esercente dichiarata nel parametro stesso. Il processo di notifica può avvenire esclusivamente attraverso le porte 80 e 443. I tentativi di comunicazione seguono le seguenti regole:
  1. Al termine del pagamento il sistema esegue una POST sulla callbackURL, inviando i seguenti campi: tid, shopID, paymentID.
  2. Ricevuta la notifica sulla pagina esposta si dovrà eseguire il metodoverify(), utilizzando i parametri riportati nello step 1. Questa chiamata riporterà l’esito della transazione.
  3. I tentativi verranno fatti finché il server non risponde con esito http 200. Per ogni esito differente, ad esempio 3xx, la notifica verrà considerata fallita.
  4. Il primo tentativo è fatto al termine della transazione dell'utente.
  5. Se il primo tentativo di notifica non va a buon fine, i contatti verso il server dell'esercente verranno tentati ogni ora fino ad una corretta risposta. Verranno selezionate le transazioni eseguite e non notificatedelle ultime 24 ore e fino ad un‘ora prima dell'esecuzione dell'autorizzazione.

Insegna Dinamica (campo FreeText)

merchant che ne richiedono il servizio, ad ogni richiesta autorizzativa se valorizzano il campo "freetext" con un codice alfanumerico di 6 caratteri, tale codice sarà postato sull' estratto conto prodotto dalla banca emittente della carta di credito utilizzata dall' utente, comprensivo dell' insegna del punto vendita. Esempio: se l'insegna del negozio è "PIZZA ITALY", e in fase di richiesta autorizzativa viene postato nel campo "freetext" il codice 34FGNO, sull' estratto conto dell' utente ci sarà; "PIZZA ITALY-34FGNO". Il prodotto si chiama insegna dinamica, perché il codice alfanumerico può cambiare ad ogni operazione di acquisto.

ShopID - caratteri accettati

All’interno del campo “ShopID” sono accettati esclusivamente i caratteri presentati nella seguente lista. Le transazioni presentate con caratteri non validi verranno scartate.   @ Metodo verify() Utilizzato per eseguire un’operazione di verifica dati della richiesta di pagamento.
PaymentVerifyRequest
PropertyDescrizioneTipo o valore [Dimensione]Obbligatorio
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • paymentID
Per il calcolo della firma si veda l’APPENDICE A.
StringSI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
paymentIDCodice paymentID associato alla richiesta.String[32]SI
 
PaymentVerifyResponse
PropertyDescrizioneTipo [Dimensione]
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • rc
  • errorDesc
  • paymentID
  • trainID
  • authCode
  • enrStatus
  • authStatus
Per il calcolo della firma si veda l’APPENDICE A.
String
errorRestituisce true in presenza di un errore/anomaliaBoolean
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
tranIDCodice Ordine processato.Long [16]
authCodeCodice di autorizzazione restituito dall’issuer.String[32]
enrStatusStato di iscrizione carta al servizio 3D Secure.String[1]
authStatusEsito autenticazione carta al servizio 3D Secure.String[1]
brandBrand carta di credito (es. VISA, MASTERCARD, …).String[8]
maskedPanNumero di carta mascherato.String[19]
payInstrTokenToken dello strumento di pagamento.String[32]
expireMonthMese di scadenza.Integer[2]
expireYearAnno di scadenza.Integer[4]
accountNameCognome e Nome del titolare (separati dal carattere “,” es. rossi,mario )String[256]
payInstrStrumento di pagamento utlizzato (es. CC, MYBK, …).String[2,4]

Pagamenti diretti

@ Metodo Auth() Utilizzato per eseguire una inizializzazione della richiesta di pagamento diretta con carta di credito.
PaymentAuthRequest
PropertyDescrizioneTipo o valore [Dimensione]Obbligatorio
signatureFirma del messaggio composta dalla concatenazione dei campi rispettando il seguente ordine:
  • tid
  • shopID
  • shopUserRef
  • shopUserName
  • shopUserIP
  • trType
  • amount
  • currencyCode
  • callbackURL
  • pan
  • payInstrToken
  • cvv2
  • expireMonth
  • expireYear
  • addInfo1
  • addInfo2
  • addInfo3
  • addInfo4
  • addInfo5
Per il calcolo della firma si veda l’APPENDICE A.
StringSI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
shopUserRefIdentificativo cliente.String[256]NO
shopUserNameCognome e Nome del cliente (separati dal carattere “,” es. rossi,mario )String[256]NO
shopUserIPIndirizzo IP del cliente.String[255]NO
trTypeTipologia di una richiesta.
  • PURCHASE
  • AUTH
  • VERIFY
SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI (NO con trType = “VERIFY”)
currencyCodeValuta associata ad una richiesta.EURSI (NO con trType = “VERIFY”)
panNumero di carta.String[19]SI (se non impostata la proprietà payInstrToken)
payInstrTokenToken dello strumento di pagamento. Se la property “pan” non è valorizzata: valorizzare col token su cui eseguire il pagamento; Se la property “pan” è valorizzata: valorizzare col token che si vuole registrare.String[32]NO
cvv2Numero di sicurezza sul retro della carta.String[4]SI
expireMonthMese di scadenza.Inger[2]SI
expireYearAnno di scadenza.Integer[4]SI
accountNameCognome e Nome del titolare (separati dal carattere “,” es. rossi,mario )String[256]NO
addInfo1Campo a disposizione dell’esercente.String[256]NO
addInfo2Campo a disposizione dell’esercente.String[256]NO
addInfo3Campo a disposizione dell’esercente.String[256]NO
addInfo4Campo a disposizione dell’esercente.String[256]NO
addInfo5Campo a disposizione dell’esercente.String[256]NO
enrStatusDato ricevuto in risposta dall’MPIString[1]NO
authStatusDato ricevuto in risposta dall’MPIString[1]NO
cavvDato ricevuto in risposta dall’MPIString[28]NO
xidDato ricevuto in risposta dall’MPIString[28]NO
descriptionCausale di pagamento.String[100]NO
freeTextTesto libero associato alla funzionalità Insegna Dinamica (vedere par. successivo).String[268]NO
callbackURLPagina sulla quale ricevere la notifica server-to-server (vedere par. successivo).String[512]NO
PaymentAuthResponse
PropertyDescrizioneTipo [Dimensione]
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • rc
  • errorDesc
  • paymentID
  • authCode
Per il calcolo della firma si veda l’APPENDICE A.
String
 error Restituisce true in presenza di un errore/anomalia Boolean
 rc Esito della richiesta. String[16]
 errorDesc Descrizione di un errore/anomalia. String[80]
 tranID Codice ordine processato. Long[16]
 authCode Codice di autorizzazione restituito dall’issuer String[32]
 brand Brand carta di credito (es. VISA, MASTERCARD, …) String[32]
paymentID Codice paymentID associato ad una richiesta. String [32]
 payInstrToken Token dello strumento di pagamento. String[32]
@ Metodo confirm() Utilizzato per movimentare una autorizzazione effettuata con carta di credito.
PaymentAuthRequest
PropertyDescrizioneTipo o valore [Dimensione]Obbligatorio
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • amount
  • refTranID
Per il calcolo della firma si veda l’APPENDICE A.
StringSI
tidCodice del terminale attraverso il quale è stata eseguita la transazione da movimentare.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI
refTranIDCodice ordine relativo alla transazione da movimentareLong[16]SI
PaymentConfirmResponse
PropertyDescrizioneTipo [Dimensione]
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • rc
  • errorDesc
  • tranID
  • addInfo1
  • addInfo2
  • addInfo3
  • addInfo4
  • addInfo5
Per il calcolo della firma si veda l’APPENDICE A.
String
errorRestituisce true in presenza di un errore/anomaliaString[80]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
tranIDCodice ordine processato.Long[16]
addInfo1 Dati inviati in fase di autorizzazione dall’esercente. String[256]
addInfo2 Dati inviati in fase di autorizzazione dall’esercente. String[256]
addInfo3 Dati inviati in fase di autorizzazione dall’esercente. String[256]
addInfo4 Dati inviati in fase di autorizzazione dall’esercente. String[256]
addInfo5 Dati inviati in fase di autorizzazione dall’esercente. String[256]
pendingAmount Eventuale importo non confermato. Long[16]
@ Metodo voidAuth() Utilizzata per stornare un’autorizzazione eseguita con carta di credito.
PaymentVoidAuthRequest
PropertyDescrizioneTipo o valore [Dimensione]Obbligatorio
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • amount
  • refTranID
Per il calcolo della firma si veda l’APPENDICE A.
StringSI
tidCodice del terminale attraverso il quale è stata eseguita la transazione da movimentare.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI
refTranIDCodice ordine relativo alla transazione da movimentareLong[16]SI
PaymentVoidAuthResponse
PropertyDescrizioneTipo [Dimensione]
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • rc
  • errorDesc
  • tranID
  • addInfo1
  • addInfo2
  • addInfo3
  • addInfo4
  • addInfo5
Per il calcolo della firma si veda l’APPENDICE A.
String
errorRestituisce true in presenza di un errore/anomaliaString[80]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
tranIDCodice ordine processato.Long[16]
addInfo1Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo2Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo3Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo4Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo5Dati inviati in fase di autorizzazione dall’esercente.String[256]
@ Metodo credit() Utilizzato per riaccreditare un’autorizzazione effettuata con carta di credito.
PaymentCreditRequest
PropertyDescrizioneTipo o valore [Dimensione]Obbligatorio
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • amount
  • refTranID
Per il calcolo della firma si veda l’APPENDICE A.
StringSI
tidCodice del terminale attraverso il quale è stata eseguita la transazione da riaccreditare.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI
refTranIDCodice ordine relativo alla transazione da movimentareLong[16]SI
PaymentCreditResponse
PropertyDescrizioneTipo [Dimensione]
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • rc
  • errorDesc
  • tranID
  • addInfo1
  • addInfo2
  • addInfo3
  • addInfo4
  • addInfo5
Per il calcolo della firma si veda l’APPENDICE A.
String
errorRestituisce true in presenza di un errore/anomaliaString[80]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
tranIDCodice ordine processato.Long[16]
addInfo1Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo2Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo3Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo4Dati inviati in fase di autorizzazione dall’esercente.String[256]
addInfo5Dati inviati in fase di autorizzazione dall’esercente.String[256]

Funzioni MPI

@ Metodo enroll() Utilizzata per verificare se la carta è inscritta a 3D Secure.
MPIEnrollRequest
PropertyDescrizioneTipo o valore [Dimensione]Obbligatorio
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • shopUserRef
  • amount
  • currencyCode
  • pan
  • expireMonth
  • expireYear
  • termURL
  • descrition
  • addInfo2
  • addInfo3
  • addInfo4
  • addInfo5
Per il calcolo della firma si veda l’APPENDICE A.
StringSI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
shopUserRefIdentificativo cliente.String[256]NO
amountImporto associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR)Long[12]SI
currencyCodeValuta associata ad una richiesta.EURSI
panNumero di carta.String[19]SI
expireMonthMese di scadenza.Inger[2]SI
expireYearAnno di scadenza.Integer[4]SI
termURLURL dove l’ACS ridirige al termine del processo di autenticazione.URL[512]SI
descriptionValore riportato nella form dell’ ACSString[100]NO
addInfo1Campo a disposizione dell’esercente.String[256]NO
addInfo2Campo a disposizione dell’esercente.String[256]NO
addInfo3Campo a disposizione dell’esercente.String[256]NO
addInfo4Campo a disposizione dell’esercente.String[256]NO
addInfo5Campo a disposizione dell’esercente.String[256]NO
MPIEnrollResponse
PropertyDescrizioneTipo [Dimensione]
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • rc
  • errorDesc
  • enrStatus
  • paReq
  • md
  • acsURL
  • acsPage
Per il calcolo della firma si veda l’APPENDICE A.
String
errorRestituisce true in presenza di un errore/anomaliaString[80]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
xidIdentificativo della transazione.String[28]
enrStatusY – Autenticazione disponibile; N – Titolare non partecipante al servizio; U – Autenticazione non possibile; E – Errore.String[1]
paReqProcess auth request.String
mdMerchant Data.String
acsURLURL dell’ACS dove il browser deve essere rediretto. E’ necessario postare i seguenti parametri all’URL ricevuta:
  • PaReq
  • MD
  • TermURL
URL[512]
acsPageCodice HTML da inviare al browser per arrivare alla pagina ACS.String
@ Metodo auth() Utilizzata per verificare il risultato dell’autorizzazione 3D Secure del titolare.
MPIAutRequest
PropertyDescrizioneTipo o valore [Dimensione]Obbligatorio
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • paRes
  • md
Per il calcolo della firma si veda l’APPENDICE A.
StringSI
tidCodice terminale dell’esercente.String[16]SI
shopIDChiave esterna identificante il pagamento.String[256]SI
paResProcess auth response (da msg enrollment)StringSI
mdMerchant DataStringSI
 
MPIEnrollResponse
PropertyDescrizioneTipo [Dimensione]
signatureFirma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • rc
  • errorDesc
  • authStatus
  • cavv
  • eci
Per il calcolo della firma si veda l’APPENDICE A.
String
errorRestituisce true in presenza di un errore/anomaliaString[80]
rcEsito della richiesta.String[16]
errorDescDescrizione di un errore/anomalia.String[80]
xidIdentificativo della transazione.String[28]
authStatusY – Autenticazione disponibile; N – Titolare non partecipante al servizio; U – Autenticazione non possibile; E – Errore.String[1]
cavvCardholder Auth. Verification ValueString[28]
eciElectronic Commerce IndicatorString[8]

Procedura delle chiamate

Riportiamo di seguito la corretta procedura di chiamata delle classi nei servizi di pagamento che richiedono più step per la corretta esecuzione della transazione.

La classe richiede una prima inizializzazione che indirizza il cliente sulla pagina di pagamento di AXEPTA utilizzando la classe "IgfsCgInit o init()". Dopo la transazione il gateway di AXEPTA indirizza il browser dell'utente sulla pagina di notifica, dove deve essere istanziata la classe "IgfsCgVerify o verify".

  • Pagamenti diretti verifica del 3DSecure:
    • Prima di procedere con i pagamenti diretti è necessario verificare se la carta è iscritta al servizio 3DSecure, quindi chiamare la directory dell'issuer per verificare se la carta richiede il token/password, utilizzando la classe "igfsCGMPIEnroll", che con risposta positiva indirizza l'utente sulla pagina dell'emittente carta per l'inserimento della password. Successivamente la banca indirizza l'utente sulla pagina dell'esercente, quindi deve essere richiamata la classe "IgfsCGMPIAuth" per la verifica dell'esito.

Implementazione API

Al fine di facilitare la comprensione dei metodi concernenti, l’utilizzo delle API sopra descritte riportiamo script di esempio in diversi linguaggi. @ DOT.NET Riportiamo un’integrazione fatta con Visual Studio 2010:
  • Dalla solution del progetto aggiungere il riferimento alla dll IGFS_CG_API_2.1.3.dll
 
//PAGAMENTO ONLINE

require('IGFS_CG_API/init/IgfsCgInit.php'); 
require('IGFS_CG_API/init/IgfsCgAuth.php'); 
 
//Importo del pagamento 
                //"amount" è un parametro POST rappresentante l'importo del pagamento, in centesimi 
                $amount = $_POST['amount']; 
                $amount = 100*$amount; 
                 
                //Inizializzo i parametri 
                $init = new IgfsCgInit(); 
                $init->serverURL = "https://test.bnlpositivity.it/BNL_CG_SERVICES/services"; 
                $init->errorURL = "http://localhost/testigfs/error.php"; 
                $init->notifyURL = "http://localhost/testigfs/notify.php"; 
                $init->tid="BNL_SELECT"; 
                $init->kSig="xxxxiSb08fs8Bxxx9Yhq3Ub99E8="; 
                $init->shopID = "00000001"; 
                $init->shopUserRef="email@clienteemail.it"; 
                $init->trType="AUTH"; 
                $init->currencyCode = "EUR"; 
                $init->landID = "IT"; 
                $init->timeout=150000; 
                $init->amount=$amount; 
 
                //Eseguo la richiesta 
                if(!$init->execute()){ 
                               //In caso di errore, redirect su pagina di errore 
                               header("location:           error.php?rc=".urlencode($init->rc)."&errorDesc=".urlencode($init->errorDesc)); 
                               return; 
                } 
 //Salvo in paymentId il valore dell'id del pagamento (es: da riportare nel DB) 
                $paymentId = $init->paymentID; 
                 
                //Senza errori, redirect 
                header("location:           ".$init->redirectURL); 
                return;
//PAGAMENTO ONLINE

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@page import="it.netsw.apps.igfs.cg.coms.api.BaseIgfsCg.LangID"%> 
<%@page import="it.netsw.apps.igfs.cg.coms.api.BaseIgfsCg.CurrencyCode"%> 
<%@ page import="it.netsw.apps.igfs.cg.coms.api.init.IgfsCgInit"%>
<%@ page import="it.netsw.apps.igfs.cg.coms.api.init.IgfsCgInit.*"%> 
<%@page import="java.net.URL"%> 
<% 
         //Definisco i valori dei parametri 
         String serverURL = "https://test.bnlpositivity.it/BNL_CG_SERVICES/services"; 
String errorURL = "http://localhost:8080/IGFSjsp/errorPayment.jsp"; 
         String notifyURL = "http://localhost:8080/IGFSjsp/notifyPayment.jsp"; 
      String tId = "BNL_SELECT"; 
         String KSig = "xxxxiSb08fs8Bxxx9Yhq3Ub99E8="; 
         String shopId = "00000001"; 
         String shopRef = "email@clienteemail.it"; 
         TrType trType = TrType.AUTH; 
         CurrencyCode curr = CurrencyCode.EUR; 
LangID langId = LangID.IT; 
         //Importo del pagamento 
         long amount = 100;  
 
         //Imposto i parametri sul'oggetto IgfsCgInit 
IgfsCgInit init = new IgfsCgInit(); 
init.setServerURL(new URL(serverURL)); 
init.setErrorURL(new URL(errorURL)); 
init.setNotifyURL(new URL(notifyURL)); 
init.setTimeout(150000); 
init.setTid(tId); 
init.setKSig(KSig); 
init.setShopID(shopId); 
init.setShopUserRef(shopRef); 
init.setTrType(trType); 
init.setCurrencyCode(curr); 
init.setLangID(langId); 
init.setAmount(amount);
 //Eseguo la richiesta /* 
if (!init.execute()) 
        { 
        URL redirectURL = new URL(errorURL + "?rc=" + init.getRc() + "&errorDesc=" + init.getErrorDesc()); 
response.sendRedirect(redirectURL.toString()); 
            return; 
} 
 
        //Salvo l'id del pagamento, da riportare ad esempio su DB 
String paymentId = init.getPaymentID(); 
 
        //Redirezione 
        URL redirectUrl = init.getRedirectURL(); 
response.sendRedirect(redirectUrl.toString()); 
 
 
    %>
PAGAMENTO DIRETTO

<%@page import="it.netsw.apps.igfs.cg.coms.api.tran.IgfsCgAuth.*"%> 
<%@page import="it.netsw.apps.igfs.cg.coms.api.tran.IgfsCgAuth"%> 
<%@page import="it.netsw.apps.igfs.cg.coms.api.BaseIgfsCg.CurrencyCode"%> 
<%@page import="java.net.URL"%> 
 <% 
  //Parametri pagamento 
  String serverURL = "https://test.bnlpositivity.it/BNL_CG_SERVICES/services"; 
  String errorURL = "http://localhost:8080/IGFSjsp/errorPayment.jsp"; 
  String tId = "BNL_SELECT"; 
  String KSig = "xxxxiSb08fs8Bxxx9Yhq3Ub99E8="; 
  String shopId = "00000003";
  String shopRef = "email@clienteemail.it"; 
  TrType trType = TrType.AUTH; 
  CurrencyCode curr = CurrencyCode.EUR; 
 
  //Importo del pagamento 
  long amount = Long.parseLong(request.getParameter("amount")); 
 
  //Dati carta 
  //Numero carta 
  String pan = request.getParameter("pan"); 
  //Mese scadenza 
  int expireMonth = Integer.parseInt(request 
    .getParameter("expireMonth")); 
  //Anno scadenza 
  int expireYear = Integer.parseInt(request 
    .getParameter("expireYear")); 
  //CVV 
  String cvv = request.getParameter("cvv"); 
 
  //Imposto i parametri sul'oggetto IgfsCgAuth 
  IgfsCgAuth auth = new IgfsCgAuth(); 
  auth.setServerURL(new URL(serverURL)); 
  auth.setTimeout(150000); 
  auth.setTid(tId); 
  auth.setKSig(KSig); 
  auth.setShopID(shopId); 
  auth.setShopUserRef(shopRef); 
  auth.setTrType(trType); 
  auth.setCurrencyCode(curr); 
  auth.setAmount(amount); 
  auth.setPan(pan); 
  auth.setExpireMonth(expireMonth);
  auth.setExpireYear(expireYear); 
  auth.setCvv2(cvv); 
 
  //Eseguo la richiesta  
  if (!auth.execute()) { 
   URL redirectURL = new URL(errorURL + "?rc=" + auth.getRc() 
     + "&errorDesc=" + auth.getErrorDesc()); 
   response.sendRedirect(redirectURL.toString()); 
   return; 
  } 
 
  //Risultato 
  String res = ""; 
  //Id transazione 
  String tranID = ""; 
  //Brand 
  String brand = ""; 
 
  if (auth.getRc() != null) { 
   res = auth.getRc(); 
  } 
  if (auth.getTranID() != null) { 
   tranID = auth.getTranID().toString(); 
  } 
  if (auth.getBrand() != null) { 
   brand = auth.getBrand(); 
  } 
//Restituisco risposta 
  response.getWriter().write("res: " + res + ", trandID: " + tranID  
    + ", brand: "+ brand); 
  response.getWriter().flush(); 
 %> 
PAGAMENTO ONLINE

protectedvoid btnPagamentiOnlineAuth_Click(object sender, EventArgs e)         
    { 
 
string result = ""; 
string tranID = ""; 
string brand = ""; 
 
//DICHIARARE L'URL DELLA PAGINA BUY NOW DI BNLPositivity 
string serverURL = "https://test.bnlpositivity.it/BNL_CG_SERVICES/services"; 
//DICHIARARE UNA PAGINA DI REDIRECT IN CASO DI ERRORE 
string errorURL = "http://localhost:2637/errorPayment.aspx"; 
//DICHIARARE UNA PAGINA DI REDIRECT DOPO LA TRANSAZIONE 
string notifyURL = "http://localhost:2637/notifyPayment.aspx";
 
//DICHIARARE I PARAMETRI PER L'INIZIALIZZAZIONE DELLA RICHIESTA DI PAGAMENTO 
//TUTTI I PARAMETRI RIPORTATI SONO SOLO A TITOLO DI ESEMPIO 
IgfsCgInit objInit = newIgfsCgInit(); 
var _with1 = objInit;             
    objInit.ServerURL = newUri(serverURL);             
    objInit.Timeout = 1500000;             
    objInit.Tid = "BNL_SELECT";             
    objInit.KSig = " xxxxiSb08fs8Bxxx9Yhq3Ub99E8=";             
    objInit.ShopID = "00000001";             
    objInit.ShopUserRef = "email@clienteemail.it";             
    objInit.TrType = it.netsw.apps.igfs.cg.coms.api.init.TrType.AUTH;             
    objInit.CurrencyCode = it.netsw.apps.igfs.cg.coms.api.CurrencyCode.EUR;             
    objInit.LangID = it.netsw.apps.igfs.cg.coms.api.LangID.IT;             
    objInit.Amount = Convert.ToInt64(this.txtIMPORTO.Text) * 100;             
    objInit.ErrorURL = newUri(errorURL);            
    objInit.NotifyURL = newUri(notifyURL); 
 
 
//ESECUZIONE RICHIESTA DI TRANSAZIONE 
if(!objInit.execute())             
    { 
//REDIRECT IN CASO DI ERRORE                 
    Response.Redirect(errorURL + "?rc=" + objInit.Rc + "&errorDesc=" + objInit.ErrorDesc);             
    } 
 
//RIPRENDO IL PAYMENTID PER EVENTUALI SALVATAGGI ES. SUL DB 
string paymentId = objInit.PaymentID; 
 
//REDIRECT VERSO LA PAGINA BUY NOW DI BNLPositivity 
Uri redirectURL = objInit.RedirectURL;             
    Response.Redirect(redirectURL.ToString()); 
} 
PAGAMENTO DIRETTO

protectedvoid btnPagamentiDirettiAuth_Click(object sender, EventArgs e)
    { 
 
string result = ""; 
string tranID = ""; 
string brand = ""; 
 
//DICHIARARE L'URL DELLA PAGINA BUY NOW DI BNLPositivity 
string serverURL = "https://test.bnlpositivity.it/BNL_CG_SERVICES/services"; 
 
//DICHIARARE UNA PAGINA DI REDIRECT IN CASO DI ERRORE 
string errorURL = "http://localhost:2637/errorPayment.aspx"; 
 
//DICHIARARE I PARAMETRI PER L'INIZIALIZZAZIONE DELLA RICHIESTA DI PAGAMENTO 
//TUTTI I PARAMETRI RIPORTATI SONO SOLO A TITOLO DI ESEMPIO 
IgfsCgAuth objAuth = newIgfsCgAuth();             
    objAuth.ServerURL = newUri(serverURL);             
    objAuth.Timeout = 15000;             
    objAuth.Tid = "BNLP_SELE";             
    objAuth.KSig = " xxxxiSb08fs8Bxxx9Yhq3Ub99E8=";             
    objAuth.ShopID = "00000003";             
    objAuth.ShopUserRef = "email@clienteemail.it";             
    objAuth.TrType = it.netsw.apps.igfs.cg.coms.api.tran.TrType.AUTH;             
    objAuth.CurrencyCode = it.netsw.apps.igfs.cg.coms.api.CurrencyCode.EUR;             
    objAuth.Amount = Convert.ToInt64(this.txtIMPORTO.Text) * 100;             
    objAuth.Pan = this.txtPAN.Text;             
    objAuth.ExpireMonth = Convert.ToInt16(this.txtSCADENZA_MESE.Text);             
    objAuth.ExpireYear = Convert.ToInt16(this.txtSCADENZA_ANNO.Text);             
    objAuth.Cvv2 = this.txtCVV.Text; 
 
 
//ESECUZIONE RICHIESTA DI TRANSAZIONE 
if(!objAuth.execute())             
    { 
//REDIRECT IN CASO DI ERRORE                 
    Response.Redirect(errorURL + "?rc=" + objAuth.Rc + "&errorDesc=" + objAuth.ErrorDesc);             
    } 
 
//RECUPERARE IL RISULTATO DELLA TRANSAZIONE 
if ((objAuth.Rc != null))                 
    result = objAuth.Rc.ToString(); 
if ((objAuth.TranID != null))                 
    tranID = objAuth.TranID.ToString(); 
if ((objAuth.Brand != null))                 
    brand = objAuth.Brand.ToString(); 
} 
PAGAMENTO ONLINE

ProtectedSub btnPagamentiOnlineAuth_Click(ByVal sender AsObject, ByVal e AsEventArgs) Handles btnPagamentiOnlineAuth.Click

Dim result AsString = ""
Dim tranID AsString = ""
Dim brand AsString = ""

'DICHIARARE L'URL DELLA PAGINA BUY NOW DI BNLPositivity
Dim serverURL AsString = "https://test.bnlpositivity.it/BNL_CG_SERVICES/services"
'DICHIARARE UNA PAGINA DI REDIRECT IN CASO DI ERRORE
Dim errorURL AsString = "http://localhost:2637/errorPayment.aspx"
'DICHIARARE UNA PAGINA DI REDIRECT DOPO LA TRANSAZIONE
Dim notifyURL AsString = "http://localhost:2637/notifyPayment.aspx"

'DICHIARARE I PARAMETRI PER L'INIZIALIZZAZIONE DELLA RICHIESTA DI PAGAMENTO
'TUTTI I PARAMETRI RIPORTATI SONO SOLO A TITOLO DI ESEMPIO
Dim objInit AsNewIgfsCgInit
With objInit
.ServerURL = NewUri(serverURL)
.Timeout = 1500000
.Tid = "BNL_SELECT"
.KSig = " xxxxiSb08fs8Bxxx9Yhq3Ub99E8="
.ShopID = "00000001"
.ShopUserRef = "email@clienteemail.it"
.TrType = it.netsw.apps.igfs.cg.coms.api.init.TrType.AUTH
.CurrencyCode = it.netsw.apps.igfs.cg.coms.api.CurrencyCode.EUR
.LangID = it.netsw.apps.igfs.cg.coms.api.LangID.IT
.Amount = Me.txtIMPORTO.Text
.ErrorURL = NewUri(errorURL)
.NotifyURL = NewUri(notifyURL)
EndWith

'ESECUZIONE RICHIESTA DI TRANSAZIONE'
IfNot objInit.execute() Then
'RINDIRIZZAMENTO IN CASO DI ERRORE
    Response.Redirect(errorURL &"?rc="& objInit.Rc &"&errorDesc="& objInit.ErrorDesc)
EndIf

'RIPRENDO IL PAYMENTID PER EVENTUALI SALVATAGGI ES. SUL DB'
Dim paymentId AsString = objInit.PaymentID

'REDIRECT VERSO LA PAGINA BUY NOW DI BNLPositivity'
Dim redirectURL AsUri = objInit.RedirectURL
    Response.Redirect(redirectURL.ToString())
EndSub
PAGAMENTO DIRETTO

ProtectedSub btnPagamentiDirettiAuth_Click(ByVal sender AsObject, ByVal e AsEventArgs) Handles btnPagamentiDirettiAuth.Click 
Dim result AsString = "" 
Dim tranID AsString = "" 
Dim brand AsString = "" 
 
'DICHIARARE L'URL DELLA PAGINA BUY NOW DI BNLPositivity' 
Dim serverURL AsString = "https://test.bnlpositivity.it/BNL_CG_SERVICES/services" 
 
'DICHIARARE UNA PAGINA DI REDIRECT IN CASO DI ERRORE' 
Dim errorURL AsString = "http://localhost:2637/errorPayment.aspx" 
 
'DICHIARARE I PARAMETRI PER L'INIZIALIZZAZIONE DELLA RICHIESTA DI PAGAMENTO 'TUTTI I PARAMETRI RIPORTATI SONO SOLO A TITOLO DI ESEMPIO'
Dim objAuth AsNewIgfsCgAuth 
With objAuth 
.ServerURL = NewUri(serverURL) 
.Timeout = 15000 
.Tid = "BNL_SELECT" 
.KSig = " xxxxiSb08fs8Bxxx9Yhq3Ub99E8=" 
.ShopID = "00000003" 
.ShopUserRef = "email@clienteemail.it" 
.TrType = it.netsw.apps.igfs.cg.coms.api.init.TrType.AUTH 
.CurrencyCode = it.netsw.apps.igfs.cg.coms.api.CurrencyCode.EUR 
.Amount = Convert.ToInt64(Me.txtIMPORTO.Text) 
.Pan = Me.txtPAN.Text 
.ExpireMonth = Me.txtSCADENZA_MESE.Text 
.ExpireYear = Me.txtSCADENZA_ANNO.Text 
.Cvv2 = Me.txtCVV.Text 
EndWith

'ESECUZIONE RICHIESTA DI TRANSAZIONE' 
IfNot objAuth.execute() Then 
'REDIRECT IN CASO DI ERRORE'
Response.Redirect(errorURL &"?rc="& objAuth.Rc &"&errorDesc="& objAuth.ErrorDesc) 
EndIf 
 
'RECUPERARE IL RISULTATO DELLA TRANSAZIONE'
IfNotIsNothing(objAuth.Rc) Then result = objAuth.Rc 
IfNotIsNothing(objAuth.TranID) Then tranID = objAuth.TranID 
IfNotIsNothing(objAuth.Brand) Then brand = objAuth.Brand 
 
EndSub

Implementazione web services

Al fine di facilitare la comprensione dei metodi relativi all’ utilizzo dei web services riportiamo script di esempio.
WS INIT()

<%
// ==================================================================
// =            Importazione delle classi di riferimento            =
// ==================================================================
%>

<%@page import="import java.io.File" %>
<%@page import="import java.net.MalformedURLException" %>
<%@page import="import java.net.URL" %>
<%@page import="import javax.xml.namespace.QName" %>
<%

// ==================================================================
// = imostazione parametri per l'installazione richiesta di         =
// = pagamento.                                                        =
// = NB: I parametri riportati sono solo a titolo di esempio        =
// ==================================================================
URL wsdlURL = new
URL("https://IPGATEWAY/IGFS_CG_SERVICES/services/PaymentInitGatewayPort?wsdl");
QName SERVICE_NAME = new
QName("http://services.api.web.cg.igfs.apps.netsw.it/","PaiymentGateway");

PaymentInitGateway_Service ss = new PaymentInitGateway_Service(wsdlURL,SERVICE_NAME);
PaymentInitGateway port = ss.getPaymentInitGatewayPort();

String tid            = "123456";
String kSig            = "indkmctaf9/MI3I5AZ4LskbmRiw=";
String shopID        = "5678010820272485455";
String shopUserRef    = "user@customer.it";
String trType        = "AUTH";
long amount            = 100;
String curCode        = "EUR";
String langID        = "IT";
String errorURL        = "https://merchant/error.jsp";
String notifyURL    = "https://merchant/notify.jsp";

String signature = getSignature(kSig, // KSIGN
    tid, // TID
    tidshopID, // SHOPID
    shopUserRef, // SHOPUSERREF
    trType, // TRTYPE
    amount, // AMOUNT
    currencyCode, // CURRENCYCODE
    langID, // LANGID
    notifyURL, // NOTIFYURL
    errorURL); //ERRORURL

Init _init_parameters = new Init();
PaymentInitRequest _init_parametersRequest = new PaymentInitRequest();
_init_parametersRequest.setTid(tid);
_init_parametersRequest.setSignature(signature);
_init_parametersRequest.setShopID(shopID);
_init_parametersRequest.seShopUserRef(shopUserRef);
_init_parametersRequest.setTrType(trType);
_init_parametersRequest.setAmount(amount);
_init_parametersRequest.seCurrencyCode(currencyCode);
_init_parametersRequest.setLangID(langID);
_init_parametersRequest.setNotifyURL(notifyURL);
_init_parametersRequest.setErrorURL(errorURL);
_init_parametersRequest.setRequest(_init_parametersRequest);

// ==================================================================
// =               esecuzione richiesta inizializzazione                 =
// ==================================================================

InitResponse _init_return = port.init(_init_parameters);

if (_init_return.getResponse().isError()) {
    // ===================================================================
    // = redirect del client su pagina di errore definita dall'esercente =
    // ===================================================================

response.sendRedirect(errorURL + "?rc=" +
    _init_return.getResponse().getRc() + "&errorDesc=" +
    _init_return.getResponse().getErrorDesc());
    return; 
}

String paymentID = _init_return.getResponse().getPaymentID();
// NOTA: Salvo il paymentID relativo alla richiesta (es. sul DB)...

// ==================================================================
// =             redirect del client verso URL IGFS BuyNow            =
// ==================================================================
String redirectURL = _init_return.getResponse().getRedirectURL();
response.sendRedirect(redirectURL.toString());
%>
WS VERIFY()

<%
// ==================================================================
// =            Importazione delle classi di riferimento            =
// ==================================================================
%>

<%@page import="import java.io.File" %>
<%@page import="import java.net.MalformedURLException" %>
<%@page import="import java.net.URL" %>
<%@page import="import javax.xml.namespace.QName" %>
<%

// ==================================================================
// = impostazione parametri per l'installazione richiesta di         =
// = pagamento.                                                        =
// = NB: I parametri riportati sono solo a titolo di esempio        =
// ==================================================================
URL wsdlURL = new
URL("https://IPGATEWAY/IGFS_CG_SERVICES/services/PaymentInitGatewayPort?wsdl");
QName SERVICE_NAME = new
QName("http://services.api.web.cg.igfs.apps.netsw.it/","PaiymentGateway");

PaymentInitGateway_Service ss = new PaymentInitGateway_Service(wsdlURL,SERVICE_NAME);
PaymentInitGateway port = ss.getPaymentInitGatewayPort();

String tid            = "123456";
String kSig            = "indkmctaf9/MI3I5AZ4LskbmRiw=";
String shopID        = "5678010820272485455";
String paymentID    = // NOTA: Leggo il paymentID rilasciato in fase di init (es.dal DB)...
String errorURL        = "https://merchant/error.jsp";
String esitoURL        = "https://merchant/esito.jsp";

String signature = getSignature(kSig, // KSIGN
    tid, // TID
    shopID, // SHOPID
    paymentID); // PAYMENTID

Verify _verify_parameters = new Verify();
PaymentVerifyRequest _verify_parametersRequest = new PaymentVerifyRequest();
_verify_parametersRequest.setTid(tid);
_verify_parametersRequest.setSignature(signature);
_verify_parametersRequest.setShopID(shopID);
_verify_parametersRequest.setPaymentID(paymentID);
_verify_parametersRequest.setRequest(_verify_parametersRequest);

// ==================================================================
// =                   esecuzione richiesta di verifica                 =
// ==================================================================

VerifyResponse _verify_return = port.verify(_verify_parameters);

if (_verify_return.getResponse().isError()) {
    // ===================================================================
    // = redirect del client su pagina di errore definita dall'esercente =
    // ===================================================================

    response.sendRedirect(errorURL + "?rc=" +
    _verify_return.getResponse().getRc() + "&errorDesc=" +
    _verify_return.getResponse().getErrorDesc());
    return; 
}

// ==================================================================
// =     redirect del client verso URL Esito Pagamento Merchant        =
// ==================================================================
StringBuffer resultURL = new StringBuffer();
resultURL.append(esitoURL);
resultURL.append("?rc=" + verify.getRc());
resultURL.append("&trainID=" + verify.getTrainID());
resultURL.append("&enrStatus=" + verify.getEnrStatus());
resultURL.append("&authStatus=" + verify.getAuthStatus());
response.sendRedirect(resultURL.toString());
%>

Integrazione con Findomestic

L'integrazione del circuito Findomestic prevede la valorizzazione dei parametri riportati nei paragrafi:
  • 8.A.1 ClasseIgfsCgInit, pagamenti BuyNow (autorizzazione o movimentazione)
  • 8.A.2 ClasseIgfsCgAuth, pagamenti diretti (autorizzazione o movimentazione)
  • 8.A.2 ClasseIgfsCgConfirm, pagamenti diretti (conferma movimento autorizzato)
  • 8.A.2ClasseIgfsCgVoidAuth, pagamenti diretti (storno di un autorizzazione)
  • 8.A.2ClasseIgfsCgCredit, pagamenti diretti (credito di unamovimentazione)
  • 8.B.1 Metodo init(), pagamenti BuyNow (autorizzazione o movimentazione)
  • 8.B.2 Metodo Auth(), pagamenti diretti (autorizzazione o movimentazione)
  • 8.B.2 Metodo confirm(), pagamenti diretti (conferma movimento autorizzato)
  • 8.B.2 Metodo voidAuth(), pagamenti diretti (storno di un autorizzazione)
  • 8.B.2 Metodo credit(), pagamenti diretti (credito di unamovimentazione)
Durante la richiesta di autorizzazione il cliente verrà indirizzato sulla pagina di pagamento di Axepta, per i pagamenti descritti nei paragrafi: 8.A.1, 8.B.1, mentre per i pagamenti diretti, paragrafi 8.A.2 e 8.B.2 l'esercente deve predisporre sul proprio web store i campi necessari per i dati della carta e la scelta della promozione. L'immagine sotto riporta il layout della pagina, da copiare nelle integrazioni con pagamenti diretti.   Il circuito Findomestic oltre al risultato della transazioni prevede eventuali spese aggiuntive, riportate in risposta nel campo "additional_fee".

Integrazione con MasterPass, gestione indirizzi

Masterpass è il nuovo servizio di pagamento offerto da Mastercard, consente il pagamento su piattaforme e-commerce utilizzando un wallet. L'integrazione dal sito e-commerce può essere fatta tramite API e web services con soluzione on-line, quindi in aggiunta ai parametri della classe igfscgInit e igfscgVerify a discrezione dell'esercente possono essere gestiti i parametri riportati nella tabella sotto, per postare o recuperare gli indirizzi di fatturazione o spedizione, in particolare:
  • dalla igfsCgInit, in fase di richiesta autorizzativa, se l'esercente valorizza i parametri della classe level3Info, posta sul sito di Masterpass gli indirizzi di spedizione e fatturazione registrati sulla base dati dell'e-commerce.
  • dalla igfsCgVerify, in fase di verifica della transazione, inizializzata ed eseguita nello step precedente, richiamando i parametri della classe level3Info, è possibile recuperare l'indirizzo di spedizione e fatturazione che il titolare del wallet ha selezionato in fase di conferma del pagamento, direttamente sul sito di masterpass
TipoDescrizioneFormattazione
invoiceNumberNumero fatturaString[32]
senderPostalCodeCodice postale mittenteString[8]
senderCountryCodeCodice nazionale mittente nel formato ISO 3122 A3String[3]
destinationNameRif. spedizione: DestinatarioString[32]
destinationStreetRif.spedizione: Dati IndirizzoString[100]
destinationStreet2Rif. spedizione: Dati IndirizzoString[100]
destinationCityRif. spedizione: CittàString[40]
destinationStateRif. spedizione: Stato (se presente)String[ 32]
destinationPostalCodeRif. spedizione: Codice PostaleString[8]
destinationCountryCodeRif. spedizione: Codice nazionale nel formato ISO 3122 A3String[3]
billingNameRif. fatturazione: DestinatarioString[32]
billingStreetRif. fatturazione : Dati IndirizzoString[100]
billingStreet2Rif. fatturazione : Dati IndirizzoString[100]
billingCityRif. fatturazione: CittàString[ 40]
billingStateRif. fatturazione: stato ( se presente)String[32]
billingPostalCodeRif. fatturazione: codice postaleString[8]
billingCountryCodeRif. fatturazione: Codice nazionale nel formato ISO 3122 A3String[3]
freightAmountImporto totale senza spedizioneString[12]
taxAmountTasseString[12]
vatCodice fiscale / Partita I.V.A.String[64]
noteNoteString[255]
productLista articoli presenti nell’ordineLivel3InfoProduct
 

Integrazione con Masterpass, gestione del carrello

L'esercente ha la possibilità di valorizzare sulla pagina di Masterpass il carrello dei prodotti che l'utente ha deciso di acquistare. In fase di inizializzazione del pagamento, quindi richiamando la classe igfsCgInit, l’esercente deve valorizzare i parametri della classe level3info.product, quindi aggiungendo oggetti valorizzati con i parametri riportati sotto.
TipoDescrizioneTipo Descrizione Formattazione
productCodeCodice prodottoString[32]
productDescriptionDescrizione prodottoString[32]
itemsNumero articoliString[8]
amountImporto in virgola mobile ( es. 100=1,00 EUR)String[12]
imgURLIndirizzo dell’immagine del prodottoString[256]
 

Integrazione con Masterpass, PAN di test

Per l’utilizzo del wallet Masterpass nel nostro ambiente di test è necessario registrare un’utenza ed associare la stessa ad una delle seguenti carte di test messe a disposizione:
Pan CartaCircuitoScadenzaCVV
5506900140100305Mastercard--
5506900140100107Mastercard--
5506900140100503Mastercard--
4440000009900010Visa--
4440000042200014Visa--
4440000042200022Visa--
 

Integrazione con MyBank

Axepta, fornisce la possibilità di accettare pagamenti conMyBank, il nuovo servizio di pagamento elettronico tramite bonifico, effettuato direttamente dalla propria home banking. il servizio è disponibile solo per integrazioni e-commerce on-line e non prevede parametri aggiuntivi al normale flusso di pagamento e-commerce con carta di credito. NOTA BENE: In sede di implementazione con il circuito di MyBankil campo “shopID” deve essere alfanumerico di 35 caratteri. Nei parametri di ritorno avrete come tutti gli altri circuiti alcuni campi in output. Il campo Brand a differenza delle carte di credito non sarà valorizzato. Il circuito di pagamento sarà reperibile nel campo PayInstr:
  • PayInstr=MYBK
Sul Back Office che Axepta offre agli esercenti, viene visualizzato l'esito della transazione e la banca di riferimento. Per l'attivazione di MyBank sul vostro e-commerce, contattate il nostro servizio di assistenza o il commerciale di riferimento.

Regole del circuito MyBank

Il circuito di pagamento MyBank definisce delle regole per l’utilizzo e la visualizzazione del nome e dei loghi del circuito:
  • Il riferimento corretto al circuito è MyBank. Deve essere escluso ogni riferimento come “Mybank” o “My Bank”;
  • Il messaggio introduttivo al metodo di pagamento dovrebbe essere: “Pagamenti sicuri attraverso il servizio di home banking della propria banca. Per saperne di più www.mybankpayments.ue”
  • Il payoff di MyBank in italiano è “Pagamenti sicuri. Identità protetta’’, che può essere visualizzato unitamente al logo;
  • In fase di selezione del circuito di pagamento, deve essere presente il logo MyBank. I loghi accettati sono scaricabili dalla sezione “Download” del Back Office;
  • Intorno al logo deve essere presente uno spazio libero minimo definito come l’altezza della lettera “M” del marchio denominativo;
  • Il logo MyBank non deve essere ruotato;
  • Il logo MyBank deve essere largo almeno 1cm per la stampa e almeno 80 pixel per l’utilizzo online (immagine a);
  • La dimensione minima del logo MyB può essere più piccola: 0,5 cm per la stampa e 40 pixel per l’utilizzo online (immagine b);
  • Quando si riproduce il logo MyBank con il payoff la dimensione minima per la stampa è di 2,5 cm, online di 300px (immagine c).
  • Gli esercenti possono utilizzare i banner MyBank sui propri siti web per far sapere che offrono pagamenti attraverso MyBank;
   

Appendice A – Calcolo Signature

L' HMAC-SHA256 è un tipo di algoritmo con chiave costruito dalla funzione di hash SHA-256 e utilizzato come codice HMAC. A titolo di esempio, riportiamo il calcolo dell' algoritmo HMAC-SHA256 sul campo "signature" attraverso la tecnologia java. E attraverso la tecnologia .Net.
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

...

// ==================================================================
//  calcolo della signature attraverso l'algoritmo SHA256
//    
//    key     = chiave segreta
//     fields    = parametri del messaggio
// ==================================================================
public String getSHA256Signature(String key, Object... fields)    throws Exception {
    StringBuilder sb = new StringBuilder();
    for (Object field : fields) {
        if (field != null) {
            sb.append(field.toString());

        }
    }

    byte = data[] = sb.toString().getBytes();

    String alg = "HmacSHA256";
    SecretKeySpec sk1 = new SecretKeySpec(key.getBytes(), alg);
    mac.init(sk1);
    byte sig[] = mac.doFinal(data);
    return new String(Base64.encode(sig));
}
using System.Security.Cryptography;
...

    static String getSignature(String key, params Object[] fields)
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < fields.Length; i++)
        {
            Object field = fields[i];
            if (field != null)
            {
                sb.Append(field.ToString());
            }
        }
        byte[] keyByte = Encoding.UTF8.GetBytes(key);
        HMACSHA256 hmacsha256 = new HMACSHA256(keyByte);
        byte[] data = Encoding.UTF8.GetBytes(sb.ToString());
        byte[] mac = hmacsha256.ComputeHash(data);
        return System.Convert.ToBase64String(mac);
    }

Integrazione con PayPal

La gestione del pagamento eseguito con PayPal segue le logiche di Masterpass, quindi seguire il paragrafo "G" e "H" sia per la gestione degli indirizzi che dei prodotti del carrello.

Appendice B – Codici di ritorno

CodiceDescrizione
IGFS_000TRANSAZIONE OK
IGFS_00051INSTITUTION ID NON PRESENTE.
IGFS_001DESTINATARIO SCONOSCIUTO
IGFS_00155BATCH TRACK ID NON VALIDO.
IGFS_00156BATCH TRACK ID NON UNIVOCO
IGFS_00157STRUMENTO PAGAMENTO NON VALIDO.
IGFS_00158NUMERO CARTA NON NUMERICO
IGFS_00159NUMERO CARTA NON PRESENTE
IGFS_002CARTA SCADUTA
IGFS_00202TENTATIVO HACK RILEVATO
IGFS_00203ACCESSO NON VALIDO:ULITIZZARE METODO POST
IGFS_00253MAXIMUM CREDIT VOLUME EXCEEDED.
IGFS_00254MAXIMUM CARD DEBIT VOLUME EXCEEDED.
IGFS_00255MAXIMUM CARD CREDIT VOLUME EXCEEDED.
IGFS_00256MAXIMUM CARD TRANSACTION COUNT EXCEEDED.
IGFS_00257MAXIMUM TRANSACTION AMOUNT EXCEEDED.
IGFS_00260TRANSACTION DENIED: CREDITS EXCEED CAPTURES
IGFS_00261TRANSACTION DENIED: CAPTURES EXCEED AUTHORIZATIONS
IGFS_003CARTA ERRATA
IGFS_00300INSTITUTION ID NON PRESENTE.
IGFS_00301RISK PROFILE ID NON PRESENTE.
IGFS_00302CODICE VALUTA NON PRESENTE.
IGFS_004CARTA IN BLACK LIST - RITIRARE
IGFS_00451MERCHANT ID NON PRESENTE.
IGFS_00452TERMINAL ID NON PRESENTE.
IGFS_00453TERMINAL ID NON PRESENTE.
IGFS_00454TERMINAL ID NON VALIDO
IGFS_00456TERMINAL ID NON VALIDO
IGFS_005ERRORE DI FORMATO
IGFS_006ERRORE FILE SYSTEM
IGFS_007ERRORE DI COMUNICAZIONE
IGFS_00701IL BATCH NON PROCESSATO
IGFS_00702IL BATCH NON RIAVVIATO
IGFS_00704BATCH ID NON NUMERICO
IGFS_00705BATCH ID NON PRESENTE
IGFS_008AUTORIZZAZIONE NEGATA
IGFS_009RITIRARE CARTA
IGFS_00950DIRECTORY BATCH UPLOAD NON PRESENTE
IGFS_00951DIRECTORY BATCH DOWNLOAD NON PRESENTE
IGFS_00952NOME DIRECTORY ARCHIVIAZIONE BATCH NON PRESENTE
IGFS_010MERCHANT NON ABILITATO
IGFS_01000TRANSAZIONE NEGATA DAL RISCHIO
IGFS_011CONTATTARE ACQUIRER
IGFS_014MERCHANT NON CONVENZIONATO
IGFS_015ACQUIRER NON GESTITO
IGFS_016CARTA IN RANGE NEGATIVO O STRANIERA
IGFS_018CARTA INESISTENTE
IGFS_020CARTA INVALIDA
IGFS_021CODICE MERCHANT ERRATO
IGFS_029DATA SCADENZA ERRATA
IGFS_030FONDI INSUFFICIENTI
IGFS_032IMPORTO NON VALIDO
IGFS_033TRANSAZIONE ORIGINALE NON TROVATA
IGFS_083ERRORE CIFRATURA TRANSAZIONE
IGFS_085CODICE DIVISA ERRATO
IGFS_086MALFUNZIONAMENTO SISTEMA
IGFS_087ACQUIRER NON RAGGIUNGIBILE
IGFS_088MANCATA RISPOSTA DA ACQUIRER
IGFS_091MALFUNZIONAMENTO SISTEMA ACQUIRER
IGFS_092TRANSAZIONE SCONOSCIUTA
IGFS_093CONFERMA GIA' PRESENTE
IGFS_094CREDITO GIA' PRESENTE
IGFS_095STORNO PER NOTIFICA INESISTENTE
IGFS_096STORNO PER AUTORIZZAZIONE INESISTENTE
IGFS_097CONFERMA PER AUTORIZZAZIONE INESISTENTE
IGFS_098IMPORTO SUPERIORE AD IMPORTO AUTORIZZATO
IGFS_10000CARATTERI NON VALIDI
IGFS_101MAC ERRATO
IGFS_102SOSPETTA FRODE
IGFS_104CARTA SOGGETTA A RESTRIZIONI
IGFS_107CONTATTARE ISSUER
IGFS_108CONTATTARE ISSUER:CASO SPECIALE
IGFS_112INSERIRE PIN
IGFS_115FUNZIONE NON SUPPORTATA SU CARTA
IGFS_117PIN ERRATO
IGFS_118CONTO NON TROVATO O NON ABILITATO
IGFS_119OPERAZIONE NON PERMESSA AL TITOLARE
IGFS_121SUPERATO LIMITE IMPORTO
IGFS_122ERRORE SICUREZZA
IGFS_123SUPERATO LIMITE FREQUENZA
IGFS_125ACQUIRER NON GESTITO
IGFS_129SOSPETTA FRODE SU CARTA
IGFS_160CARTA PERSA
IGFS_164DATA ANTEC. A BLOCCO CARTA
IGFS_180DATI ERRATI
IGFS_181DATI SENSIBILI ERRATI
IGFS_189BIN IN RANGE NEGATIVO
IGFS_19213DS:UNABLE TO AUTENTICATE
IGFS_19223DS:AUTENTICATION ERROR
IGFS_19233DS:UNABLE TO VERIFY (VERES=U)
IGFS_200RITIRARE CARTA
IGFS_20000DATI MANCANTI
IGFS_20001CODICE AZIONE NON VALIDO
IGFS_20002SESSIONE SCADUTA
IGFS_20003COOKIES NON ABILITATI
IGFS_20006BRAND NON VALIDO
IGFS_20007STATO ORDINE NON VALIDO
IGFS_20010URL INVIO RISPOSTA NON VALIDO
IGFS_20011URL INVIO ERRORE NON VALIDO
IGFS_20012TRACK ID NON VALIDO
IGFS_20013CODICE LINGUA NON VALIDO
IGFS_20014CAMPO UDF NON VALIDO
IGFS_20015NOME CARTA NON VALIDO
IGFS_20016INDIRIZZO NON VALIDO
IGFS_20017CAP NON VALIDO
IGFS_20018CVV2 NON VALIDO
IGFS_20019TRANSACTION ID. NON VALIDO
IGFS_20020CAMPO USER IDENTIFIER NON VALIDO
IGFS_20021CAMPO API VERSION NON VALIDO
IGFS_20022CAMPO SIGNATURE NON VALIDO
IGFS_20023CAMPO PAYMENT ID NON VALIDO
IGFS_20024CODICE AUTORIZZAZIONE MANCANTE
IGFS_20025CAMPO REFERENCE DATA NON VALIDO
IGFS_20026SHOP ID DUPLICATO
IGFS_20027FORMATO RICHIESTA NON VALIDO
IGFS_20028DATI BATCH MANCANTI
IGFS_20029DATI BATCH NON VALIDI
IGFS_20030DIRECTORY DATI BATCH NON VALIDA
IGFS_20031DATI BATCH DUPLICATI
IGFS_20032NOME BATCH FILE NON VALIDO
IGFS_20033DATI BATCH NON TROVATI
IGFS_20034BATCH TRACK ID NON VALIDO
IGFS_20035ORDERID NON VALIDO
IGFS_20036PAN NON VALIDO
IGFS_20037CVV2 NON VALIDO
IGFS_20038EXPIRE DATE NON VALIDA
IGFS_20040MPI VERIFIED NON VALIDA
IGFS_20041MPI AUTHORIZED NON VALIDA
IGFS_20042MPI CAVV NON VALIDA
IGFS_20043MPI XID DATE NON VALIDA
IGFS_20044CAMPO PAYMENT DESCRIPTION NON VALIDO
IGFS_20045PAYMENT INSTRUMENT TOKEN ID ERRATO
IGFS_20046FREE TEXT ERRATO
IGFS_20048ERRORE PROCESSAMENTO PAYMENT INSTRUMENT TOKEN
IGFS_20049TOPUPID ERRATO
IGFS_20050CODICE POSTALE MITTENTE NON VALIDO
IGFS_20051CODICE POSTALE DESTINATARIO NON VALIDO
IGFS_20052CODICE NAZIONE DESTINATARIO NON VALIDO
IGFS_20053IMPORTO SPEDIZIONE NON VALIDO
IGFS_20056IMPORTO TASSE NON VALIDO
IGFS_20057ELENCO ARTICOLI MANCANTE
IGFS_20058CODICE ARTICOLO NON VALIDO
IGFS_20059DESCRIZIONE ARTICOLO NON VALIDO
IGFS_20060NUMERO NON VALIDO
IGFS_20062IMPORTO ARTICOLO NON VALIDO
IGFS_20065NUMERO MASSIMO PRODOTTI SUPERATO
IGFS_20066CODICE NAZIONE MITTENTE NON VALIDO
IGFS_20067NOME DESTINATARIO NON VALIDO
IGFS_20068INDIRIZZO DESTINATARIO NON VALIDO
IGFS_20069CITTA DESTINATARIO NON VALIDA
IGFS_20070STATO DESTINATARIO NON VALIDO
IGFS_20071CODICE VAT NON VALIDO
IGFS_20072NOME FATTURA NON VALIDO
IGFS_20073INDIRIZZO FATTURA NON VALIDO
IGFS_20074CITTA FATTURA NON VALIDA
IGFS_20075STATO FATTURA NON VALIDO
IGFS_20076CODICE POSTALE FATTURA NON VALIDO
IGFS_20077CODICE NAZIONE FATTURA NON VALIDO
IGFS_20078NUMERO FATTURA NON VALIDO
IGFS_20079NOTE AL VENDITORE NON VALIDE
IGFS_20080PAYPASSDATA ERRATO
IGFS_20081PROMOCODE ERRATO
IGFS_20082ACCNTNAME ERRATO
IGFS_20083AUTHCODE ERRATO
IGFS_20084BUYERNAME ERRATO
IGFS_20085BUYERACCNT ERRATO
IGFS_20086IPBUYER ERRATO
IGFS_20090TRANSAZIONE CANCELLATA DALL'UTENTE
IGFS_20100ERRORE NOTIFICA MERCHANT
IGFS_208CARTA PERSA
IGFS_209CARTA RUBATA
IGFS_400STORNO OK
IGFS_800TERMINALE NON ABILITATO
IGFS_801BANCA SELEZIONATA ERRATA
IGFS_802TENTATIVI PIN ESAURITI
IGFS_803CODICE TERMINALE ERRATO
IGFS_804CHIAVE DISALLINEATA
IGFS_805ERRORE CIFRATURA
IGFS_807TERMINALE CHIUSO
IGFS_808TERMINALE NON CHIUSO
IGFS_809ERRORE SEQUENZA
IGFS_810TERMINALE NON RICONOSCIUTO
IGFS_811TERMINALE BLOCCATO
IGFS_812TERMINALE CHIUSO FORZ.
IGFS_813OPERAZIONE NON PERMESSA
IGFS_814TRANSAZIONE IN CORSO
IGFS_815CARTA BLOCCATA
IGFS_888IN ATTESA DI COMPLETAMENTO
IGFS_90000DATABASE ERROR
IGFS_90005TIMESTAMP ERRATO.
IGFS_902TRANSAZIONE NON VALIDA
IGFS_903REINVIARE TRANSAZIONE
IGFS_907EMITTENTE NON ADERENTE
IGFS_908DESTINAZIONE NON TROVATA
IGFS_909ERRORE DI SISTEMA
IGFS_910SISTEMA ISSUER NON ATTIVO
IGFS_911TIME OUT
IGFS_912ISSUER NON RAGGIUNGIBILE
IGFS_913TRANSAZIONE DUPLICATA
IGFS_934NOTIFICA RIFIUTATA
IGFS_990STRUMENTO PAGAMENTO NON ATTIVO