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.
PROPERTY DESCRIZIONE TIPO o VALORE [Dimensione] OBBLIGATORIO
serverURL Indirizzo del server di destinazione della richiesta. URL SI
timeout Timeout massimo espresso in millisecondi di completamento di una richiesta. Integer SI
kSig Chiave per firmare il messaggio. String[64] SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
shopUserRef Identificativo cliente. String[256] NO
shopUserName Cognome e Nome del cliente (separati dal carattere “,” es. rossi,mario ) String[256] NO
trType Tipologia di una richiesta.
  • PURCHASE
  • AUTH
  • VERIFY
SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI (NO con trType = “VERIFY”)
currencyCode Valuta associata ad una richiesta. EUR SI (NO con trType = “VERIFY”)
langID Lingua relativa alla pagina di inserimento dei dati sensibili associati ad una richiesta.
  • IT
  • EN
SI
notifyURL URL relativo alla pagina di notifica esito di una richiesta. URL[512] SI
errorURL URL 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
addInfo1 Campo a disposizione dell’esercente. String[256] NO
addInfo2 Campo a disposizione dell’esercente. String[256] NO
addInfo3 Campo a disposizione dell’esercente. String[256] NO
addInfo4 Campo a disposizione dell’esercente. String[256] NO
addInfo5 Campo a disposizione dell’esercente. String[256] NO
payInstrToken Token dello strumento di pagamento. NOTA: I caratteri speciali accettati sono @.-+_: Spazio String[32] NO
description Causale di pagamento. String[100] NO
freeText Testo libero associato alla funzionalità Insegna Dinamica (vedere par. successivo). String[268] NO
callbackURL Pagina sulla quale ricevere la notifica server-to-server (vedere par. successivo). String[512] NO
 
METODI
Metodo Descrizione Tipo ritornato [Dimensione]
execute() Esegue la transazione. Boolean
resetFields() Azzeramento parametri di richiesta. Integer
 
SOMMARIO PROPERTIES OUTPUT
Property Descrizione Tipo [Dimensione]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
paymentID Codice paymentID associato ad una richiesta. String[32]
redirectURL URL 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
Property Descrizione Tipo o Valore [Dimensione] Obbligatorio
serverURL Indirizzo del server di destinazione della richiesta. URL SI
timeout Timeout massimo espresso in millisecondi di completamento di una richiesta. Integer SI
kSig Chiave per firmare il messaggio. String[64] SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
paymentID Codice paymentID associato ad una richiesta. String[32] SI
METODI
Metodo Descrizione Tipo ritornato [Dimensione]
execute() Esegue la transazione. Boolean
resetFields() Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
Property Descrizione Tipo [Dimensione]
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]
enrStatus Stato di iscrizione carta al servizio 3D Secure. String[1]
authStatus Esito autenticazione carta al servizio 3D Secure. String[1]
brand Brand carta di credito (es. VISA, MASTERCARD, …). String[8]
maskedPan Numero di carta mascherato. String[19]
payInstrToken Token dello strumento di pagamento. String[32]
expireMonth Mese di scadenza. Integer[2]
expireYear Anno di scadenza. Integer[4]
accountName Cognome e Nome del titolare (separati dal carattere “,” es. rossi,mario )
payInstr Strumento 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
Property Descrizione Tipo o Valore [Dimensione] Obbligatorio
serverURL Indirizzo del server di destinazione della richiesta. URL SI
timeout Timeout massimo espresso in millisecondi di completamento di una richiesta. Integer SI
kSig Chiave per firmare il messaggio. String[64] SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
shopUserRef Identificativo cliente. String[256] NO
shopUserName Cognome e Nome del cliente (separati dal carattere “,” es. rossi,mario ) String[256] NO
shopUserIP Indirizzo IP del cliente. String[256] NO
trType Tipologia di una richiesta.
  • PURCHASE
  • AUTH
  • VERIFY
SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI (NO con trType = “VERIFY”)
currencyCode Valuta associata ad una richiesta. EUR SI (NO con trType = “VERIFY”)
pan Numero di carta. String[19] SI (se non impostata la proprietà payInstrToken)
payInstrToken Token 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 @ . - + _ : Spazio String[32] NO
cvv2 Numero di sicurezza sul retro della carta. String[4] SI
expireMonth Mese di scadenza. Inger[2] SI
expireYear Anno di scadenza. Integer[4] SI
addInfo1 Campo a disposizione dell’esercente. String[256] NO
addInfo2 Campo a disposizione dell’esercente. String[256] NO
addInfo3 Campo a disposizione dell’esercente. String[256] NO
addInfo4 Campo a disposizione dell’esercente. String[256] NO
addInfo5 Campo a disposizione dell’esercente. String[256] NO
enrStatus Dato ricevuto in risposta dall’MPI String[1] NO
authStatus Dato ricevuto in risposta dall’MPI. String[1] NO
cavv Dato ricevuto in risposta dall’MPI. String[28] NO
xid Dato ricevuto in risposta dall’MPI. String[28] NO
description Causale di pagamento. String[100] NO
freeText Testo libero associato alla funzionalità Insegna Dinamica (vedere par. successivo). String[268] NO
METODI
Metodo Descrizione Tipo ritornato [Dimensione]
execute() Esegue la transazione. Boolean
resetFields() Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
Property Descrizione Tipo [Dimensione]
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[8]
@ ClasseIgfsCgConfirm Viene utilizzata per movimentare un’autorizzazione fatta con carta di credito.
SOMMARIO PROPERTIES INPUT
Property Descrizione Tipo o Valore [Dimensione] Obbligatorio
serverURL Indirizzo del server di destinazione della richiesta. URL SI
timeout Timeout massimo espresso in millisecondi di completamento di una richiesta. Integer SI
kSig Chiave per firmare il messaggio. String[64] SI
tid Codice del terminale attraverso il quale è stata eseguita la transazione da movimentare. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI
refTranID Codice ordine relativo alla transazione da movimentare Long[16] SI
METODI
Metodo Descrizione Tipo ritornato [Dimensione]
execute() Esegue la transazione. Boolean
resetFields() Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
Property Descrizione Tipo [Dimensione]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
tranID Codice 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]
@ ClasseIgfsCgVoidAuth Viene utilizzata per stornare un’autorizzazione effettuata con carta di credito.
SOMMARIO PROPERTIES INPUT
Property Descrizione Tipo o Valore [Dimensione] Obbligatorio
serverURL Indirizzo del server di destinazione della richiesta. URL SI
timeout Timeout massimo espresso in millisecondi di completamento di una richiesta. Integer SI
kSig Chiave per firmare il messaggio. String[64] SI
tid Codice del terminale attraverso il quale è stata eseguita la transazione da stornare. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI
refTranID Codice ordine relativo alla transazione da stornare Long[16] SI
METODI
Metodo Descrizione Tipo ritornato [Dimensione]
execute() Esegue la transazione. Boolean
resetFields() Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
Property Descrizione Tipo [Dimensione]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
tranID Codice 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]
@ ClasseIgfsCgCredit Viene utilizzata per riaccreditare un addebito effettuatosu carta di credito.
SOMMARIO PROPERTIES INPUT
Property Descrizione Tipo o Valore [Dimensione] Obbligatorio
serverURL Indirizzo del server di destinazione della richiesta. URL SI
timeout Timeout massimo espresso in millisecondi di completamento di una richiesta. Integer SI
kSig Chiave per firmare il messaggio. String[64] SI
tid Codice del terminale attraverso il quale è stata eseguita la transazione da movimentare. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI
refTranID Codice ordine relativo alla transazione da movimentare Long[16] SI
METODI
Metodo Descrizione Tipo ritornato [Dimensione]
execute() Esegue la transazione. Boolean
resetFields() Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
Property Descrizione Tipo [Dimensione]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
tranID Codice 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]
 

Funzionalità MPI

