PagOnline

Transcript

PagOnline
Gateway di pagamento
PagOnline
Carte di Credito
Allegato Tecnico Ver. 2.5.0
Data
Autore
Descrizione Modifiche
Versione
06/06/2003
Staff e-comm.
Nuova versione del sito. Nuove modalità di
dialogo con il sito dell’esercente: parametri
inserimento ordine, risposta pagine ok e ko,
parametri messaggi di stato, risposta comandi
remoti. Nuovi stati ordine
V2.0.0
28/07/2003
Staff e-comm.
Aggiunta gestione back office di utenze
aggiuntive, rispetto all’amministratore di
esercente
V2.0.1
23/09/2003
Staff e-comm.
Aggiunta sezione istruzioni e loghi per esercente
V2.0.2
01/10/2003
Staff e-comm.
Aggiunta sezione calcolo MAC
V2.0.3
16/10/2003
Staff e-comm.
Aggiunto software client MacPoster nativo
windows
V2.0.4
28/04/2004
Staff e.comm.
Aggiunta funzione moto inserimento ordine.
Visualizzazione brand carta di credito.
V2.1.0
29/03/2005
Staff e-comm.
Gestione logo negozio dell’esercente. ID
autorizzazione nell’event listener. Gestione
CVV2. Migliorate performance
V2.2.0
05/05/2006
Staff e-comm.
Migliorate performance del prodotto. Nuovo
client di accesso dal negozio virtuale
V2.3.0
10/01/2008
Staff e-comm.
Aggiunta gestione Rimborso degli ordini (refund)
Nuova API di rimborso
V2.4.0
26/01/2011
Staff e-comm.
Distinzione utenza accesso al backoffice e utenza
per interfacciamento (Colloquio tra il Payment
Gateway e Merchant: messaggi di stato)
V2.4.0
01/02/2012
Staff e-comm
Aggiornamento dei comandi server to server
V2.5.0
PagOnline
Allegato Tecnico
Indice generale
................................................................................................................................................1
1. Definizioni...........................................................................................................................3
2. Overview............................................................................................................................ 3
3. Gestione del merchant....................................................................................................... 4
4. Dati di test per simulazione acquisto................................................................................. 4
5. Colloquio tra il merchant e il Payment Gateway................................................................ 5
5.1. Parametri obbligatori...................................................................................................6
5.2. Parametri facoltativi.................................................................................................... 7
6. Colloquio tra il Payment Gateway e il merchant................................................................ 7
6.1. Stati dell'ordine........................................................................................................... 8
6.2. Parametri opzionali................................................................................................... 12
7. Modalità e istruzioni per il calcolo del MAC..................................................................... 13
7.1. Chiamata al gateway di pagamento per inserire una richiesta di pagamento.........14
7.2. Chiamata del gateway di pagamento sulle URL dedicate all'event listening...........15
8. Backoffice ........................................................................................................................16
8.1 Operazioni di gestione .............................................................................................. 16
8.2 Operazioni di monitoraggio .......................................................................................16
8.3 Operazioni di configurazione..................................................................................... 16
9. Comandi eseguibili in modalità server to server (API) ....................................................17
9.1 Interfaccia di chiamata (API) .................................................................................... 17
9.2 Parametri di input comuni ......................................................................................... 18
10. API comandi .................................................................................................................. 19
10.1 Comando CONFIRM .............................................................................................. 19
10.2 Comando CANCEL .................................................................................................20
10.3 Comando ORDER_STATE ..................................................................................... 21
10.4 Comando SEND_STATE ........................................................................................ 22
10.5 Comando REFUND_CARD .................................................................................... 23
10.7 Comando DAILY_REPORT .................................................................................... 24
2
PagOnline
Allegato Tecnico
1. Definizioni
Termine
Significato
Merchant
Persona giuridica amministratrice del negozio virtuale.
Esercente
Vedi merchant
Payment Gateway
Piattaforma informativa per effettuare pagamenti via Internet
POS Virtuale
Gateway di pagamento per permettere di acquistare beni o servizi via Internet
ISP
Fornitore del servizio informativo per il negozio virtuale
Backoffice
Pannello di controllo, accessibile previa autenticazione, per la gestione del POS
virtuale
Event listener
Pagina in ascolto sul server del ISP che riceve, in modalità asincrona, i cambiamenti
di stato degli ordini
MAC
Message code authentication - codice utilizzato per autenticare un messaggio digitale
MD5
Message Digest algorithm 5 - algoritmo crittografico - standard RFC 1321
Tabella 1: Glossario termini utili
2. Overview
PagOnline è il sistema di pagamento elettronico UniCredit che permette di effettuare pagamenti di
beni/servizi acquistati via Internet con l'utilizzo di carte di credito.
L'applicazione è facilmente interfacciabile con qualsiasi sito di commercio elettronico attraverso
protocolli standard.
3
PagOnline
Allegato Tecnico
3. Gestione del merchant
Il merchant che aderisce a PagOnline, riceverà una UserID ed una Password con cui accedere al
proprio backoffice raggiungibile all'indirizzo https://pagamenti.unicredito.it/.
Durante il primo accesso viene chiesto al merchant di cambiare la password temporanea e di
completare i propri dati anagrafici; attraverso l'area di backoffice il merchant potrà gestire
interamente il sistema di pagamento del proprio negozio virtuale. Potrà ad esempio visualizzare e
stornare ordini, configurare interfacce di listening e stringa di sicurezza, profilare utenti ecc. ..
Per permettere di effettuare dei test di comunicazione tra il sistema informativo del merchant e
PagOnline o per accedere al backoffice viene messo a disposizione un account di test:
Login
9999888
Password
9999888
Con questo account è possibile configurare e testare l'intero funzionamento di PagOnline sia per
quanto concerne l'interfaccia tra il negozio virtuale e PagOnline sia per le funzionalità di backoffice.
4. Dati di test per simulazione acquisto
Per consentire all'esercente di simulare il processo di pagamento testando il funzionamento del
servizio del proprio sito di e-commerce attraverso l'utenza di test è possibile utilizzare i dati della
carta di test a seguire. Tutti i tentativi di pagamento sull'utenza di test dovranno avere importi
inferiori a € 100,00.
Parametro
Valore
Titolare carta
Nome a piacere
Tipo di carta
VISA
PAN della carta
4444499922200000
CVV2
111
Data scadenza
11/2019
Tabella 2: Dati della carta di test
Gli ordini effettuati con carta di prova non potranno mai essere contabilizzati e quindi non
potranno mai raggiungere lo stato "contabilizzato." Inoltre i tentativi di pagamento effettuati con la
carta di prova, nel caso dell'ambiente di produzione, daranno sempre esito negativo.
Se si volesse testare un pagamento con esito positivo fuori dall'ambiente di test, sarà necessario
utilizzare una carta di credito reale e successivamente stornare l'importo autorizzato attraverso
l'area di backoffice.
4
PagOnline
Allegato Tecnico
5. Colloquio tra il merchant e il Payment Gateway
Il merchant deve predisporre un'interfaccia web sul proprio sistema informativo che permetta al
cliente di accedere al gateway di pagamento PagOnline per concludere l'acquisto del bene o
servizio.
La comunicazione tra l'ISP ed il servizio di pagamento avviene con l'invio di parametri che
riguardano l'ordine da pagare (identificativo ordine, importo, causale, valuta ecc.), i dati del
merchant e infine il parametro crittografico di sicurezza (MAC - che certifica i dati di passaggio).
Importante: è consigliato evitare di far coincidere l'utenza di accesso a backoffice con l'utenza
utilizzata per colloquiare con PagOnline durante la transazione. Questo eviterà che, a seguito di
un blocco dell'utenza di amministrazione per l'accesso a backoffice, non ne consegua un blocco
dell'operatività nei pagamenti.
Generazione dell'utenza dedicata alle transazioni:
1. Nell'area di backoffice selezionare dal menù la voce Configurazione e successivamente
Gestione utenti, infine cliccare sul pulsante Aggiungi
2. Compilare i campi nome utente, password e conferma password. Deselezionare la casella
Cambio password
3. Dal riquadro Permessi utente selezionare esclusivamente la casella Inserimento ordini
4. Dal riquadro Stabilimenti associati selezionare tutti gli stabilimenti
5. Cliccare sul pulsante Conferma
Nelle tabelle di seguito vengono riportati i parametri obbligatori e facoltativi del protocollo di
comunicazione tra il merchant e PagOnline che dovranno essere spediti con metodo GET al
seguente indirizzo:
https://pagamenti.unicredito.it/initInsert.do
Per ragioni di sicurezza si consiglia di non far transitare i dati dell’ordine in modalità client/server
ma richiamare PagOnline attraverso un http client in modalità server to server.
PagOnline restituirà il codice HTML da mostrare al client che permetterà al cliente di proseguire
nella transazione senza poter avere accesso alle informazioni del merchant.
5
PagOnline
Allegato Tecnico
5.1. Parametri obbligatori
Nome
Tipo
Descrizione
Valori consentiti
numeroCommerciante
Numerico
Codice identificativo del merchant
userID
Alfanumerico
Nome utente per l'accesso al sistema di
pagamento
password
Alfanumerico
Password per l'accesso al sistema di
pagamento
numeroOrdine
Alfanumerico
Codice identificativo dell'ordine
totaleOrdine
Numerico
Importo espresso come numero intero. Le
ultime due cifre rappresentano i decimali
valuta
Numerico
Codice ISO valuta (solo EURO)
flagDeposito
Alfanumerico
Modalità di deposito automatico o manuale Y = autodeposito,
N = manuale
urlOk
Alfanumerico
Indirizzo dell'esercente a cui verrà
reindirizzato il compratore in
caso di transazione con esito positivo
urlKo
Alfanumerico
Indirizzo dell'esercente a cui verrà
reindirizzato il compratore in
caso di transazione con esito negativo
tipoRispostaApv
Alfanumerico
Modalità manuale o automatica per
reindirizzare il cliente da
PagOnline verso il sito dell'esercente
click, wait
flagRiciclaOrdine
Alfanumerico
Indica se si intende riutilizzare un
identificativo ordine che fa
riferimento ad un precedente ordine
abbandonato
Y = ricicla,
N = non riciclare
stabilimento
Numerico
Codice identificativo del punto vendita
mac
Alfanumerico
Stringa crittografica a garanzia
dell'integrità dei dati
978
Tabella 3: Parametri obbligatori per la procedura di inserimento ordine
Importante: nel caso si utilizzi il parametro flagDeposito=N, l'ordine rimarrà preautorizzato 30
giorni di calendario per il pagamento con carta di credito.
6
PagOnline
Allegato Tecnico
5.2. Parametri facoltativi
Nome
Tipo
Descrizione
Valori consentiti
tipoPagamento
Alfanumerico
Metodo di pagamento scelto
CartCred
causalePagamento
Alfanumerico
Descrizione della transazione
Max. 90 caratteri
emailCompratore
Alfanumerico
Email del cliente a cui inoltrare l'esito della
transazione
langCompratore
Alfanumerico
Lingua del compratore
it, en, de, fr, es
Tabella 4: Parametri facoltativi per la procedura di inserimento ordine
Importante: per autenticare i dati passati dal sistema informativo del merchant a PagOnline, è
necessario calcolare un MAC che permetta di autorizzare i dati e la provenienza della chiamata.
Il calcolo del MAC verrà descritto nel capitolo 8 "Modalità e istruzioni per il calcolo del MAC."
6. Colloquio tra il Payment Gateway e il merchant
Il sistema Payment Gateway PagOnline tiene aggiornato il merchant sugli sviluppi di un pagamento
tramite messaggi http asincroni.
In altre parole l'esercente deve configurare almeno un URL del proprio server –attraverso la
funzionalità interna all'area di backoffice– per ricevere messaggi (tale URL è detto event listener:
ascoltatore di eventi di stato dell'ordine) con lo stato attuale e precedente di un generico pagamento
ad ogni cambiamento dello stato stesso.
L'esercente può indicare infatti da 1 a n event listener e gli URL specificati utilizzano il protocollo
http, i parametri vengono inviati con metodo GET. Tra i parametri inviati con l'evento c'è
nuovamente il MAC a garanzia che sia il sistema di pagamenti stesso ad aver inviato il messaggio
all'esercente. La modalità di calcolo di questo MAC segue la stessa regola del calcolo di quello
inviato nella richiesta inserimento ordine: "tutto ciò che si riceve a sinistra del MAC è stato
utilizzato per il calcolo del MAC stesso;" questa è la ragione per cui si utilizza il GET in invio, per
non perdere l'ordine dei parametri.
Questi messaggi vengono mandati come parametro proprio all'URL segnalata dal commerciante (o
dal provider internet che gestisce il sito del commerciante).
I messaggi di stato inviati alle listener sono di due tipi:
7
•
automatico, indica il cambio di stato di un ordine nel sistema e viene inviato in
corrispondenza di ogni evento che crea una modifica di stato nell'ordine
•
su richiesta, viene richiesto con invocazione remota (v. sez. 10.4) o tramite backoffice
dall'esercente, oppure invocato a seguito dell'esecuzione dei comandi di storno e
contabilizzazione richiesti sul sistema.
PagOnline
Allegato Tecnico
Esempi di possibili stringhe di parametri inviati dal sistema al commerciante sono di seguito
riportate (si osservino attentamente le modifiche introdotte rispetto alla versione 1.x.x del software);
si veda oltre la tabella dei possibili stati, il diagramma di flusso seguente.
6.1. Stati dell'ordine
Valore
Descrizione
Tipo
ON
ordine inserito nuovo
intermedio
RO
ordine inserito richiesto
intermedio
IN
ordine inserito in attesa di input del cliente
intermedio
AR
ordine in attesa di risposta dal circuito autorizzativo
intermedio
OK
ordine autorizzato e in attesa di conferma
importante
KO
ordine non autorizzato
definitivo
IC
ordine confermato
importante
CO
ordine contabilizzato
importante
AB
ordine abbandonato
definitivo
ST
ordine stornato (nei limiti indicati nella sez. 10.2 - comando CANCEL)
definitivo
EX
ordine scaduto (dopo i limiti indicati nella sez. 10.2 - comando CANCEL)
definitivo
IP
ordine in rimborso parziale
intermedio
IT
ordine in rimborso totale
intermedio
CP
ordine rimborsato parzialmente
definitivo
CT
ordine rimborsato totalmente
definitivo
RC
rimborso cancellato
definitivo
Tabella 5: Stati raggiungibili da un ordine e codice di stato corrispondente
A seguire una spiegazione per gli stati ordine considerati importanti:
8
•
statoattuale=OK: la richiesta di autorizzazione del pagamento –con deposito differito– ha
avuto esito positivo
•
statoattuale=IC: il deposito del pagamento –a seguito della richiesta di autorizzazione con
autodeposito o a seguito della conferma di un deposito differito– ha avuto esito positivo
•
statoattuale=KO: la richiesta di autorizzazione del pagamento ha avuto esito negativo
PagOnline
Illustrazione 1: Diagramma degli stati dell'ordine
9
Allegato Tecnico
PagOnline
Allegato Tecnico
Ordine richiesto:
TIMECREATED=21.09.2010+20%3A30%3A18&statoattuale=RO&PREVIOUSSTATE=ON&CURRENTSTATE=RO&ti
pomessaggio=PAYMENT_STATE&DESCRIZIONE=CAMBIO+DI+STATO&datacreazione=21.09.2010+20%3A30%
3A18&stabilimento=99988&MerchantNumber=9999888&descrizione=CAMBIO+DI+STATO&OBJECT=PAYME
NT&TIMEGENERATED=21.09.2010+20%3A30%3A18&MERCHANTNUMBER=9999888&statoprecedente=ON&MERC
HANTACCOUNT=999988801&numeroOrdine=acquistibenza20101209556743&numeroCommerciante=99998
88&datagenerazione=21.09.2010+20%3A30%3A18&ORDERNUMBER=acquistibenza20101209556743&Stab
ilimento=99988&mac=2d4lntO9Q%2FXRYtzNhC5Iqg%3D%3D&MAC=QDBIyW90z221ZuHfZWQtow%3D%3D
Ordine inserito:
TIMECREATED=21.09.2010+20%3A30%3A18&statoattuale=IN&PREVIOUSSTATE=RO&CURRENTSTATE=IN&ti
pomessaggio=PAYMENT_STATE&DESCRIZIONE=CAMBIO+DI+STATO&datacreazione=21.09.2010+20%3A30%
3A18&stabilimento=99988&MerchantNumber=999988&descrizione=CAMBIO+DI+STATO&OBJECT=PAYMEN
T&TIMEGENERATED=21.09.2010+20%3A30%3A18&MERCHANTNUMBER=9999888&statoprecedente=RO&MERCH
ANTACCOUNT=999988801&numeroOrdine=acquistibenza20101209556743&numeroCommerciante=999988
8&datagenerazione=21.09.2010+20%3A30%3A18&ORDERNUMBER=acquistibenza20101209556743&Stabi
limento=99988&mac=Nj4eOUgkTfxPdEhx43KXaQ%3D%3D&MAC=0liynw9HveEjKX1+V%2F5tog%3D%3D
In particolare a ogni listener del merchant vengono sempre inviati i seguenti parametri di default:
Nome
Tipo
Descrizione
tipomessaggio
Alfanumerico Tipo oggetto
datacreazione
Alfanumerico Ora di invio del messaggio
numeroCommerciante
Numerico
Numero esercente
stabilimento
Numerico
Stabilimento esercente
numeroOrdine
Alfanumerico Numero ordine
statoprecedente
Alfanumerico Stato ordine precedente
statoattuale
Alfanumerico Stato ordine attuale
descrizione
Alfanumerico Descrizione del messaggio
mac
Alfanumerico Codice di sicurezza
Tabella 6: Parametri fissi inviati alle interfacce di listening
Caso 1. messaggi di stato automatici
•
Il parametro tipomessaggio assume il valore "PAYMENT_STATE"
•
Il parametro descrizione assume il valore "CAMBIO DI STATO"
Caso 2. messaggi di stato su richiesta
10
•
Il parametro tipomessaggio assume il valore "PAYMENT_STATE"
•
Il parametro statoprecedente assume il valore "indefinito"
PagOnline
•
Allegato Tecnico
Il parametro descrizione può assumere i seguenti valori:
a) nel caso di invocazione a seguito dell'esecuzione dei comandi, contiene la descrizione
dell'esecuzione del comando
b) nel caso di invocazione da remoto da parte del merchant, contiene il parametro
descrizione inviato dal merchant o –se non presente– la scritta ”Richiesta remota
dell'esercente”
c) nel caso di invocazione dal backoffice da parte del merchant, contiene il parametro
descrizione specificato nella form o –se non presente– la scritta "Richiesta da backoffice
dell'esercente"
Si osservi come quando viene richiesto l'invio dell'evento al listener riguardante un ID ordine che
non è presente nel sistema, viene generato un evento con i parametri valorizzati nel seguente modo:
•
identificazione del merchant: numero e stabilimento specificati nella richiesta
•
numeroOrdine=uello
•
tipomessaggio=PAYMENT_STATE
•
statoattuale=ordine_non_trovato
•
mac,
•
gli altri parametri che normalmente vengono inviati con l'evento, conterranno il valore
"indefinito" tipico dei parametri non valorizzabili
specificato nella richiesta
valorizzato come al solito
Se viene poi effettuata una richiesta di invio di un evento senza specificare un valore per il
parametro descrizione, vengono impostati i seguenti valori di default:
a) se la richiesta è avvenuta tramite una chiamata remota, descrizione=Richiesta remota
b) dell'esercente se la richiesta è avvenuta tramite il backoffice, descrizione=Richiesta da
backoffice dell'esercente
c) se la richiesta è avvenuta a seguito di un cambio di stato del pagamento,
descrizione=CAMBIO DI STATO
11
PagOnline
Allegato Tecnico
6.2. Parametri opzionali
Nome
Tipo
Descrizione
Valori ammessi
tipoPagamento
Alfanumerico Tipologia di pagamento utilizzata CartCred
importototale
Alfanumerico Importo totale
Residuoapprovazione
Numerico
Residuo di approvazione
totaledepositato
Numerico
Importo depositato
expvaluta
Numerico
Esponente valuta (decimali)
datamodifica
Alfanumerico Data ultima modifica pagamento
valuta
Numerico
Codice ISO valuta
-2
978
Tabella 7: Parametri opzionali inviati alle interfacce di listening
Importante: Si osservi che, come ogni altra applicazione web, non può essere garantita una vera
funzionalità transazionale: può succedere che per i motivi più disparati tali messaggi non
giungano all'esercente (problemi in rete internet, server temporaneamente fuori servizio, utente
che chiude il browser, crash di sistema), pur essendo previsto un meccanismo per effettuare
multipli tentativi di invio a front di un errore.
Per tale ragione è prevista una modalità "on demand," che si va a sommare alla possibilità dei
messaggi su richiesta ed è del tutto analoga da parte del merchant, per interrogare il sistema
gateway di pagamento al fine di reperire lo stato attuale di quegli ordini che siano rimasti per un
tempo ragionevolmente troppo lungo (e.g. più di 20 minuti) in stato "pendente" come per esempio
ordini richiesti o inseriti di cui non si è ricevuto un messaggio finale di
abbandono/approvazione/rifiuto, in attesa dell'esito finale del pagamento. Tale funzionalità è
illustrata nella sezione 10.3, sotto il nome di comando ORDER_STATE.
L'area di backoffice viene acceduta tramite maschera di login utilizzando userID e password; è
quindi possibile scegliere tra varie operazioni (e gestire eventuali stabilimenti multipli) tra cui
quelle per la gestione degli event listener e dei parametri aggiuntivi da spedire alle URL come
spiegazioni fornite in questo stesso capitolo.
12
PagOnline
Allegato Tecnico
7. Modalità e istruzioni per il calcolo del MAC
Al fine di esemplificare meglio quanto già verificabile tramite lettura ed osservazione degli esempi
in diversi linguaggi (presenti sulla pagina https://pagamenti.unicredito.it/backoffice/software.html),
si illustrano di seguito le modalità di calcolo della firma digitale nei diversi casi di comunicazione
ed invio dati tra il gateway di pagamento e il server del merchant e viceversa. Le seguenti istruzioni
si riveleranno particolarmente utili a coloro che utilizzano JAVA come linguaggio di
programmazione.
Il calcolo del MAC è un meccanismo che permette il reciproco riconoscimento tra due attori
durante lo scambio di informazioni in rete, tramite l'applicazione di un algoritmo di firma digitale
MD5 che sfrutta un'informazione conosciuta solamente dagli attori stessi.
Supponendo che l'attore A debba inviare alcuni dati all'attore B, nella forma 'Chiave=Valore', egli
unisce alla stringa creata tramite concatenazione di tali dati (separati come da standard RFC Web
dal carattere &, e mantenendo un preciso ordine dei dati stessi) una stringa di cinquanta caratteri
conosciuta solamente da esso e dalla sua controparte attore B (chiameremo questa stringa stringa
segreta). A tale stringa ottenuta è applicata una firma MD5, dalla quale si ottiene una nuova stringa
che rappresenta il MAC di tale transazione.
Il seguente esempio illustra l'invio di parametri secondo la procedura appena illustrata:
Illustrazione 2: Scambio di informazioni di tra due attori mediante l'invio di firma digitale
MAC
Ammettiamo che l'attore A debba spedire i due valori chiave1=valore1 e chiave2=valore2. Egli
creerà la stringa chiave1=valore1&chiave2=valore2 alla quale andrà ad aggiungere la stringa
segreta ottenendo il seguente risultato:
chiave1=valore1&chiave2=valore2&StringaSegreta
Su tale risultato applicherà la firma digitale da cui ottenere il risultato finale da spedire in rete
accodato ai valori.
Si noti che nulla impedisce di calcolare il MAC solamente su una parte dei dati spediti in rete, e che
l'attore potrebbe spedire i dati in rete in ordine diverso da quello usato per il calcolo del MAC, che è
pure un vincolo conosciuto solamente dalle due parti. Al momento della verifica, ovviamente, si
dovrà fare il calcolo del MAC con i parametri nell'ordine originale.
Per maggiore completezza si illustra di seguito un esempio di codice per calcolare la firma MD5
con linguaggio JAVA; in rete è possibile trovare librerie di calcolo MD5 per molti altri linguaggi e
le modalità da seguire saranno le stesse.
13
PagOnline
Allegato Tecnico
Ipotizzando di avere i seguenti parametri noti:
•
sInputString: una stringa da maccare
•
sSecretString: una stringa segreta di 50
caratteri conosciuta solo dalle due parti
allora il frammento di codice JAVA per il calcolo sarà:
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.binary.Base64;
String sStringToDigest = InputString + "&" + sSecretString;
byte[] bMac = DigestUtils.md5 (sStringToDigest.getBytes());
String sMacEncoded = Base64.encodeBase64String (bMac);
sMacEncoded = sMacEncoded.substring (0,24);
Esaminato da un punto di vista teorico cosa si intenda per calcolo del MAC, veniamo ora ad
illustrare le modalità di inserimento di tale algoritmo all'interno dei protocolli di comunicazione del
servizio di gateway di pagamento.
7.1. Chiamata al gateway di pagamento per inserire una richiesta di pagamento
I parametri da inviare al gateway di pagamento (vedi cap. 5) con metodo GET per assicurarsi che
vengano inviati con il medesimo ordine di calcolo del MAC stesso, devono essere accodati uno
all'altro nell'ordine esatto riportato di seguito:
Parametri obbligatori:
numeroCommerciante, userID, password, numeroOrdine, totaleOrdine, valuta, flagDeposito,
urlOk, urlKo, tipoRispostaApv, flagRiciclaOrdine, stabilimento
Parametri facoltativi:
tipoPagamento, emailNotifica, langCompratore, causalePagamento
Durante l'invio verso PagOnline, i parametri facoltativi, eventualmente, devono essere accodati
dopo il parametro MAC. Per esempio se si dovesse inviare la richiesta con i seguenti dati:
numeroCommerciante=9999888
userID=9999888
password=9999888
numeroOrdine=VERXORDXPROD196
totaleOrdine=1
valuta=978
flagDeposito=Y
urlOk=http://www.dominio.it/ok.html
urlKo=http://www.dominio.it/ko.html
tipoRispostaApv=click
flagRiciclaOrdine=N
stabilimento=99888
osservando l'ordine dei parametri, si deve preparare la stringa:
14
PagOnline
Allegato Tecnico
numeroCommerciante=9999888&userID=9999888&password=9999888&numeroOrdine=VERXORDXPROD196
&totaleOrdine=1&valuta=978&flagDeposito=Y&urlOk=http://www.dominio.it/ok.html&urlKo=htt
p://www.dominio.it/ko.html&tipoRispostaApv=click&flagRiciclaOrdine=N&stabilimento=99888
a questa stringa preparata va aggiunta la secret string di 50 caratteri e su ciò che si ottiene va
calcolato il MAC, ovvero va calcolato su (ipotizzando una secret string del tipo “ b1“ x 25 ):
numeroCommerciante=9999888&userID=9999888&password=9999888&numeroOrdine=VERXORDXPROD196
&totaleOrdine=1&valuta=978&flagDeposito=Y&urlOk=http://www.dominio.it/ok.html&urlKo=htt
p://www.dominio.it/ko.html&tipoRispostaApv=click&flagRiciclaOrdine=N&stabilimento=99888
&b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1
ricavando un valore per il MAC. Finalmente è possibile inviare in GET quanto ottenuto, ovvero:
numeroCommerciante=9999888&userID=9999888&password=PASSWORD+FINTA&numeroOrdine=VERXORDX
PRO D196&totaleOrdine=1&valuta=978&flagDeposito=Y&urlOk=http%3A%2F%2Fwww.dominio.it
%2Fok.html& urlKo=http%3A%2F%2Fwww.dominio.it
%2Fko.html&tipoRispostaApv=click&flagRiciclaOrdine=N&stabilimento=99888&mac=8k2BZRtnVaM
qHAPx0CPUTQ%3D%3D
E' importante notare che i valori devono essere URL encoded prima di essere spediti verso
PagOnline.
Si osservi inoltre, fatto importante, come non sia necessario (anzi vivamente sconsigliato!) inviare il
valore esatto della password dell'utente (che verrà invece rimpiazzata dal sistema in ricezione, per la
verifica), evitando di inviare in rete dati sensibili dell'utente.
7.2. Chiamata del gateway di pagamento sulle URL dedicate all'event listening
Questi casi ricadono nella regola precedentemente menzionata: "tutto ciò che si trova a sinistra del
MAC è stato utilizzato per il calcolo del MAC stesso," per decidere quale stringa utilizzare.
Se ad esempio si ricevesse un messaggio al proprio url di stato ordini del tipo:
statoattuale=RO&tipomessaggio=PAYMENT_STATE&totaledepositato=indefinito&datacreazione=3
0.0 9.2003 11:21:16&stabilimento=99888&merchantNumber=9999888&descrizione=CAMBIO DI
STATO&valuta=978&importototale=100&mac=2fUXqBwCln1gtA8DZP/aqA==&importototale=1&statopr
ecedente=ON
Tutto ciò che è a sinistra del MAC, unito alla stringa segreta (su cui quindi calcolare il MAC da
verificare) sarebbe quindi:
statoattuale=RO&tipomessaggio=PAYMENT_STATE&totaledepositato=indefinito&datacreazione=3
0.0 9.2003 11:21:16&stabilimento=99888&merchantNumber=9999888&descrizione=CAMBIO DI
STATO&valuta=978&importototale=100&b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1
Su questa stringa si calcolerà il MAC.
15
PagOnline
Allegato Tecnico
8. Backoffice
Il backoffice è un applicativo gestionale via Web che consente al merchant di configurare, gestire,
monitorare il proprio gateway di pagamento.
Previa autenticazione, collegandosi all'URL: https://pagamenti.unicredito.it/backoffice/index.html,
il merchant potrà effettuare operazioni sotto elencate.
Per gli approfondimenti sulle funzionalità si rimanda all'help presente nelle pagine del backoffice.
8.1 Operazioni di gestione
•
Controllo Stato di un ordine
•
Conferma di un ordine (sfruttabile in caso di deposito differito)
•
Storno di un ordine
•
Rimborso di un ordine
8.2 Operazioni di monitoraggio
Ricerca ordini con vari filtri, tra cui:
•
Data ordine
•
Numero Ordine
•
Stato contabilizzazione
•
Ordinamento per data, totale, ragione sociale
•
Totali degli ordini con vari filtri, tra cui:
◦ Valuta
◦ Tipo Pagamento
◦ Intervallo totali (giornaliero, mensile, annuale, globale)
•
Visualizzazione delle carte di credito abilitate
8.3 Operazioni di configurazione
16
•
Gestione (lettura/modifica) stringa di firma digitale per il collegamento merchant/sistema di
pagamento
•
Cambio Password dell'utente
•
Gestione degli event listener di stato pagamenti (inserimento, modifica, cancellazione,
personalizzazione parametri)
•
Gestione logo azienda
PagOnline
Allegato Tecnico
•
Gestione di utenze aggiuntive a quella assegnata di default all'adesione al servizio, con
permessi solo su alcuni stabilimenti
•
Gestione anagrafica esercente/ISP (in fase di primo accesso obbligatoriamente verrà chiesto
il cambio password e –in via facoltativa– l'inserimento di dati anagrafici che verrà
riproposto ad ogni accesso fintantoché non verrà completato l'inserimento dati ritenuti di
una certa importanza)
9. Comandi eseguibili in modalità server to server (API)
Alcune funzionalità, oltre ad essere usufruibili da backoffice, possono essere utilizzate attraverso
comandi in modalità server to server. In altre parole, l'applicazione del merchant o dell'ISP potrà
interfacciarsi con PagOnline in modalità asincrona, automatizzando così il colloqui tra i due sistemi.
Le funzionalità eseguibili via API sono le seguenti:
Comando
Descrizione
CONFIRM
Conferma un ordine depositato
CANCEL
Storna un ordine depositato o in contabilizzazione
ORDER_STATE
Fornisce lo stato di un ordine
SEND_STATE
Richiede l'invio di un messaggio di stato sulle interfacce di listening
REFUND_CARD
Effettua un rimborso per un pagamento effettuato con carta di credito
DAILY_REPORT
Fornisce la lista di ordini contabilizzati o rimborsati per un dato giorno
Tabella 8: Comandi eseguibili server-side
9.1 Interfaccia di chiamata (API)
Le API sono chiamabili tramite delle richieste a URL presenti sul gateway di pagamento UniCredit.
in particolare sono accessibili su host tramite l'interfaccia:
https://pagamenti.unicredito.it/backoffice/servizi/execute_remote_command.do
La comunicazione tra il server del merchant e PagOnline deve avvenire attraverso protocollo sicuro
HTTPS. Oltre ai parametri che identificano il merchant, lo stabilimento e quelli funzionali al
comando, deve essere inviato il MAC che ha lo scopo di garantire l'integrità dei dati. Per il calcolo
del MAC si rimanda al capitolo 7.
Le specifiche sul formato dei parametri sono le seguenti:
17
•
valori dei parametri URL encoded
•
modalità di invio dei parametri GET
PagOnline
Allegato Tecnico
9.2 Parametri di input comuni
Ogni chiamata deve contenere obbligatoriamente i seguenti parametri di identificazione del
merchant:
Nome
Tipo
Descrizione
Valori consentiti
numeroCommerciante
Numerico
Codice identificativo del merchant
stabilimento
Numerico
Numero identificativo dello
stabilimento del merchant
userID
Alfanumerico
Nome utente per l'accesso al sistema di
pagamento
password
Alfanumerico
Password per l'accesso al sistema di
pagamento
tipoComando
Alfanumerico
Comando eseguibile
Vedi tab. 8
formatoRisposta
Alfanumerico
Tipo di formato della risposta
xml, plaintext
mac
Alfanumerico
Stringa crittografica a garanzia
dell'integrità dei dati
Tabella 9: Parametri comuni a tutti i comandi server to server
La risposta della chiamata alle API è del tipo xml o plaintext (simile ad una querystring http
chiave1=valore1&chiave2=valore2...) e consiste di informazioni riguardo l'andamento del comando
stesso.
Nel caso di un comando che preveda solo una conferma positiva o meno dell'esecuzione e non
richieda un ritorno di dati, un esempio potrebbe essere quello a seguire:
<?xml version="1.0" ?>
<remotecommand>
<commandname>CONFIRM</commandname>
<respcode>002</respcode>
<description>Comando fallito. Ordine in stato non depositabile</description>
</remotecommand>
oppure con formato plaintext, per un comando fallito:
DESCRIZIONE=Comando fallito. Ordine in stato non depositabile&SRC=002&PRC=002
Per alcuni comandi, di cui si renda necessaria una risposta di tipo ok o ko, verrà restituita in xml la
variabile respcode e SRC in formato plain text, con i seguenti valori:
•
000: esito positivo
•
<>000: esito negativo
Per alcuni comandi i record presenti nella risposta sono più d'uno indicando così una risposta
composta da più valori, come ad esempio il comando ORDER_STATE che torna i valori degli ordini
ricercati.
18
PagOnline
Allegato Tecnico
10. API comandi
10.1 Comando CONFIRM
Con questo comando è possibile eseguire l'operazione di deposito di un ordine precedentemente
autorizzato, ed è ammessa solo per gli ordini in stato approvato (OK), quindi inseriti con
flagDeposito=N ed entro il periodo di 30 giorni di calendario.
Una volta confermato, l'ordine passa da stato OK a stato IC. Nel caso invece non venga confermato
entro i 30 giorni, l'ordine viene messo in stato scaduto (EX). Durante il periodo in cui l'ordine è
approvato il plafond della carta resta bloccato .
Nome
Tipo
Descrizione
Valori consentiti
numeroCommerciante
Numerico
Codice identificativo del merchant
stabilimento
Numerico
Numero identificativo dello
stabilimento del merchant
userID
Alfanumerico
Nome utente per l'accesso al sistema di
pagamento
password
Alfanumerico
Password per l'accesso al sistema di
pagamento
tipoComando
Alfanumerico
Comandi eseguibili
CONFIRM
formatoRisposta
Alfanumerico
Tipo di formato della risposta
xml, plaintext
numeroOrdine
Alfanumerico
Numero dell'ordine di cui depositare il
pagamento
totaleOrdine
Numerico
Importo da depositare
mac
Alfanumerico
Stringa crittografica a garanzia
dell'integrità dei dati
Tabella 10: Parametri obbligatori per l'invio del comando CONFIRM
Risposta xml
<?xml version="1.0" ?>
<remotecommand>
<commandname>CONFIRM</commandname>
<respcode>0</respcode>
<description>Comando eseguito con successo</description>
</remotecommand>
Risposta plaintext
DESCRIZIONE=Comando eseguito con successo&SRC=000&PRC=000
19
Interi in formato
standard ISO
PagOnline
Allegato Tecnico
10.2 Comando CANCEL
Con questo comando è possibile stornare il pagamento di un ordine. Esistono due tipologie di
storno:
• storno di un ordine approvato e depositato
• storno di un ordine solo approvato
Limiti di tempo per le chiamate:
• storno di un ordine approvato e depositato (da effettuarsi entro le ore 23:59)
• annullo di un ordine solo approvato (da effettuarsi entro 30 giorni di calendario)
Nome
Tipo
Descrizione
Valori consentiti
numeroCommerciante
Numerico
Codice identificativo del merchant
stabilimento
Numerico
Numero identificativo dello
stabilimento del merchant
userID
Alfanumerico
Nome utente per l'accesso al sistema di
pagamento
password
Alfanumerico
Password per l'accesso al sistema di
pagamento
tipoComando
Alfanumerico
Comandi eseguibili
CANCEL
formatoRisposta
Alfanumerico
Tipo di formato della risposta
xml, plaintext
numeroOrdine
Alfanumerico
Numero dell'ordine di cui stornare il
pagamento
totaleOrdine
Numerico
Importo da stornare
mac
Alfanumerico
Stringa crittografica a garanzia
dell'integrità dei dati
Tabella 11: Parametri obbligatori per l'invio del comando CANCEL
Risposta xml
<?xml version="1.0" ?>
<remotecommand>
<commandname>CANCEL</commandname>
<respcode>0</respcode>
<description>Comando eseguito con successo</description>
</remotecommand>
Risposta plaintext
DESCRIZIONE=Comando eseguito con successo&SRC=000&PRC=000
20
Interi in formato
standard ISO
PagOnline
Allegato Tecnico
10.3 Comando ORDER_STATE
Con questo comando è possibile richiedere lo stato di uno solo ordine per volta. Come risposta a
questo comando si ottiene un tracciato xml o plaintext con lo stato dell'ordine.
Il comando è utile se si vuole conoscere la situazione di un ordine pendente in tempi
ragionevolmente brevi.
Importante: Per essere certi del consolidamento degli stati di un ordine, è necessario utilizzare
questa funzionalità riferendosi a ordini effettuati almeno 4 ore e 10 minuti prima.
Nome
Tipo
Descrizione
Valori consentiti
numeroCommerciante
Numerico
Codice identificativo del merchant
stabilimento
Numerico
Numero identificativo dello
stabilimento del merchant
userID
Alfanumerico
Nome utente per l'accesso al sistema di
pagamento
password
Alfanumerico
Password per l'accesso al sistema di
pagamento
tipoComando
Alfanumerico
Comandi eseguibili
ORDER_STATE
formatoRisposta
Alfanumerico
Tipo di formato della risposta
xml, plaintext
numeroOrdine
Alfanumerico
Numero dell'ordine di cui ricercare il
pagamento
mac
Alfanumerico
Stringa crittografica a garanzia
dell'integrità dei dati
Tabella 12: Parametri obbligatori per l'invio del comando ORDER_STATE
Risposta xml
<xml version="1.0" ?>
<remotecommand>
<commandname>ORDER_STATE</commandname>
<orderdata>
<orderid>1</orderid>
<datacreazione>2003-03-27 15:00:35.178884</datacreazione>
<datamodifica>2003-03-31 14:59:38.969971</datamodifica>
<totale>1000</totale>
<stato>KO</stato>
</orderdata>
</remotecommand>
Risposta plaintext
PAYMENTTYPE=CartCred&AMOUNT=100&DEPOSITAMOUNT=100&OBJECT=PAYMENT&TIMEMODIFIED=25.04.200
9+00%3A05&STATE=EX&ORDERNUMBER=1&CURRENCY=978&APPROVEAMOUNT=100&TIMECREATED=25.03.2009+
16%3A38&AMOUNTEXP10=-2
21
PagOnline
Allegato Tecnico
10.4 Comando SEND_STATE
Con questo comando è possibile richiedere l'invio alle proprie listener di tutti i dati di un
determinato ordine. Non si ottengono dati di risposta a questo comando, ma solo l'esito della
richiesta stessa (si riceve ovviamente anche l'evento).
La chiamata di invio del listener da remoto non genera nessuna risposta per il chiamante e non dà
nessuna garanzia di invio del listener in quanto non è un comando a risposta, ma una richiesta di
invio messaggio http, ed in quanto tale soggetto a problemi di rete e quant'altro; la risposta positiva
al comando indica solamente che la richiesta è stata correttamente recepita dal sistema, che
provvederà ad esaudirla.
La chiamata di invio del listener da backoffice genera invece anche una risposta xml con l'esito
dell'invio del listener all'esercente. Se l'esercente desidera chiamare un URL per avere come risposta
lo stato di un ordine e l'esito positivo o negativo della interrogazione, dovrebbe utilizzare la
chiamata all'API del comando ORDER_STATE (v. sez. 10.3).
Nome
Tipo
Descrizione
Valori consentiti
Parametri obbligatori
numeroCommerciante
Numerico
Codice identificativo del merchant
stabilimento
Numerico
Numero identificativo dello
stabilimento del merchant
userID
Alfanumerico
Nome utente per l'accesso al sistema di
pagamento
password
Alfanumerico
Password per l'accesso al sistema di
pagamento
tipoComando
Alfanumerico
Comandi eseguibili
SEND_STATE
formatoRisposta
Alfanumerico
Tipo di formato della risposta
xml, plaintext
numeroOrdine
Alfanumerico
Numero dell'ordine di cui ricercare il
pagamento
mac
Alfanumerico
Stringa crittografica a garanzia
dell'integrità dei dati
Alfanumerico
Motivo della richiesta
Parametri facoltativi
ragioneRichiesta
Tabella 13: Parametri obbligatori e facoltativi per l'invio del comando SEND_STATE
Risposta xml
<?xml version="1.0" ?>
<remotecommand>
<commandname>SEND_STATE</commandname>
<respcode>0</respcode>
<description>Comando eseguito con successo</description>
</remotecommand>
22
PagOnline
Allegato Tecnico
Risposta plaintext
DESCRIZIONE=Comando eseguito con successo&SRC=000&PRC=000
10.5 Comando REFUND_CARD
Si possono rimborsare solo ordini in stato CONTABILIZZATO (stato CO) o che sono già stati
rimborsati parzialmente (ordini di cui è stato rimborsato un importo minore di quello totale).
•
L'annullamento del rimborso dell'ordine è effettuabile tramite l'applicativo di backoffice
nella sezione Utilità → Rimborsi (entro le ore 23.00 del giorno stesso in cui è stato richiesto
il rimborso)
•
È possibile rimborsare un ordine in più fasi fino al raggiungimento dell'importo totale
Nome
Tipo
Descrizione
Valori consentiti
Parametri obbligatori
numeroCommerciante
Numerico
Codice identificativo del merchant
stabilimento
Numerico
Numero identificativo dello
stabilimento del merchant
userID
Alfanumerico
Nome utente per l'accesso al sistema di
pagamento
password
Alfanumerico
Password per l'accesso al sistema di
pagamento
tipoComando
Alfanumerico
Comandi eseguibili
REFUND_CARD
formatoRisposta
Alfanumerico
Tipo di formato della risposta
xml, plaintext
numeroOrdine
Alfanumerico
Numero dell'ordine di cui effettuare il
rimborso
totaleOrdine
Numerico
Importo dell'ordine da rimborsare
mac
Alfanumerico
Stringa crittografica a garanzia
dell'integrità dei dati
Alfanumerico
Motivo della richiesta
Interi in formato
standard ISO
Parametri facoltativi
ragioneRichiesta
Tabella 14: Parametri obbligatori e facoltativi per l'invio del comando REFUND_CARD
23
PagOnline
Allegato Tecnico
Risposta xml
<?xml version="1.0" ?>
<remotecommand>
<commandname>REFUND_CARD</commandname>
<respcode>0</respcode>
<description>Comando eseguito con successo</description>
</remotecommand>
Risposta plaintext
DESCRIZIONE=Comando eseguito con successo&SRC=000&PRC=000
10.7 Comando DAILY_REPORT
Il comando server to server permette di richiamare uno o tutti gli ordini in stato
CONTABILIZZATO (stato CO), in stato RIMBORSATO o PARZIALMENTE RIMBORSATO
(CT, CP) o TUTTI gli ordini e il relativo stato di un determinato giorno. La risposta in questo caso
viene data solo in formato xml.
Nome
Tipo
Descrizione
Valori consentiti
numeroCommerciante
Numerico
Codice identificativo del
merchant
stabilimento
Numerico
Numero identificativo dello
stabilimento del merchant
userID
Alfanumerico
Nome utente per l'accesso al
sistema di pagamento
password
Alfanumerico
Password per l'accesso al
sistema di pagamento
tipoComando
Alfanumerico
Comandi eseguibili
DAILY_REPORT
formatoRisposta
Alfanumerico
Tipo di formato della risposta
xml
numeroOrdine
Alfanumerico
Numero dell'ordine di cui
ricercare il pagamento
Inserendo il simbolo asterisco
* verranno estratti tutti gli
ordini del giorno selezionato
giornoReport
Alfanumerico
Data dell'ordine o della lista
degli ordini
yyyy-mm-dd (es. 2010-0225)
dailyStato
Alfanumerico
Stato dell'ordine
CONTABILIZZATI,
RIMBORSATI,
TUTTI
mac
Alfanumerico
Stringa crittografica a garanzia
dell'integrità dei dati
Tabella 15: Parametri obbligatori per l'invio del comando DAILY_REPORT
24
PagOnline
Allegato Tecnico
I valori ammessi per il parametro dailyStato sono:
•
CONTABILIZZATI: estrae un preciso ordine o tutti gli ordini ( numeroOrdine=*) di un
determinato giorno in stato contabilizzato (CO);
•
RIMBORSATI: estrae un preciso ordine o tutti gli ordini ( numeroOrdine=*) di un
determinato giorno per con stati stornati (IP, IT, CP, CT, RC);
•
TUTTI: estrae un preciso ordine o tutti gli ordini ( numeroOrdine=*) di un determinato
giorno.
Risposta xml
<remotecommand>
<commandname>DAILY_REPORT</commandname>
<orderdata>
<merchantid>9999888</merchantid>
<stabil>99888</stabil>
<orderid>11111111</orderid>
<stato_ordine>CO</stato_ordine>
<totale>1</totale>
<totaledepositato>1</totaledepositato>
<dataordine>2010-03-30 23:10:48</dataordine>
<datamodifica>2010-03-30 23:12:53</datamodifica>
<nomeuserins>9999888</nomeuserins>
<numerorefund>0</numerorefund>
<datarefund />
<importostornato />
<nomeuserstorno />
<stato />
<causale />
</orderdata>
</remotecommand>
Risposta xml vuota o errata
<?xml version="1.0" ?>
<remotecommand>
<commandname>DAILY_REPORT</commandname>
<respcode>1</respcode>
<description>Nessun ordine per il giorno specificato</description>
</remotecommand>
25