@ ClasseIgfsCGMPIEnroll Viene utilizzata per verificare se la carta è inscritta al servizio 3D Secure.
SOMMARIO PROPERTIES INPUT
Property Descrizione Tipo o Valore [Dimensione] Obbligatorio
serverURL Indirizzo del server di destinazione della richiesta. URL SI
timeout Timeout massimo espresso in millisecondi di completamento di una richiesta. Integer SI
kSig Chiave per firmare il messaggio. String[64] SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
shopUserRef Identificativo cliente. String[256] NO
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI
currencyCode Valuta associata ad una richiesta. EUR SI
pan Numero di carta. String[19] SI
expireMonth Mese di scadenza. Inger[2] SI
expireYear Anno di scadenza. Integer[4] SI
termURL URL dove l’ACS ridirige al termine del processo di autenticazione. URL[512] SI
description Valore riportato nella form dell’ACS String[100] NO
addInfo1 Campo a disposizione dell’esercente. String[256] NO
addInfo2 Campo a disposizione dell’esercente. String[256] NO
addInfo3 Campo a disposizione dell’esercente. String[256] NO
addInfo4 Campo a disposizione dell’esercente. String[256] NO
addInfo5 Campo a disposizione dell’esercente. String[256] NO
METODI
Metodo Descrizione Tipo ritornato [Dimensione]
execute() Esegue la transazione. Boolean
resetFields() Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
Property Descrizione Tipo [Dimensione]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
xid Identificativo della transazione. String[28]
enrStatus Y – Autenticazione disponibile; N – Titolare non partecipante al servizio; U – Autenticazione non possibile; E – Errore. String[1]
paReq Process auth request. String
md Merchant Data. String
acsURL URL dell’ACS dove il browser deve essere rediretto. E’ necessario postare i seguenti parametri all’URL ricevuta:
  • PaReq
  • MD
  • TermURL
URL[512]
acsPage Codice 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
Property Descrizione Tipo o Valore [Dimensione] Obbligatorio
serverURL Indirizzo del server di destinazione della richiesta. URL SI
timeout Timeout massimo espresso in millisecondi di completamento di una richiesta. Integer SI
kSig Chiave per firmare il messaggio. String[64] SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
paRes Process auth response (da msg enrollment) String SI
md Merchant Data String SI
METODI
Metodo Descrizione Tipo ritornato [Dimensione]
execute() Esegue la transazione. Boolean
resetFields() Azzeramento parametri di richiesta.
SOMMARIO PROPERTIES OUTPUT
Property Descrizione Tipo [Dimensione]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
xid Identificativo della transazione. String[28]
enrStatus Y – Autenticazione disponibile; N – Titolare non partecipante al servizio; U – Autenticazione non possibile; E – Errore. String[1]
cavv Cardholder Auth. Verification Value String[28]
eci Electronic Commerce Indicator String[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
Property Descrizione Tipo o valore [Dimensione] Obbligatorio
signature Firma 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.
String SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
shopUserRef Identificativo cliente. String[256] NO
shopUserName Cognome e Nome del cliente (separati dal carattere “,” es. rossi,mario ) String[256] NO
trType Tipologia di una richiesta.
  • PURCHASE
  • AUTH
  • VERIFY
SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI (NO con trType = “VERIFY”)
currencyCode Valuta associata ad una richiesta. EUR SI (NO con trType = “VERIFY”)
langID Lingua relativa alla pagina di inserimento dei dati sensibili associati ad una richiesta.
  • IT
  • EN
SI
notifyURL URL relativo alla pagina di notifica esito di una richiesta. URL[512] SI
errorURL URL 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
addInfo1 Campo a disposizione dell’esercente. String[256] NO
addInfo2 Campo a disposizione dell’esercente. String[256] NO
addInfo3 Campo a disposizione dell’esercente. String[256] NO
addInfo4 Campo a disposizione dell’esercente. String[256] NO
addInfo5 Campo a disposizione dell’esercente. String[256] NO
description Causale di pagamento. String[100] NO
payInstrToken Token dello strumento di pagamento. NOTA: I caratteri speciali accettati sono @ . - + _ : Spazio String[32] NO
accountName Cognome e Nome del titolare (separati dal carattere “,” es. rossi,mario ) per il prefill dei rispettivi campi. String[256] NO
freeText Testo libero associato alla funzionalità Insegna Dinamica (vedere par. successivo). String[268] NO
callbackURL Pagina sulla quale ricevere la notifica server-to-server (vedere par. successivo). String[512] NO
 
PaymentInitResponse
Property Descrizione Tipo o valore [Dimensione]
signature Firma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • rc
  • errorDesc
  • paymentID
  • redirectURL
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]
paymentID Codice paymentID associato ad una richiesta. String [32]
redirectURL URL 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
Property Descrizione Tipo o valore [Dimensione] Obbligatorio
signature Firma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • paymentID
Per il calcolo della firma si veda l’APPENDICE A.
String SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
paymentID Codice paymentID associato alla richiesta. String[32] SI
 
PaymentVerifyResponse
Property Descrizione Tipo [Dimensione]
signature Firma 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
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]
enrStatus Stato di iscrizione carta al servizio 3D Secure. String[1]
authStatus Esito autenticazione carta al servizio 3D Secure. String[1]
brand Brand carta di credito (es. VISA, MASTERCARD, …). String[8]
maskedPan Numero di carta mascherato. String[19]
payInstrToken Token dello strumento di pagamento. String[32]
expireMonth Mese di scadenza. Integer[2]
expireYear Anno di scadenza. Integer[4]
accountName Cognome e Nome del titolare (separati dal carattere “,” es. rossi,mario ) String[256]
payInstr Strumento 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
Property Descrizione Tipo o valore [Dimensione] Obbligatorio
signature Firma 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.
String SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
shopUserRef Identificativo cliente. String[256] NO
shopUserName Cognome e Nome del cliente (separati dal carattere “,” es. rossi,mario ) String[256] NO
shopUserIP Indirizzo IP del cliente. String[255] NO
trType Tipologia di una richiesta.
  • PURCHASE
  • AUTH
  • VERIFY
SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI (NO con trType = “VERIFY”)
currencyCode Valuta associata ad una richiesta. EUR SI (NO con trType = “VERIFY”)
pan Numero di carta. String[19] SI (se non impostata la proprietà payInstrToken)
payInstrToken Token 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
cvv2 Numero di sicurezza sul retro della carta. String[4] SI
expireMonth Mese di scadenza. Inger[2] SI
expireYear Anno di scadenza. Integer[4] SI
accountName Cognome e Nome del titolare (separati dal carattere “,” es. rossi,mario ) String[256] NO
addInfo1 Campo a disposizione dell’esercente. String[256] NO
addInfo2 Campo a disposizione dell’esercente. String[256] NO
addInfo3 Campo a disposizione dell’esercente. String[256] NO
addInfo4 Campo a disposizione dell’esercente. String[256] NO
addInfo5 Campo a disposizione dell’esercente. String[256] NO
enrStatus Dato ricevuto in risposta dall’MPI String[1] NO
authStatus Dato ricevuto in risposta dall’MPI String[1] NO
cavv Dato ricevuto in risposta dall’MPI String[28] NO
xid Dato ricevuto in risposta dall’MPI String[28] NO
description Causale di pagamento. String[100] NO
freeText Testo libero associato alla funzionalità Insegna Dinamica (vedere par. successivo). String[268] NO
callbackURL Pagina sulla quale ricevere la notifica server-to-server (vedere par. successivo). String[512] NO
PaymentAuthResponse
Property Descrizione Tipo [Dimensione]
signature Firma 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
Property Descrizione Tipo o valore [Dimensione] Obbligatorio
signature Firma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • amount
  • refTranID
Per il calcolo della firma si veda l’APPENDICE A.
String SI
tid Codice del terminale attraverso il quale è stata eseguita la transazione da movimentare. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI
refTranID Codice ordine relativo alla transazione da movimentare Long[16] SI
PaymentConfirmResponse
Property Descrizione Tipo [Dimensione]
signature Firma 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
error Restituisce true in presenza di un errore/anomalia String[80]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
tranID Codice 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
Property Descrizione Tipo o valore [Dimensione] Obbligatorio
signature Firma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • amount
  • refTranID
Per il calcolo della firma si veda l’APPENDICE A.
String SI
tid Codice del terminale attraverso il quale è stata eseguita la transazione da movimentare. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI
refTranID Codice ordine relativo alla transazione da movimentare Long[16] SI
PaymentVoidAuthResponse
Property Descrizione Tipo [Dimensione]
signature Firma 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
error Restituisce true in presenza di un errore/anomalia String[80]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
tranID Codice 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]
@ Metodo credit() Utilizzato per riaccreditare un’autorizzazione effettuata con carta di credito.
PaymentCreditRequest
Property Descrizione Tipo o valore [Dimensione] Obbligatorio
signature Firma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • amount
  • refTranID
Per il calcolo della firma si veda l’APPENDICE A.
String SI
tid Codice del terminale attraverso il quale è stata eseguita la transazione da riaccreditare. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI
refTranID Codice ordine relativo alla transazione da movimentare Long[16] SI
PaymentCreditResponse
Property Descrizione Tipo [Dimensione]
signature Firma 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
error Restituisce true in presenza di un errore/anomalia String[80]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
tranID Codice 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]

Funzioni MPI

@ Metodo enroll() Utilizzata per verificare se la carta è inscritta a 3D Secure.
MPIEnrollRequest
Property Descrizione Tipo o valore [Dimensione] Obbligatorio
signature Firma 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.
String SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
shopUserRef Identificativo cliente. String[256] NO
amount Importo associato ad una richiesta in virgola virtuale. (es. 100 = 1,00 EUR) Long[12] SI
currencyCode Valuta associata ad una richiesta. EUR SI
pan Numero di carta. String[19] SI
expireMonth Mese di scadenza. Inger[2] SI
expireYear Anno di scadenza. Integer[4] SI
termURL URL dove l’ACS ridirige al termine del processo di autenticazione. URL[512] SI
description Valore riportato nella form dell’ ACS String[100] NO
addInfo1 Campo a disposizione dell’esercente. String[256] NO
addInfo2 Campo a disposizione dell’esercente. String[256] NO
addInfo3 Campo a disposizione dell’esercente. String[256] NO
addInfo4 Campo a disposizione dell’esercente. String[256] NO
addInfo5 Campo a disposizione dell’esercente. String[256] NO
MPIEnrollResponse
Property Descrizione Tipo [Dimensione]
signature Firma 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
error Restituisce true in presenza di un errore/anomalia String[80]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
xid Identificativo della transazione. String[28]
enrStatus Y – Autenticazione disponibile; N – Titolare non partecipante al servizio; U – Autenticazione non possibile; E – Errore. String[1]
paReq Process auth request. String
md Merchant Data. String
acsURL URL dell’ACS dove il browser deve essere rediretto. E’ necessario postare i seguenti parametri all’URL ricevuta:
  • PaReq
  • MD
  • TermURL
URL[512]
acsPage Codice 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
Property Descrizione Tipo o valore [Dimensione] Obbligatorio
signature Firma del messaggio composta dalla concatenazione dei campi:
  • tid
  • shopID
  • paRes
  • md
Per il calcolo della firma si veda l’APPENDICE A.
String SI
tid Codice terminale dell’esercente. String[16] SI
shopID Chiave esterna identificante il pagamento. String[256] SI
paRes Process auth response (da msg enrollment) String SI
md Merchant Data String SI
 
MPIEnrollResponse
Property Descrizione Tipo [Dimensione]
signature Firma 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
error Restituisce true in presenza di un errore/anomalia String[80]
rc Esito della richiesta. String[16]
errorDesc Descrizione di un errore/anomalia. String[80]
xid Identificativo della transazione. String[28]
authStatus Y – Autenticazione disponibile; N – Titolare non partecipante al servizio; U – Autenticazione non possibile; E – Errore. String[1]
cavv Cardholder Auth. Verification Value String[28]
eci Electronic Commerce Indicator String[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
Tipo Descrizione Formattazione
invoiceNumber Numero fattura String[32]
senderPostalCode Codice postale mittente String[8]
senderCountryCode Codice nazionale mittente nel formato ISO 3122 A3 String[3]
destinationName Rif. spedizione: Destinatario String[32]
destinationStreet Rif.spedizione: Dati Indirizzo String[100]
destinationStreet2 Rif. spedizione: Dati Indirizzo String[100]
destinationCity Rif. spedizione: Città String[40]
destinationState Rif. spedizione: Stato (se presente) String[ 32]
destinationPostalCode Rif. spedizione: Codice Postale String[8]
destinationCountryCode Rif. spedizione: Codice nazionale nel formato ISO 3122 A3 String[3]
billingName Rif. fatturazione: Destinatario String[32]
billingStreet Rif. fatturazione : Dati Indirizzo String[100]
billingStreet2 Rif. fatturazione : Dati Indirizzo String[100]
billingCity Rif. fatturazione: Città String[ 40]
billingState Rif. fatturazione: stato ( se presente) String[32]
billingPostalCode Rif. fatturazione: codice postale String[8]
billingCountryCode Rif. fatturazione: Codice nazionale nel formato ISO 3122 A3 String[3]
freightAmount Importo totale senza spedizione String[12]
taxAmount Tasse String[12]
vat Codice fiscale / Partita I.V.A. String[64]
note Note String[255]
product Lista articoli presenti nell’ordine Livel3InfoProduct
 

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.
Tipo Descrizione Tipo Descrizione Formattazione
productCode Codice prodotto String[32]
productDescription Descrizione prodotto String[32]
items Numero articoli String[8]
amount Importo in virgola mobile ( es. 100=1,00 EUR) String[12]
imgURL Indirizzo dell’immagine del prodotto String[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 Carta Circuito Scadenza CVV
5506900140100305 Mastercard - -
5506900140100107 Mastercard - -
5506900140100503 Mastercard - -
4440000009900010 Visa - -
4440000042200014 Visa - -
4440000042200022 Visa - -
 

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

Codice Descrizione
IGFS_000 TRANSAZIONE OK
IGFS_00051 INSTITUTION ID NON PRESENTE.
IGFS_001 DESTINATARIO SCONOSCIUTO
IGFS_00155 BATCH TRACK ID NON VALIDO.
IGFS_00156 BATCH TRACK ID NON UNIVOCO
IGFS_00157 STRUMENTO PAGAMENTO NON VALIDO.
IGFS_00158 NUMERO CARTA NON NUMERICO
IGFS_00159 NUMERO CARTA NON PRESENTE
IGFS_002 CARTA SCADUTA
IGFS_00202 TENTATIVO HACK RILEVATO
IGFS_00203 ACCESSO NON VALIDO:ULITIZZARE METODO POST
IGFS_00253 MAXIMUM CREDIT VOLUME EXCEEDED.
IGFS_00254 MAXIMUM CARD DEBIT VOLUME EXCEEDED.
IGFS_00255 MAXIMUM CARD CREDIT VOLUME EXCEEDED.
IGFS_00256 MAXIMUM CARD TRANSACTION COUNT EXCEEDED.
IGFS_00257 MAXIMUM TRANSACTION AMOUNT EXCEEDED.
IGFS_00260 TRANSACTION DENIED: CREDITS EXCEED CAPTURES
IGFS_00261 TRANSACTION DENIED: CAPTURES EXCEED AUTHORIZATIONS
IGFS_003 CARTA ERRATA
IGFS_00300 INSTITUTION ID NON PRESENTE.
IGFS_00301 RISK PROFILE ID NON PRESENTE.
IGFS_00302 CODICE VALUTA NON PRESENTE.
IGFS_004 CARTA IN BLACK LIST - RITIRARE
IGFS_00451 MERCHANT ID NON PRESENTE.
IGFS_00452 TERMINAL ID NON PRESENTE.
IGFS_00453 TERMINAL ID NON PRESENTE.
IGFS_00454 TERMINAL ID NON VALIDO
IGFS_00456 TERMINAL ID NON VALIDO
IGFS_005 ERRORE DI FORMATO
IGFS_006 ERRORE FILE SYSTEM
IGFS_007 ERRORE DI COMUNICAZIONE
IGFS_00701 IL BATCH NON PROCESSATO
IGFS_00702 IL BATCH NON RIAVVIATO
IGFS_00704 BATCH ID NON NUMERICO
IGFS_00705 BATCH ID NON PRESENTE
IGFS_008 AUTORIZZAZIONE NEGATA
IGFS_009 RITIRARE CARTA
IGFS_00950 DIRECTORY BATCH UPLOAD NON PRESENTE
IGFS_00951 DIRECTORY BATCH DOWNLOAD NON PRESENTE
IGFS_00952 NOME DIRECTORY ARCHIVIAZIONE BATCH NON PRESENTE
IGFS_010 MERCHANT NON ABILITATO
IGFS_01000 TRANSAZIONE NEGATA DAL RISCHIO
IGFS_011 CONTATTARE ACQUIRER
IGFS_014 MERCHANT NON CONVENZIONATO
IGFS_015 ACQUIRER NON GESTITO
IGFS_016 CARTA IN RANGE NEGATIVO O STRANIERA
IGFS_018 CARTA INESISTENTE
IGFS_020 CARTA INVALIDA
IGFS_021 CODICE MERCHANT ERRATO
IGFS_029 DATA SCADENZA ERRATA
IGFS_030 FONDI INSUFFICIENTI
IGFS_032 IMPORTO NON VALIDO
IGFS_033 TRANSAZIONE ORIGINALE NON TROVATA
IGFS_083 ERRORE CIFRATURA TRANSAZIONE
IGFS_085 CODICE DIVISA ERRATO
IGFS_086 MALFUNZIONAMENTO SISTEMA
IGFS_087 ACQUIRER NON RAGGIUNGIBILE
IGFS_088 MANCATA RISPOSTA DA ACQUIRER
IGFS_091 MALFUNZIONAMENTO SISTEMA ACQUIRER
IGFS_092 TRANSAZIONE SCONOSCIUTA
IGFS_093 CONFERMA GIA' PRESENTE
IGFS_094 CREDITO GIA' PRESENTE
IGFS_095 STORNO PER NOTIFICA INESISTENTE
IGFS_096 STORNO PER AUTORIZZAZIONE INESISTENTE
IGFS_097 CONFERMA PER AUTORIZZAZIONE INESISTENTE
IGFS_098 IMPORTO SUPERIORE AD IMPORTO AUTORIZZATO
IGFS_10000 CARATTERI NON VALIDI
IGFS_101 MAC ERRATO
IGFS_102 SOSPETTA FRODE
IGFS_104 CARTA SOGGETTA A RESTRIZIONI
IGFS_107 CONTATTARE ISSUER
IGFS_108 CONTATTARE ISSUER:CASO SPECIALE
IGFS_112 INSERIRE PIN
IGFS_115 FUNZIONE NON SUPPORTATA SU CARTA
IGFS_117 PIN ERRATO
IGFS_118 CONTO NON TROVATO O NON ABILITATO
IGFS_119 OPERAZIONE NON PERMESSA AL TITOLARE
IGFS_121 SUPERATO LIMITE IMPORTO
IGFS_122 ERRORE SICUREZZA
IGFS_123 SUPERATO LIMITE FREQUENZA
IGFS_125 ACQUIRER NON GESTITO
IGFS_129 SOSPETTA FRODE SU CARTA
IGFS_160 CARTA PERSA
IGFS_164 DATA ANTEC. A BLOCCO CARTA
IGFS_180 DATI ERRATI
IGFS_181 DATI SENSIBILI ERRATI
IGFS_189 BIN IN RANGE NEGATIVO
IGFS_1921 3DS:UNABLE TO AUTENTICATE
IGFS_1922 3DS:AUTENTICATION ERROR
IGFS_1923 3DS:UNABLE TO VERIFY (VERES=U)
IGFS_200 RITIRARE CARTA
IGFS_20000 DATI MANCANTI
IGFS_20001 CODICE AZIONE NON VALIDO
IGFS_20002 SESSIONE SCADUTA
IGFS_20003 COOKIES NON ABILITATI
IGFS_20006 BRAND NON VALIDO
IGFS_20007 STATO ORDINE NON VALIDO
IGFS_20010 URL INVIO RISPOSTA NON VALIDO
IGFS_20011 URL INVIO ERRORE NON VALIDO
IGFS_20012 TRACK ID NON VALIDO
IGFS_20013 CODICE LINGUA NON VALIDO
IGFS_20014 CAMPO UDF NON VALIDO
IGFS_20015 NOME CARTA NON VALIDO
IGFS_20016 INDIRIZZO NON VALIDO
IGFS_20017 CAP NON VALIDO
IGFS_20018 CVV2 NON VALIDO
IGFS_20019 TRANSACTION ID. NON VALIDO
IGFS_20020 CAMPO USER IDENTIFIER NON VALIDO
IGFS_20021 CAMPO API VERSION NON VALIDO
IGFS_20022 CAMPO SIGNATURE NON VALIDO
IGFS_20023 CAMPO PAYMENT ID NON VALIDO
IGFS_20024 CODICE AUTORIZZAZIONE MANCANTE
IGFS_20025 CAMPO REFERENCE DATA NON VALIDO
IGFS_20026 SHOP ID DUPLICATO
IGFS_20027 FORMATO RICHIESTA NON VALIDO
IGFS_20028 DATI BATCH MANCANTI
IGFS_20029 DATI BATCH NON VALIDI
IGFS_20030 DIRECTORY DATI BATCH NON VALIDA
IGFS_20031 DATI BATCH DUPLICATI
IGFS_20032 NOME BATCH FILE NON VALIDO
IGFS_20033 DATI BATCH NON TROVATI
IGFS_20034 BATCH TRACK ID NON VALIDO
IGFS_20035 ORDERID NON VALIDO
IGFS_20036 PAN NON VALIDO
IGFS_20037 CVV2 NON VALIDO
IGFS_20038 EXPIRE DATE NON VALIDA
IGFS_20040 MPI VERIFIED NON VALIDA
IGFS_20041 MPI AUTHORIZED NON VALIDA
IGFS_20042 MPI CAVV NON VALIDA
IGFS_20043 MPI XID DATE NON VALIDA
IGFS_20044 CAMPO PAYMENT DESCRIPTION NON VALIDO
IGFS_20045 PAYMENT INSTRUMENT TOKEN ID ERRATO
IGFS_20046 FREE TEXT ERRATO
IGFS_20048 ERRORE PROCESSAMENTO PAYMENT INSTRUMENT TOKEN
IGFS_20049 TOPUPID ERRATO
IGFS_20050 CODICE POSTALE MITTENTE NON VALIDO
IGFS_20051 CODICE POSTALE DESTINATARIO NON VALIDO
IGFS_20052 CODICE NAZIONE DESTINATARIO NON VALIDO
IGFS_20053 IMPORTO SPEDIZIONE NON VALIDO
IGFS_20056 IMPORTO TASSE NON VALIDO
IGFS_20057 ELENCO ARTICOLI MANCANTE
IGFS_20058 CODICE ARTICOLO NON VALIDO
IGFS_20059 DESCRIZIONE ARTICOLO NON VALIDO
IGFS_20060 NUMERO NON VALIDO
IGFS_20062 IMPORTO ARTICOLO NON VALIDO
IGFS_20065 NUMERO MASSIMO PRODOTTI SUPERATO
IGFS_20066 CODICE NAZIONE MITTENTE NON VALIDO
IGFS_20067 NOME DESTINATARIO NON VALIDO
IGFS_20068 INDIRIZZO DESTINATARIO NON VALIDO
IGFS_20069 CITTA DESTINATARIO NON VALIDA
IGFS_20070 STATO DESTINATARIO NON VALIDO
IGFS_20071 CODICE VAT NON VALIDO
IGFS_20072 NOME FATTURA NON VALIDO
IGFS_20073 INDIRIZZO FATTURA NON VALIDO
IGFS_20074 CITTA FATTURA NON VALIDA
IGFS_20075 STATO FATTURA NON VALIDO
IGFS_20076 CODICE POSTALE FATTURA NON VALIDO
IGFS_20077 CODICE NAZIONE FATTURA NON VALIDO
IGFS_20078 NUMERO FATTURA NON VALIDO
IGFS_20079 NOTE AL VENDITORE NON VALIDE
IGFS_20080 PAYPASSDATA ERRATO
IGFS_20081 PROMOCODE ERRATO
IGFS_20082 ACCNTNAME ERRATO
IGFS_20083 AUTHCODE ERRATO
IGFS_20084 BUYERNAME ERRATO
IGFS_20085 BUYERACCNT ERRATO
IGFS_20086 IPBUYER ERRATO
IGFS_20090 TRANSAZIONE CANCELLATA DALL'UTENTE
IGFS_20100 ERRORE NOTIFICA MERCHANT
IGFS_208 CARTA PERSA
IGFS_209 CARTA RUBATA
IGFS_400 STORNO OK
IGFS_800 TERMINALE NON ABILITATO
IGFS_801 BANCA SELEZIONATA ERRATA
IGFS_802 TENTATIVI PIN ESAURITI
IGFS_803 CODICE TERMINALE ERRATO
IGFS_804 CHIAVE DISALLINEATA
IGFS_805 ERRORE CIFRATURA
IGFS_807 TERMINALE CHIUSO
IGFS_808 TERMINALE NON CHIUSO
IGFS_809 ERRORE SEQUENZA
IGFS_810 TERMINALE NON RICONOSCIUTO
IGFS_811 TERMINALE BLOCCATO
IGFS_812 TERMINALE CHIUSO FORZ.
IGFS_813 OPERAZIONE NON PERMESSA
IGFS_814 TRANSAZIONE IN CORSO
IGFS_815 CARTA BLOCCATA
IGFS_888 IN ATTESA DI COMPLETAMENTO
IGFS_90000 DATABASE ERROR
IGFS_90005 TIMESTAMP ERRATO.
IGFS_902 TRANSAZIONE NON VALIDA
IGFS_903 REINVIARE TRANSAZIONE
IGFS_907 EMITTENTE NON ADERENTE
IGFS_908 DESTINAZIONE NON TROVATA
IGFS_909 ERRORE DI SISTEMA
IGFS_910 SISTEMA ISSUER NON ATTIVO
IGFS_911 TIME OUT
IGFS_912 ISSUER NON RAGGIUNGIBILE
IGFS_913 TRANSAZIONE DUPLICATA
IGFS_934 NOTIFICA RIFIUTATA
IGFS_990 STRUMENTO PAGAMENTO NON ATTIVO