Autopay Online Payments è una soluzione completa per l'accettazione dei pagamenti da parte dei clienti dei negozi online, che supporta diversi metodi di pagamento disponibili sul mercato, come bonifici, Pay by link, BLIK, Google Pay, Apple Pay.
In questa documentazione troverete tutto ciò che vi serve per implementare rapidamente il gateway di pagamento nel vostro negozio online.
La documentazione sui pagamenti online Autopay comprende sezioni come Gestione delle transazioni e dei regolamenti, Estensioni aggiuntive.
Applicazione - L'applicazione mobile del partner, che comunica con la Sistema di pagamento online Autopay SDK per registrare le transazioni.
AP - Autopay S.A. Società con sede a Sopot, in Powstańców Warszawy 6, registrata presso il Tribunale distrettuale di Danzica-Nord a Danzica, Divisione commerciale VIII del Registro nazionale dei tribunali con il numero KRS 0000320590, con codice fiscale (NIP) 585-13-51-185, REGON 191781561, con capitale sociale di 2 205 500 PLN (interamente versato), sottoposta a vigilanza da parte della Commissione di vigilanza finanziaria e registrata come istituto di pagamento nazionale ai sensi dell'IP17/2013, proprietaria del Sistema.
BalancePoint (punto di regolamento) - un'entità all'interno del Sistema di pagamento che rappresenta un Negozio integrato con la Piattaforma Marketplace e che si è registrata nel Sistema di pagamento utilizzando un modulo fornito da AP al Partner.
ClientHash - un parametro nei messaggi; consente di assegnare uno strumento di pagamento (ad esempio, una carta) a un cliente in modo anonimo. Su questa base, il Partner può avviare gli addebiti successivi nel modello di pagamento automatico.
Modello di Commissione - un modello di commissione stabilito con l'integratore. Descrive i valori delle commissioni per le transazioni trasferite all'AP e all'integratore.
Giorno lavorativo - al giorno dal lunedì al venerdì, esclusi i giorni festivi polacchi.
Modulo di integrazione - una pagina web in cui è disponibile un modulo che consente al Cliente di registrarsi, modificare o aggiungere un nuovo Servizio.
Strumento di pagamento (Canale di pagamento) - un insieme di procedure o un dispositivo personalizzato concordato dal Cliente e dal suo fornitore, utilizzato dal Cliente per avviare un ordine di pagamento, ad esempio Carta, PBL.
Strumento di trasferimento elettronico - una serie di procedure o un dispositivo personalizzato concordato dal Partner e dall'AP, utilizzato dal Partner per avviare un ordine di pagamento che consente il prelievo di fondi dal saldo sul conto bancario del Partner o del Cliente e da un altro strumento di pagamento di proprietà del Partner o del Cliente. La disponibilità della funzionalità dipende da accordi individuali tra il Partner e l'AP.
Integratore - Gli integratori sono i cosiddetti partner che hanno implementato Autopay Online Payments nei loro sistemi e ne consentono l'attivazione dalle loro soluzioni. Tra gli integratori figurano entità come Shoper, Sky-Shop, Gymsteer, Selly verifications, FaniMani, AtomStore, Ebexo, Selly Azymut, PayNow, Comarch.
IPN (Notifica immediata del prodotto) - notifica immediata inviata dal Sistema di pagamento online al Servizio partner che comunica una modifica dello stato del prodotto. La struttura dell'IPN è simile a quella dell'ITN (ampliata solo dal nodo prodotto).
ITN (Notifica di transazione istantanea)- notifica immediata inviata dal Sistema di pagamento online al Servizio partner che trasmette una modifica dello stato della transazione.
ISTN (Notifica istantanea di transazione di regolamento) - notifica immediata della modifica dello stato di un'operazione di regolamento. Il sistema trasmette immediatamente le notifiche relative all'ordine di un'operazione di regolamento (eventuali ritiri/restituzioni) e alla modifica del suo stato.
ICN (Notifica di configurazione istantanea) - notifica immediata della configurazione di un negozio appena registrato, comunicazione di informazioni sulla modifica dello stato della carta del negozio (ad esempio, in caso di attivazione della carta). I messaggi ICN possono essere inviati anche in caso di modifica della configurazione del negozio, di variazione dei dati AML, di abilitazione/disabilitazione di un canale di pagamento. La fornitura di funzionalità è soggetta ad accordi individuali tra il Partner e l'AP.
Scheda - Una carta di pagamento emessa nell'ambito dei sistemi VISA e Mastercard, autorizzata dai regolamenti di tali sistemi a eseguire transazioni senza la sua presenza fisica.
Cliente (pagatore) - una persona che effettua un pagamento sul Sito web per servizi o prodotti di un Partner utilizzando il Sistema.
Cestino prodotti - Si tratta delle informazioni sulle componenti del pagamento, trasferite (nel link di pagamento) al Sistema per la successiva elaborazione. Ogni prodotto del carrello è descritto da due campi obbligatori: l'importo costituente e un campo che consente il trasferimento di parametri specifici del prodotto.
Link per il pagamento - richiesta che abilita l'inizio di una Transazione di Ingresso (descritta nella parte Inizio della transazione). Può essere utilizzato direttamente sul sito web (metodo POST), mentre nelle e-mail ai clienti deve essere utilizzato Pre-transazione per ottenere un breve link al pagamento (metodo GET).
Link di verifica - URL che indirizza al Trasferimento di verifica.
Mercato - una soluzione di pagamento che opera nell'ambito del Sistema di pagamento online Autopay. Consente al Partner di gestire una piattaforma di vendita in cui i prodotti o i servizi sono offerti ai clienti dagli Appaltatori del Partner. I modelli di regolamento avanzati per le Transazioni e le Transazioni di regolamento consentono di effettuare pagamenti direttamente dal Cliente al Contraente Partner, tenendo conto del Paniere dei prodotti. La fornitura della funzionalità è soggetta ad accordi individuali tra il Partner e AP.
Modello di pagamento - un modello in cui la commissione per la transazione effettuata viene pagata dal cliente all'AP (costo aggiunto all'importo della transazione). In questo caso, il cliente accetta anche i termini e le condizioni di AP durante il pagamento.
Modello del commerciante - un modello in cui la commissione viene regolata tra Autopay e il partner e non viene aggiunta all'importo della transazione pagato dal cliente.
Partner - l'entità destinataria dei fondi derivanti dalla vendita di prodotti o servizi distribuiti dall'Affiliato sul Sito.
Un partner, nel caso del modello Marketplace, è un'entità, che non è un consumatore, interessata a gestire l'accettazione da parte di AP dei pagamenti dovuti al partner per i prodotti o i servizi distribuiti dal partner.
Pay By Link (PBL) - uno strumento per effettuare pagamenti tramite bonifico interbancario dal conto del cliente al conto dell'AP. Dopo aver effettuato l'accesso all'online banking, i dati necessari per l'esecuzione del bonifico (dati del destinatario, numero del suo conto corrente, importo e data di esecuzione del bonifico) vengono inseriti automaticamente grazie al sistema di scambio di dati tra banca e AP.
Agente tecnico - l'entità con il diritto di accedere al Conto di pagamento del Partner, che autorizza tale accesso (consenso o accordo). Nel sistema, la procura è rappresentata dalla configurazione dell'opzione ID plenipotenziarioUn'entità può avere più deleghe per diversi Partner.
Piattaforma di mercato - piattaforma su cui è disponibile l'opzione di registrazione dei Punti di regolamento.
Pagamento automatico - pagamento effettuato senza dover inserire ogni volta i dati della Carta o i dati per autorizzare il trasferimento.
Pagamento con un solo clic - è un pagamento automatico ordinato dal cliente.
Pagamento ciclico - è un pagamento automatico ordinato senza l'intervento del cliente (da parte del Servizio partner).
Pre-transazione - collegamento specifico (eseguito in background) per il pagamento dell'ordine.
Trasferimento di verifica - La parte del processo relativa alla registrazione e alla modifica dei Servizi del Partner nel Sistema. Consiste nell'esecuzione di un trasferimento di fondi da parte del Partner per verificare i dati e il conto bancario per l'erogazione dei fondi al Partner. La verifica dei dati è un obbligo dell'AP derivante, tra l'altro, dalla legge del 16/11/2000 sulla prevenzione del riciclaggio di denaro e del finanziamento del terrorismo. Ogni trasferimento di verifica deve ricevere lo stato di verifica finale (positivo o negativo) entro 30 giorni dal pagamento della transazione. Se lo stato di verifica finale non viene fornito entro i termini sopra indicati, il sistema attribuirà automaticamente uno stato negativo. Questo processo si applica alle verifiche in cui Autopay invia una richiesta di completamento dei dati al cliente e non riceve le informazioni di ritorno necessarie per effettuare tale verifica.
Conto di pagamento (saldo) - conto di pagamento gestito da AP per il Partner, sul quale vengono raccolti i fondi depositati dai Clienti. La fornitura della funzionalità è soggetta ad accordi individuali tra il Partner e AP.
RPAN (Notifica di attivazione del pagamento ricorrente) - messaggio di attivazione del servizio di pagamento automatico.
RPDN (Notifica di disattivazione dei pagamenti ricorrenti) - messaggio di disattivazione del servizio di pagamento automatico.
Servizio - il sito web del Partner o i siti web integrati con il Sistema, dove il Cliente può acquistare prodotti o servizi dal Partner (o dalla Controparte del Partner nel caso del Marketplace).
Nel caso di un Marketplace, un oggetto nel Sistema di pagamento che rappresenta il Marketplace del Partner. Tutte le transazioni avviate da tale Marketplace sono collegate ad esso.
Specifiche - documentazione che descrive la comunicazione tra il Servizio e il Sistema.
Sistema di pagamento online AP (sistema) - una soluzione informatica e funzionale in base alla quale l'AP fornisce al Partner un'applicazione per elaborare i pagamenti dei clienti effettuati con l'uso di Strumenti di Pagamento, nonché per verificare lo stato dei pagamenti e ricevere i pagamenti.
Trasferimento veloce - esecuzione di pagamenti tramite bonifico intrabancario dal conto del Cliente al conto dell'AP. Il pagamento effettuato tramite PBL si differenzia dai pagamenti effettuati tramite PBL in quanto il Cliente deve compilare personalmente tutti i dati necessari per effettuare il trasferimento.
Transazione - indica un'operazione di pagamento ai sensi della Legge polacca del 19 agosto 2011 sui servizi di pagamento.
Transazione di ingresso - parte del processo di gestione dei pagamenti relativi al pagamento effettuato dal cliente ad AP.
Transazione di regolamento - parte del processo di elaborazione del pagamento, relativo al trasferimento effettuato da AP sul conto del Partner. Affinché venga creata una Transazione di regolamento, la Transazione di input deve essere pagata dal Cliente. Una Transazione di regolamento può riguardare una singola Transazione di ingresso (pagamento) o aggregarne diverse.
Atto - Legge polacca del 19 agosto 2011 sui servizi di pagamento.
Validità del link - parametro che specifica il momento oltre il quale il Collegamento di pagamento cessa di essere attivo. Deve essere impostato dall'utente LinkValidityTime
nel Link di pagamento.
Validità delle transazioni - parametro che specifica il momento oltre il quale il Collegamento di pagamento cessa di essere attivo. Deve essere impostato dal parametro LinkValidityTime del Collegamento di pagamento.
Widget per l'autopagamento - un meccanismo che consente il pagamento con Carta per i prodotti/servizi offerti dal Partner, in cui i dati della Carta vengono inseriti dal Cliente nel meccanismo incorporato direttamente nel sito Web del Partner. L'attivazione del formato widget della Carta richiede l'implementazione di codice JavaScript utilizzando una libreria AP dedicata.
Widget di onboarding - una soluzione che consente all'Integratore di incorporare il Modulo Integratore (preparato da Autopay) direttamente sul sito web dell'Integratore, in modo che il Partner non venga reindirizzato al dominio Autopay quando registra il proprio negozio - l'intero processo viene eseguito sul sito web del Partner.
Etichetta bianca - modello di integrazione, in cui il cliente già presente sul Servizio seleziona il canale di pagamento e ne accetta le norme e i regolamenti (a condizione che la necessità di accettarli derivi da accordi individuali tra il Partner e l'AP), e l'inizio della transazione include un'operazione completata GatewayID
(e in alcuni casi DefaultRegulationAcceptanceID
o RecurringAcceptanceID
).
Avvio di un ordine di pagamento - il momento in cui l'utente del gateway di pagamento seleziona un canale di pagamento e viene reindirizzato alla pagina corrispondente al canale di pagamento selezionato oppure (per i pagamenti automatici, i portafogli elettronici o BLIK) viene effettuato un tentativo di addebito sulla carta o sul conto presso il fornitore del canale di pagamento.
TEST
gate_host: https://testpay.autopay.eu
cards_gate_host: https://testcards.autopay.eu
PRODUZIONE
gate_host: https://pay.autopay.eu
cards_gate_host: https://cards.autopay.eu
Sul Sito del Partner, dopo aver completato l'ordine, al Cliente viene presentata la possibilità di effettuare un pagamento tramite il Sistema. Facendo clic sul link appropriato si avvia la transazione e si apre una nuova finestra:
a) una pagina dedicata del Sistema predisposta da AP, in cui al Cliente viene presentato l'elenco dei Canali di pagamento disponibili e il riepilogo dell'operazione registrata oppure
b) direttamente da un canale di pagamento (banca, BLIK o per il pagamento con carta).
Dal lato del sistema, i parametri trasmessi vengono convalidati e la transazione viene salvata con un periodo di validità prestabilito. Se, al momento della convalida, il periodo di validità del collegamento è già superato, il Cliente riceverà un messaggio appropriato (la verifica della validità della transazione avviene anche quando viene modificato lo stato di pagamento). Dopo la verifica positiva dei parametri della transazione (e dopo la selezione del Canale di pagamento), il Cliente autorizza la transazione. Nel suo titolo, oltre agli identificativi assegnati dal Sistema, può essere presente anche una descrizione fissa, concordata in anticipo tra l'AP e il Partner, oppure un valore dinamico fornito dal Partner all'inizio della transazione.
Il modello di integrazione consigliato è quello di trasmettere un messaggio per avviare una transazione in background, cioè senza reindirizzare l'utente al sistema (vedi Pre-transazione). In questo modello è possibile utilizzare forme avanzate di autorizzazione delle transazioni (WhiteLabel, pagamenti automatici, SDK mobile), diagnosi della correttezza dei parametri trasmessi e molte altre estensioni.
Una volta autorizzata la transazione (nella pagina del Canale di pagamento), il Cliente torna da questa al Sistema, dove viene automaticamente reindirizzato al Servizio del partner.
CONSIGLIO: Una descrizione dettagliata della struttura del link di ritorno si trova nella parte del file Reindirizzamento al sito del partner.
Lo stato di autorizzazione (pagamento) ricevuto dal Canale di pagamento viene trasmesso dal Sistema al Servizio partner tramite un messaggio ITN. Il Sistema continuerà a inviare messaggi fino a quando la ricezione non sarà confermata dal Servizio partner o fino alla scadenza del periodo di validità della notifica. Le transazioni pagate dopo la scadenza del periodo di validità della transazione - saranno restituite al Cliente (mittente del bonifico).
Facoltativamente, il sistema può notificare l'emissione di una transazione di regolamento
. A tal fine viene utilizzato un messaggio ISTN opportunamente modificato.
I dati richiesti scambiati durante l'integrazione differiscono per gli ambienti di test e di produzione. Di seguito è riportato un elenco dei parametri passati da AP a Partner e nella direzione inversa.
Vengono inoltre fornite informazioni generali, ad esempio i canali di pagamento attivi con grafica (come risultato dell'interrogazione dell'elenco dei canali di pagamento disponibili).
Facoltativamente, il Partner può trasmettere ulteriori dati all'AP, ad esempio: informazioni sul contenuto richiesto del carrello e sul modo in cui viene elaborato (nei report, nella fatturazione, nel pannello di amministrazione), requisiti aggiuntivi (per la ricarica del saldo prepagato). Per
pagamenti automatici BLIK anche la durata di vita predefinita dei pagamenti automatici attivati e l'etichetta predefinita dei pagamenti automatici attivati.
Nella versione minima dell'integrazione, dovrebbe essere implementato il supporto per l'avvio di una transazione, il ritorno da essa e il supporto per la comunicazione ITN.
CONSIGLIO: Si consiglia di familiarizzare con lo schema di funzionamento. Se necessario, si consiglia di familiarizzare anche con parametri o servizi aggiuntivi.
Durante il test, i campi bianchi del foglio devono essere completati e rinviati all'AP per confermare la corretta integrazione prima della migrazione all'ambiente di produzione.
CONSIGLIO: Prima della distribuzione in produzione, si consiglia di eseguire i test in conformità con le istruzioni per l'uso. scenari di prova nella versione base e, per le integrazioni più avanzate, anche in base a scenari aggiuntivi.
Il servizio del Partner che avvia la transazione trasmette al Sistema di pagamento online i parametri necessari per completare la transazione e la successiva trasmissione dello stato di pagamento.
Tutti i parametri vengono passati tramite il metodo POST (Tipo di contenuto: application/x-www-form-urlencoded).
Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi che nei valori dei parametri. I valori dei parametri trasmessi devono essere codificati in UTF-8 (e il protocollo di trasporto - codifica prima dell'invio, a meno che lo strumento utilizzato per inviare il messaggio non lo faccia da solo, esempio di codifica: URLEncode).
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione
.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | L'ID del servizio partner, assegnato durante la registrazione del servizio, identifica in modo univoco il servizio partner nel sistema di pagamento online. I numeri sono accettabili. |
2 | ID ordine | SÌ | stringa{1,32} | Identificatore della transazione, composto da un massimo di 32 caratteri alfanumerici latini. Il valore del campo deve essere unico per il Servizio partner. Sono accettati caratteri alfanumerici latini e caratteri nell'intervallo: -_ |
3 | Importo | SÌ | importo | Importo della transazione. Il punto '.' è usato come separatore decimale. Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. NOTE: Il valore ammissibile di una singola transazione nel sistema di produzione è rispettivamente:
|
4 | Descrizione | NO | stringa{1,79} | Titolo della transazione (pagamento); all'inizio del titolo del bonifico vengono inseriti gli identificativi della transazione assegnati dal Sistema di pagamento online, a cui viene aggiunto il valore di questo parametro. In alcuni casi, indipendentemente dal PA, il titolo del bonifico può essere ulteriormente modificato dalla Banca in cui è avvenuto il pagamento da parte del cliente. Il valore del parametro consente di inserire caratteri latini alfanumerici e caratteri nell'intervallo: . : - , spazio . |
5 | GatewayID | NO | intero{1,5} | Identificatore del Canale di Pagamento con cui il Cliente intende regolare il pagamento. Questo parametro è responsabile in particolare del modello di presentazione dei canali di pagamento:
|
6 | Valuta | NO | stringa{1,3} | Valuta della transazione; la valuta predefinita è il PLN (l'uso di un'altra valuta deve essere concordato durante l'integrazione). All'interno di ServiceID è supportata una sola valuta. Valori accettabili solo: PLN, EUR, GBP e USD. |
7 | Indirizzo e-mail del cliente | NO | stringa{3,255} | Indirizzo e-mail del cliente. |
19 | Tempo di validità | NO | stringa{1,19} | Tempo di scadenza della transazione; quando viene superato, il collegamento cessa di essere attivo e l'eventuale deposito viene restituito al mittente del trasferimento; valore di esempio: 2021-10-31 07:54:50; se il parametro manca, viene impostato il valore predefinito di 6 giorni. La validità massima di una transazione è di 31 giorni (se il valore del parametro è impostato più avanti di 31 giorni, il tempo di validità sarà ridotto di conseguenza). Ad esempio, una transazione iniziata il 2020-05-01 08:00:00, con ValidityTime = 2021-05-01 08:00:00, riceverà validità fino al 2020-06-01 08:00:00. (Ora in CET) |
34 | LinkValidityTime | NO | stringa{1,19} | Tempo di scadenza del link; quando questo tempo viene superato, il link diventa inattivo, ma ciò non influisce sul tempo di deposito; valore di esempio: 2014-10-30 07:54:50; assicurarsi che il tempo di transazione sia adattato al tempo di scadenza del link (potrebbe essere necessario inserire anche il parametro Tempo di validitàper estendere la sua validità standard). |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. |
La transazione viene avviata inviando una chiamata HTTPS una combinazione dei parametri di cui sopra all'indirizzo del sistema di pagamento online stabilito durante la registrazione del servizio.
IMPORTANTE: Il numero di transazioni avviate dal Partner in un minuto può essere al massimo di 100, a meno che il Partner e l'AP non concordino un limite superiore nell'ambito dell'accordo stipulato.
Esempio di avvio di una transazione:
Indirizzo:
Parametri:
ServiceID=2
OrderID=100
Importo=1,50
Hash=2ab52e6918c6ad3b69a8228a2ab815f11ad58533eeed963dd990df8d8c3709d1
Invio di un messaggio senza tutti richiesto parametri (ServiceID, OrderID, Importo e Hash) o contenenti valori errati, causerà l'interruzione del processo di pagamento con un codice di errore della transazione e un breve messaggio di errore (senza ritorno alla pagina Partner Service).
IMPORTANTE! La coppia di parametri ID servizio e ID ordine identifica univocamente la transazione. Non è consentito che il valore dell'elemento ID ordine da ripetere per l'intero periodo di servizio fornito dal Sistema a un singolo Servizio partner (ID servizio).
Il parametro opzionale GatewayID viene utilizzato per specificare il Canale di pagamento attraverso il quale deve essere effettuato il pagamento. Ciò consente di trasferire al Servizio la schermata di selezione dei canali di pagamento. L'elenco attuale degli ID dei canali di pagamento, compresi i loghi, è disponibile tramite il pulsante gatewayList metodo.
Il messaggio di avvio della transazione può essere trasmesso in background, cioè senza reindirizzare l'utente al Sistema di pagamento online. In questo modello, anche la selezione del Canale di pagamento viene effettuata dal Cliente sul Servizio partner.
Subito dopo il completamento dell'autorizzazione della transazione da parte del Cliente, quest'ultimo viene reindirizzato dal sito del Canale di Pagamento al sito online del Sistema di Pagamento, dove il Cliente viene automaticamente reindirizzato al Servizio del Partner. Il reindirizzamento avviene tramite l'invio di una richiesta HTTPS (con metodo GET) a un indirizzo di ritorno predeterminato sul Servizio del Partner. Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi che nei valori dei parametri.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
2 | ID ordine | SÌ | stringa{1,32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
Esempio di messaggio che reindirizza il Cliente dal sistema di pagamento online al Sito del Partner
https://shop_name/return_page?ServiceID=123458&OrderID=123402816&Hash=5432d69a66d721b2f5f785432bf5a1fc1b913bdb3bba465856a5c228fe95c1f8
Il Sistema trasmette le notifiche di variazione dello stato di una transazione non appena riceve tale informazione dal Canale di Pagamento e il messaggio si riferisce sempre a una singola transazione.
NOTA: Il dominio deve essere pubblico e accessibile tramite il sistema. Il dominio deve essere protetto da un certificato valido emesso da un'autorità di certificazione pubblica (Autorità di certificazione) Il server deve presentare una catena di certificati completa (Catena di fiducia) La comunicazione deve essere basata sul protocollo TLS versione 1.2 o 1.3 *Altre forme di sicurezza della connessione, ad esempio VPN, mTLS devono essere concordate individualmente con il responsabile dell'implementazione.
Esempio:
https://shop_name/status_receive
La notifica di una modifica dello stato di una transazione in ingresso consiste nell'invio da parte del Sistema di un documento XML contenente i nuovi stati della transazione.
Il documento viene inviato tramite HTTPS (porta predefinita 443) - utilizzando il metodo POST, come parametro HTTP con il nome transazioni. Questo parametro viene memorizzato utilizzando il meccanismo di crittografia di trasporto Base64.
Formato del documento (XML)
<?xml version="1.0" encoding="UTF-8"?>
<transactionList>
<serviceID>ServiceID</serviceID>
<transactions>
<transaction>
<orderID>OrderID</orderID>
<remoteID>RemoteID</remoteID>
<amount>999999.99</amount>
<currency>PLN</currency>
<gatewayID>GatewayID</gatewayID>
<paymentDate>YYYYMMDDhhmmss</paymentDate>
<paymentStatus>PaymentStatus</paymentStatus>
<paymentStatusDetails>PaymentStatusDetails</paymentStatusDetails>
</transaction>
</transactions>
<hash>Hash</hash>
</transactionList>
NOTA: A transazioni può contenere solo un nodo transazione (quindi la notifica riguarda sempre una transazione). I valori degli elementi ID ordine e importo relativi a ciascuna transazione sono identici ai valori dei campi corrispondenti forniti dal Servizio partner all'inizio della rispettiva transazione. Fanno eccezione i modelli in cui la commissione viene aggiunta all'importo della transazione. In questi casi, il valore dell'importo nell'ITN viene aumentato di questa commissione. La convalida degli importi può quindi essere effettuata sulla base del campo opzionale ITN importo iniziale. Tuttavia, questo campo deve essere richiesto durante l'integrazione.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,10} | L'ID del servizio partner, assegnato durante la registrazione del servizio, identifica in modo univoco il servizio partner nel sistema di pagamento online. I numeri sono accettabili. |
2 | ID ordine | SÌ | stringa{1,32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. |
3 | ID remoto | SÌ | stringa{1,20} | Identificatore alfanumerico della transazione assegnato dal sistema di pagamento online. Vale la pena di memorizzarlo insieme all'ordine per l'ulteriore elaborazione (per transazioni multiple con la stessa ID ordine, per le restituzioni, ecc.) Tale situazione può verificarsi, ad esempio, se il Cliente cambia il Canale di pagamento, richiama la stessa transazione dalla cronologia del browser, ecc. Il sistema consente di bloccare tali casi, ma l'opzione è sconsigliata (non sarebbe possibile pagare per una transazione abbandonata). |
5 | importo | SÌ | importo | Importo della transazione. Il punto '.' è usato come separatore decimale. Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. |
6 | valuta | SÌ | stringa{1,3} | Valuta della transazione. |
7 | gatewayID | NO | stringa{1,5} | Identificatore del Canale di pagamento attraverso il quale il Cliente ha regolato il pagamento. |
8 | data di pagamento | SÌ | stringa{14} | L'ora in cui la transazione è stata autorizzata, trasmessa nel formato YYYMMDDhhmmss. (ora CET) |
9 | Stato del pagamento | SÌ | enum | Stato dell'autorizzazione alla transazione, assume valori (descrizione dei cambiamenti di stato più avanti):
|
10 | pagamentoStatoDettagli | NO | stringa{1,64} | Stato dettagliato della transazione, valore che può essere ignorato dal Servizio partner. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
CONSIGLIO: Elemento hash (messaggio) viene utilizzato per autenticare
il documento. Per una descrizione di come viene calcolato l'hash, vedere la sezione Sicurezza delle transazioni.
In risposta alla notifica, ci si aspetta uno stato HTTP di 200 (OK) e
un testo in formato XML (Base64 non codificato), restituito dal metodo
Servizio Partner nella stessa sessione HTTP, contenente una conferma di ricezione
dello stato della transazione.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8"?>
<confirmationList>
<serviceID>ServiceID</serviceID>
<transactionsConfirmations>
<transactionConfirmed>
<orderID>OrderID</orderID>
<confirmation>Confirmation</confirmation>
</transactionConfirmed>
</transactionsConfirmations>
<hash>Hash</hash>
</confirmationList>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,10} | ID servizio partner derivato dal messaggio. |
2 | ID ordine | SÌ | stringa{32} | L'identificativo della transazione, assegnato nel Servizio partner e comunicato all'inizio della transazione, ricavato dal messaggio. |
3 | conferma | SÌ | stringa{1,25} | L'elemento è utilizzato per comunicare lo stato di verifica dell'autenticità della transazione da parte del Servizio partner. Il valore dell'elemento è determinato dalla verifica della correttezza dei valori degli elementi serviceID e valuta parametri, confrontando i valori dei parametri ID ordine e importo nel messaggio di notifica e nel messaggio che avvia la transazione, e verificando la coerenza dell'hash calcolato dai parametri del messaggio con il valore passato nel campo hash del messaggio. Fanno eccezione i modelli in cui la commissione viene aggiunta all'importo della transazione. In questi casi, il valore dell'importo nell'ITN viene aumentato di questa commissione. La convalida dell'importo può quindi essere effettuata sulla base del campo opzionale ITN startAmount. Tuttavia, questo campo deve essere richiesto durante l'integrazione. Per l'elemento sono previsti due valori conferma:
|
n.d. | hash | SÌ | stringa{1,128} | L'elemento hash (nel messaggio di risposta) viene utilizzato per autenticare la risposta e viene calcolato a partire dai valori dei parametri della risposta. Per una descrizione di come viene calcolato l'hash, vedere la sezione Sicurezza delle transazioni. |
In assenza di una risposta corretta alle notifiche inviate, il Sistema farà ulteriori tentativi per comunicare lo stato più recente della transazione dopo che è trascorso il tempo specificato. Il Servizio partner deve eseguire la propria logica di business (ad esempio, l'invio di un'e-mail di conferma) solo dopo il primo <messaggio relativo a un determinato stato di pagamento.
CONSIGLIO: Vale la pena di dare un'occhiata a Schema di ritrasmissione dei messaggi ITN/ISTN/IPN/RPAN/RPDN.
Il metodo di pagamento scelto dal cliente invierà uno stato di IN ATTESA ogni volta. Nel successivo messaggio ITN, il sistema fornirà lo stato SUCCESSO o FALLIMENTO.
NOTA Il IN ATTESA lo stato non viene inviato se:
Per una singola transazione (con parametri unici ID ordine e ID remoto), non ci può essere un cambiamento di stato da SUCCESSO è IN ATTESA o SUCCESSO è FALLIMENTO.
In ogni caso, potrebbe verificarsi una modifica dello stato dei dettagli. pagamentoStatoDettagli (i messaggi successivi relativi a un cambiamento di stato dei dettagli sono solo a titolo informativo e non devono portare a ripetere l'invio del servizio/prodotto a pagamento, ecc.)
In casi particolari di utilizzo, può verificarsi un cambiamento di stato:
a) FALLIMENTO è SUCCESSO (ad esempio, dopo che un consulente AP ha approvato una transazione pagata con un importo errato. Questo comportamento richiede accordi commerciali speciali e non è abilitato per impostazione predefinita),
b) SUCCESSO è FALLIMENTO (ad esempio, dopo l'attivazione di più transazioni con la stessa ID ordine ma diverso ID remoto). Un caso del genere si verifica quando un Cliente avvia più pagamenti con lo stesso ID ordine (ad esempio, il Cliente cambia la sua decisione su quale Canale di Pagamento vuole pagare la transazione). Ciascuno dei pagamenti da lui avviati genera ITN e le singole transazioni devono essere distinte con il simbolo ID remoto parametro. Poiché l'ora di ricezione del FALLIMENTO Lo stato può variare notevolmente, può succedere che tale stato venga ricevuto dopo che SUCCESSO è stato ricevuto (ovviamente con un diverso ID remoto). In tal caso, il messaggio ITN deve essere confermato, ma non deve comportare la cancellazione dello stato della transazione nel sistema del partner.
In un modello in cui non è necessario notificare al Cliente via email/sms gli stati di non successo, la quantità di informazioni
memorizzati nel database del servizio e il monitoraggio delle modifiche del RemoteID può essere ridotto.
Tutto ciò che serve è:
per gli stati diversi da SUCCESSO, ogni volta confermate l'ITN con la struttura di risposta corretta, CONFERMATO e il corretto conteggio del valore del campo Hash,
in caso di ricezione di Primo stato SUCCESSO, aggiungono anche l'aggiornamento dello stato, della sua ora e del RemoteID nel database del Servizio e l'esecuzione dei processi aziendali (notifiche al Cliente di cambiamenti di stato, esecuzione di servizi a pagamento/spedizione di prodotti, ecc,)
nel caso di una successiva SUCCESSO stato, confermando ogni volta l'ITN con una struttura di risposta corretta, CONFERMATO stato e conteggiato correttamente il valore del campo Hash, senza aggiornare il database del Servizio e senza processi aziendali.
In un modello in cui l'intera storia dei cambiamenti di stato delle transazioni e/o la notifica al cliente di importanti cambiamenti di stato
di transazioni, si dovrebbe utilizzare una logica che si avvicina alla descrizione seguente.
Il sistema di pagamento online utilizza diversi meccanismi per aumentare
la sicurezza delle transazioni effettuate con esso. La trasmissione tra tutte le parti coinvolte in una transazione avviene tramite una
connessione sicura basata sul protocollo TLS con una chiave a 2048 bit.
Inoltre, la comunicazione è protetta da una funzione di hash calcolata a partire dai valori dei campi del messaggio e dalla chiave condivisa (la chiave condivisa stessa è memorizzata nel sistema in forma criptata con l'algoritmo AES-ECB).
Come funzione di hash viene utilizzato l'algoritmo SHA256 o SHA512 (metodo determinato in fase di configurazione del rispettivo Servizio partner nel sistema di pagamento online). La funzione predefinita è SHA256.
Descrizione di come calcolare il valore della funzione hash ed esempi di calcolo per messaggi di base.
NOTA: Gli esempi non tengono conto di tutti i possibili campi opzionali; pertanto, se tali campi sono presenti in un determinato messaggio, devono essere inclusi nella funzione abbreviata in un ordine coerente con il numero accanto al campo.
Il valore della funzione hash, utilizzato per autenticare il messaggio, è calcolato da una stringa contenente i campi concatenati del messaggio (concatenazione di campi). I valori dei campi sono concatenati, senza i nomi dei parametri, e un separatore (nella forma del carattere |) viene inserito tra
valori consecutivi (non vuoti). L'ordine in cui i campi sono incollati segue l'ordine in cui sono presenti nell'elenco dei parametri nella documentazione.
IMPORTANTE! Se non c'è alcun parametro opzionale nel messaggio o in caso di un valore di parametro vuoto, non utilizzare il separatore!
Alla stringa così creata viene aggiunta alla fine una chiave, condivisa tra il Servizio partner e il sistema di pagamento online. Dalla stringa così creata, si calcola il valore della funzione di hash che costituisce
il valore del campo Hash del messaggio.
Hash = function(field_value_1_message + "|" + field_value_2_message + "|" + ... + "|" + field_value_n_message + "|" + shared_key);
Dati di servizio dei partner:
ServiceID = 2chiave condivisa = 2test2
Indirizzo del gateway https://{gate_host}/pathway
a. Inizio della transazione
Chiamata POST senza cestino, con parametri:
ServiceID=2
OrderID=100
Importo=1,50
Hash=2ab52e6918c6ad3b69a8228a2ab815f11ad58533eeed963dd990df8d8c3709d1
dove
Hash=SHA256(“2|100|1.50|2test2”)
b. Inizio della transazione. Chiamata POST con il carrello.
CONSIGLIO: Opzione discussa in dettaglio nella sezione Cestino prodotti.
ServiceID = 2
OrderID = 100
Importo = 1,50
Prodotto (descritto di seguito)
chiave condivisa = 2test2
Carrello prodotti (XML)
<?xml version="1.0" encoding="UTF-8"?>
<productList>
<product>
<subAmount>1.00</subAmount>
<params>
<param name="productName" value="Nazwa produktu 1" />
</params>
</product>
<product>
<subAmount>0.50</subAmount>
<params>
<param name="productType" value="ABCD" />
<param name="ID" value="EFGH" />
</params>
</product>
</productList>
Dopo la codifica con la funzione base64, otteniamo il valore del parametro Prodotto:
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cHJvZHVjdExpc3Q+PHByb2R1Y3Q+PHN1YkFtb3VudD4xLjAwPC9zdWJBbW91bnQ+PHBhcmFtcz48cGFyYW0gbmFtZT0icHJvZHVjdE5hbWUiIHZhbHVlPSJOYXp3YSBwcm9kdWt0dSAxIiAvPjwvcGFyYW1zPjwvcHJvZHVjdD48cHJvZHVjdD48c3ViQW1vdW50PjAuNTA8L3N1YkFtb3VudD48cGFyYW1zPjxwYXJhbSBuYW1lPSJwcm9kdWN0VHlwZSIgdmFsdWU9IkFCQ0QiIC8+PHBhcmFtIG5hbWU9IklEIiB2YWx1ZT0iRUZHSCIgLz48L3BhcmFtcz48L3Byb2R1Y3Q+PC9wcm9kdWN0TGlzdD4=
Il valore Hash viene calcolato come segue:
Hash=SHA256(“2|100|1.50|PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cHJvZHVjdExpc3Q+PHByb2R1Y3Q+PHN1YkFtb3VudD4xLjAwPC9zdWJBbW91bnQ+PHBhcmFtcz48cGFyYW0gbmFtZT0icHJvZHVjdE5hbWUiIHZhbHVlPSJOYXp3YSBwcm9kdWt0dSAxIiAvPjwvcGFyYW1zPjwvcHJvZHVjdD48cHJvZHVjdD48c3ViQW1vdW50PjAuNTA8L3N1YkFtb3VudD48cGFyYW1zPjxwYXJhbSBuYW1lPSJwcm9kdWN0VHlwZSIgdmFsdWU9IkFCQ0QiIC8+PHBhcmFtIG5hbWU9IklEIiB2YWx1ZT0iRUZHSCIgLz48L3BhcmFtcz48L3Byb2R1Y3Q+PC9wcm9kdWN0TGlzdD4=|2test2”)
Dati di servizio dei partner:
ServiceID = 2
chiave condivisa = 2test2
<https://shop_name/strona_powrotu?ServiceID=2>&OrderID=100&Hash=254eac9980db56f425acf8a9df715cbd6f56de3c410b05f05016630f7d30a4ed
dove
Hash=SHA256("2|100|2test2")
Dati di servizio dei partner:
serviceID = 1
chiave condivisa = 1test1
ITN (XML)
<?xml version="1.0" encoding="UTF-8"?>
<transactionList>
<serviceID>1</serviceID>
<transactions>
<transaction>
<orderID>11</orderID>
<remoteID>91</remoteID>
<amount>11.11</amount>
<currency>PLN</currency>
<gatewayID>1</gatewayID>
<paymentDate>20010101111111</paymentDate>
<paymentStatus>SUCCESS</paymentStatus>
<paymentStatusDetails>AUTHORIZED</paymentStatusDetails>
</transaction>
</transactions>
<hash>a103bfe581a938e9ad78238cfc674ffafdd6ec70cb6825e7ed5c41787671efe4</hash>
</transactionList>
dove
Hash=SHA256(“1|11|91|11.11|PLN|1|20010101111111|SUCCESS|AUTHORIZED|1test1”)
Esempio di risposta (XML)
<?xml version="1.0" encoding="UTF-8"?>
<confirmationList>
<serviceID>1</serviceID>
<transactionsConfirmations>
<transactionConfirmed>
<orderID>11</orderID>
<confirmation>CONFIRMED</confirmation>
</transactionConfirmed>
</transactionsConfirmations>
<hash>c1e9888b7d9fb988a4aae0dfbff6d8092fc9581e22e02f335367dd01058f9618</hash>
</confirmationList>
dove il valore
Hash=SHA256("1|11|CONFIRMED|1test1");
Dati di servizio dei partner:
ServiceID = 100
MessageID = 11111111111111111111111111111111
Valute = PLN,EUR
Lingua = IT
chiave condivisa = 1test1
dove il valore
Hash=SHA256('100|11111111111111111111111111111111|PLN,EUR|PL|1test1')
La risposta alla chiamata di cui sopra può essere la seguente (nota: nessun campo hash nella risposta):
{
"result": "OK",
"errorStatus": null,
"description": null,
"gatewayGroups": [
{
"type": "PBL",
"title": "Przelew internetowy",
"shortDescription": "Select the bank from which you want to order the payment",
"description": null,
"order": 1,
"iconUrl": null
},
{
"type": "BNPL",
"title": "Buy now, pay later",
"shortDescription": "Buy now, pay later",
"description": null,
"order": 2,
"iconUrl": null
}
],
"serviceID": "10000",
"messageID": "2ca19ceb5258ce0aa3bc815e80240000",
"gatewayList": [
{
"gatewayID": 106,
"name": "PBL test payment",
"groupType": "PBL",
"bankName": "NONE",
"iconURL": "https://testimages.autopay.eu/pomoc/grafika/106.gif",
"state": "OK",
"stateDate": "2023-10-03 14:35:01",
"description": "Test payment",
"shortDescription": null,
"descriptionUrl": null,
"availableFor": "BOTH",
"requiredParams": ["Nip"],
"mcc": {
"allowed": [1234, 9876],
"disallowed": [1111]
},
"inBalanceAllowed": true,
"minValidityTime": null,
"order": 1,
"currencies": [
{
"currency": "PLN",
"minAmount": 0.01,
"maxAmount": 5000.00
}
],
"buttonTitle": "Pay"
},
{
"gatewayID": 701,
"name": "Pay later with Payka",
"groupType": "BNPL",
"bankName": "NONE",
"iconUrl": "https://testimages.autopay.eu/pomoc/grafika/701.png",
"state": "OK",
"stateDate": "2023-10-03 14:37:10",
"description": "<div class=\"payway_desc\"><h1>Cost details</h1><p>Pay later - one-off up to 45 days (...). Offer details at: <a href="?r="https://payka.pl\" target=\"_blank\">Payka.pl</a></p></div>",
"shortDescription": "Pay later - in one go up to 45 days or in several equal instalments",
"descriptionUrl": null,
"availableFor": "B2C",
"requiredParams": [],
"mcc": null,
"inBalanceAllowed": false,
"minValidityTime": 60,
"order": 2,
"currencies": [
{
"currency": "PLN",
"minAmount": 49.99,
"maxAmount": 7000.00
}
],
"buttonTitle": "Pay"
}
]
}
Il supporto per la preautorizzazione della carta fornisce la funzionalità di bloccare i fondi sulla carta del cliente per un certo periodo di tempo (ad esempio, predeterminato durante la creazione del blocco) e poi effettuare un addebito. Un caso particolare è quello in cui il blocco viene rimosso senza che venga detratto alcun importo (ad esempio, il servizio al cliente non è stato eseguito).
Tutte queste operazioni (blocco dei fondi, addebito, ritiro del blocco) devono essere ordinate tramite l'API del Sistema di pagamento Autopay. Se non c'è un ordine di addebito sulla carta durante il periodo di validità della transazione che ha creato il blocco, il sistema rilascerà i fondi, notificandovi con un messaggio standard di Transaction Status Change (ITN).
Anche altre operazioni (addebito riuscito, blocco della carta e successivo addebito) comportano l'invio di un messaggio ITN. Questo messaggio è l'unica informazione vincolante sulla modifica dello stato di una transazione e (utilizzato insieme al servizio Stato della transazione; si veda la sezione Richiesta di informazioni sullo stato di una transazione), aiuta a gestire la transazione senza interrompere la sessione con l'utente (anche in caso di vari problemi di rete). Riconoscimento delle operazioni sincrone (nodo confermaservono solo a presentare informazioni preliminari sull'ordine).
È possibile distinguere tra 3 modi fondamentali di posizionare un lucchetto su una carta:
a) Stabilire un blocco durante l'autorizzazione di un pagamento una tantum (cfr. Schema A per la preautorizzazione). Il cliente compila il formato della carta, dopo l'avvio della transazione, che il Partner indica nei parametri di avvio:
- canale di pagamento con carta (GatewayID=1500) e
- il desiderio di assicurarsi i fondi piuttosto che di impegnarli (Mantenere=vero)
b) Assunzione di un blocco al momento dell'avvio di un pagamento automatico (registrazione della carta nel Servizio o nell'Applicazione mobile) (cfr. Schema B per la preautorizzazione)).
CONSIGLIO: l'intero ciclo e tutti gli eventi di pagamento automatico secondo la documentazione, modificati dal momento in cui la carta viene effettivamente addebitata e il pagamento automatico viene impostato - nel modello di pre-autorizzazione, è il transazioneCancellare che provoca questi eventi.
Il cliente compila il formato della carta, una volta avviata la transazione, che il Partner indica nei parametri di avvio:
- canale di pagamento con carta (GatewayID=1503),
- il fatto di accettare le regole del servizio di pagamento automatico
fornito da AP (RecurringAcceptanceState=ACCEPTEDo dopo il o dopo gli accordi commerciali PROMEMORIA/FORZA)- la scelta di inizializzare un pagamento automatico con un potenziale addebito sulla carta (RecurringAction=INIT_WITH_PAYMENT)
- il desiderio di assicurarsi i fondi piuttosto che di impegnarli (Mantenere=vero)
c) Stabilire un blocco utilizzando una scheda salvata in precedenza (cfr. Schema C per la preautorizzazione).
CONSIGLIO: L'intero ciclo e tutti gli eventi di pagamento automatico secondo la documentazione, modificati dal momento in cui la carta viene effettivamente addebitata e il pagamento automatico viene impostato - nel modello di pre-autorizzazione, è il momento in cui la carta viene addebitata e il pagamento automatico viene impostato. transazioneCancellare che provoca questi eventi.
Il cliente non compila il modulo della carta, ma ha luogo una pre-transazione backend (senza reindirizzamento) in cui il partner indica i parametri di partenza:
- canale di pagamento con carta (GatewayID=1503)
- indicazione di una scheda precedentemente aggiunta (ClientHash da RPAN)
- scelta del metodo di pagamento automatico (RecurringAction=MANUAL)
- il desiderio di assicurarsi i fondi piuttosto che di impegnarli (Mantenere=vero)
Ognuno di questi metodi per stabilire un blocco dà luogo a un messaggio ITN, il cui stato indica il risultato dell'autorizzazione della transazione. Oltre al messaggio standard
in caso di blocco dei fondi, il Sistema può fornire nello stato dell'ITN paymentStatus=ON_HOLDche conferma la creazione di un blocco di fondi sulla carta del cliente. Inoltre, l'ITN, come standard,
contengono un identificatore di transazione globale (ID remoto), che sarà necessario per il successivo caricamento del blocco stabilito.
Una volta effettuato il blocco, il Partner può effettuare un ordine di addebito.
su una carta autorizzata in precedenza (vedere Schema D per la preautorizzazione).Per
a questo scopo, è necessario richiamare il servizio dedicato: transazioneCancellare
(https://{gate_host}/webapi/transactionClear) con i parametri corrispondenti. Tutti i parametri vengono passati tramite il metodo POST (Tipo di contenuto: application/x-www-form-urlencoded
). Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi dei parametri che nei valori. Il
i valori dei parametri passati devono essere codificati in UTF-8.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
2 | MessaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio con una lunghezza di 32 caratteri alfanumerici latini (ad esempio su base UID); il valore del campo deve essere unico e indicare uno specifico ordine di pagamento sul Servizio partner. |
3 | ID remoto | SÌ | stringa{1,20} | L'identificativo alfanumerico della transazione assegnato dal Sistema e trasmesso al Partner nel messaggio ITN della transazione in entrata. La sua indicazione comporterà l'addebito sulla carta autorizzata nella transazione dell'importo indicato. ID remotose è in uno stato di blocco (stato ON_HOLD). |
4 | Importo | SÌ | importo | Importo dell'addebito (non deve essere superiore all'importo del blocco); si usa un punto come separatore decimale - ".". Formato: 0,00. |
5 | Prodotti | SÌ | stringa{1,10000} | Informazioni sui prodotti inclusi nella transazione, trasmesse come XML codificato con protocollo di trasporto Base64. La struttura deve includere tutti i prodotti specificati nella preautorizzazione, ma può essere semplificata (solo productID e idBalancePoint saranno presi in considerazione per identificare il prodotto il cui importo deve essere aggiornato, e il nuovo importo deve essere specificato in subImporto ). /Richiesto per più prodotti specificati nella pre-autorizzazione. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
Per una corretta interrogazione, deve essere definita un'intestazione HTTP con un contenuto appropriato.
inviato insieme ai parametri passati. L'allegato
L'intestazione deve essere denominata "BmHeader" e avere le seguenti caratteristiche
valore "pay-bm", nella sua interezza dovrebbe avere il seguente aspetto "BmHeader: pay-bm". In caso di messaggio valido, viene restituito un testo in formato XML (nella stessa sessione HTTP), contenente la conferma dell'operazione o una descrizione dell'errore.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<balancePayoff>
<serviceID>ServiceID</serviceID>
<messageID>MessageID</messageID>
<remoteOutID>RemoteOutID</remoteOutID>
<hash>Hash</hash>
</balancePayoff>
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<balancePayoff>
<balancePointID>BalancePointID</balancePointID>
<messageID>MessageID</messageID>
<remoteOutID>RemoteOutID</remoteOutID>
<hash>Hash</hash>
</balancePayoff>
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,32} | ID servizio partner. Derivato da una richiesta di metodo. Richiesto per la conferma=CONFIRMED. |
2 | messaggioID | SÌ | stringa{1,20} | Identificatore pseudocasuale del messaggio di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Derivato dalla richiesta del metodo. Richiesto per la conferma=CONFIRMED. |
3 | conferma | SÌ | stringa{1,100} | Stato di conferma dell'ordine. Può assumere due valori: - CONFERMATO - l'operazione è riuscita. NOTA: Questo non significa che il carico venga eseguito! Il sistema consegnerà in modo asincrono l'ITN con paymentStatus=SUCCESS. - NON CONFERMATO - l'operazione non è andata a buon fine. |
4 | motivo | NO | stringa{1,1000} | Spiegazione dei dettagli del trattamento della richiesta.... |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. Richiesto per la conferma=CONFIRMED. |
Una volta stabilito il blocco, il Partner può ordinare di rilasciarlo senza alcuna detrazione di fondi (cfr. Schema E per la preautorizzazione)). Per questa operazione, utilizzare il servizio releaseHold
(Vedi Annullamento di una transazione non pagata). Quando viene avviata con successo l'apertura di un blocco (risposta corretta a un annullamento
), il sistema fornirà in modo asincrono un ITN con la transazione
paymentStatus=FAILURE e paymentStatusDetails=CANCELLATO.
In caso di inattività del Partner (dopo l'impostazione del blocco) per un periodo di tempo predeterminato
periodo di validità, la transazione viene rilasciata dal Sistema (senza
dedurre eventuali fondi) (Cfr. Schema F per la preautorizzazione). Il sistema annullerà la transazione, rimuoverà il blocco e fornirà all'ITN l'informazione paymentStatus=FAILURE e paymentStatusDetails=CANCELLATO.
La pre-transazione estende il modello standard di avvio della transazione gestendo esigenze specifiche:
ordinare un link di pagamento sulla base dei parametri presentati
addebito da parte del cliente (se non è necessaria un'ulteriore autorizzazione da parte del cliente)
verificare la correttezza del link di pagamento prima che il Cliente venga reindirizzato al Sistema - la chiamata comporta la convalida dei parametri e della configurazione del Sistema
accorciare il link per il pagamento - invece di diversi parametri, il link è ridotto a due identificatori
nascondere i dati dei parametri sensibili del link alla transazione - la pre-transazione avviene nel backend e il link per continuare la transazione non contiene dati sensibili, ma solo gli identificatori della continuazione della transazione.
utilizzo dell'SDK mobile in una variante mista - l'avvio della transazione viene eseguito dal backend dell'applicazione mobile, piuttosto che dall'SDK stesso che utilizza il token della transazione
I casi d'uso specifici della pre-transazione sono i carichi:
BLIK 0Per utilizzare questo servizio, è necessario fornire GatewayID=509 e passare il codice di autorizzazione della transazione nel parametro Codice di autorizzazione.
BLIK 0 Un clic
Spese per "Pagamento automatico
Per utilizzare questo servizio, è necessario fornire una delle seguenti informazioni GatewayID=509 i
gatewayType="Pagamento automatico". e i parametri necessari.
Autorizzazioni tramite portafoglio Visa
Per poter usufruire di questo servizio, è necessario fornire GatewayID=1511 e passare il token codificato nel parametro Token di pagamento. In assenza di un token, l'autorizzazione avverrà sul sito web del sistema.
Autorizzazioni attraverso i portafogli Google Pay
NOTA: Il servizio consente di addebitare la carta memorizzata nel portafoglio del cliente senza reindirizzarla al sistema. Spesso viene applicata un'autorizzazione aggiuntiva sotto forma di 3DS (comportamento predefinito dell'ambiente di prova, che può essere riconfigurato).
Nel Etichetta bianca modello, integrarlo come descritto e quindi fornire GatewayID=1512 e il token codificato nel campo Token di pagamento parametro. Se non c'è un token (o un modello diverso da Etichetta bianca), è sufficiente inserire GatewayID=1512 - l'autorizzazione avverrà sul sito web del sistema.
Autorizzazioni attraverso i portafogli Apple Pay
Per utilizzare questo servizio, è necessario inserire GatewayID=1513. L'autorizzazione avverrà sul sito web del sistema.
Autorizzazione attraverso il formato nativo dell'SDK mobile
NOTA: Il servizio consente l'addebito della carta, i cui dettagli sono forniti nel formato della carta sicura dell'SDK, e l'avvio della transazione stessa è eseguito dal backend dell'applicazione mobile.
Oltre al GatewayID pertinente - 1500 per un pagamento unico o 1503 per l'attivazione di un pagamento automatico (e altri parametri) - il PaymentToken ottenuto dall'SDK e il parametro WalletType=SDK_NATIVE
(descrizione nella sezione Avvio di una transazione con parametri aggiuntivi)
Un elemento richiesto nel caso di una pre-transazione è l'invio al backend (utilizzando, ad esempio, cURL) del messaggio standard di avvio della transazione (vedere Inizio della transazione), con un "BmHeader" di valore: "pay-bm-continue-transaction-url":
Esempio di intestazione
BmHeader: pay-bm-continue-transaction-url'.)
Inoltre, si raccomanda che il parametro ClienteIP (a scopo di reclamo e di rendicontazione).
Esempio di avvio della pre-transazione (PHP)
$data = array(
'ServiceID' => '100047',
'OrderID' => ‘20161017143213’,
'Amount' => '1.00',
'Description' => 'test bramki',
'GatewayID' => '0',
'Currency' => 'PLN',
'CustomerEmail' => 'test@bramka.pl',
'CustomerIP' => '127.0.0.0',
'Title' => 'Test title',
'Hash' => 0c5ca136e8833e40efbf42a4da7c148c50bf99f8af26f5c9400681702bd72056
);
$fields = (is_array($data)) ? http_build_query($data) : $data;
$curl = curl_init('https://{gate_host}/test_ecommerce');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('BmHeader: pay-bm-continue-transaction-url'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
$curlResponse = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$response = curl_getinfo($curl);
curl_close($curl);
echo htmlspecialchars_decode($curlResponse);
In caso di convalida corretta dei parametri (e della configurazione) e di
la necessità per il cliente di eseguire un'azione aggiuntiva (selezione di una
canale di pagamento - se specificato GatewayID=0, esecuzione/trasferimento di conferma, inserimento del codice CVC/CVV, esecuzione del 3DS) - verrà restituito un XML con un link per continuare la transazione.
Esempio di file di collegamento di continuazione della transazione (XML)
<?xml version="1.0" encoding="UTF-8"?>
<transaction>
<status>PENDING</status>
<redirecturl>
https://{gate_host}/payment/continue/96VSD39Z6E/L6CGP5BH
</redirecturl>
<orderID>20180824105435</orderID>
<remoteID>96VSD39Z6E</remoteID>
<hash>
1c6eae2127f0c3f81fbed3b6372f128040729a4d4e562fb696c22e0db68dbbe1
</hash>
</transaction>
Il transazione rappresenta la ricezione o il prelievo di fondi da un AP, come un acquisto o un rimborso completato.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | stato | SÌ | stringa{1,32} | Stato della transazione. In questo caso la costante IN ATTESA . |
2 | redirecturl | SÌ | stringa{1,100} | Indirizzo per continuare una transazione iniziata da un messaggio di pre-transazione. |
3 | ID ordine | SÌ | stringa{1,32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. |
4 | ID remoto | SÌ | stringa{1,20} | L'identificativo unico della transazione assegnato nel sistema AP. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
In caso di convalida non valida o di caricamento non riuscito, non viene generato alcun link di continuazione. Viene restituito un testo in formato XML (nella stessa sessione HTTP) che indica lo stato di elaborazione della richiesta.
Esempio di stato di elaborazione della richiesta (XML)
<?xml version="1.0" encoding="UTF-8"?>
<transaction>
<orderID>OrderID</orderID>
<remoteID>RemoteID</remoteID>
<confirmation>ConfStatus</confirmation>
<reason>Reason</reason>
<blikAMList>
<blikAM>
<blikAMKey>Klucz1</blikAMKey>
<blikAMLabel>Etykieta1</blikAMLabel>
</blikAM>
<blikAM>
<blikAMKey>Klucz2</blikAMKey>
<blikAMLabel>Etykieta2</blikAMLabel>
</blikAM>
</blikAMList>
<paymentStatus>PaymentStatus</paymentStatus>
<hash>Hash</hash>
</transaction>
Parametri restituiti per il risultato della pre-transazione.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID ordine | SÌ | stringa{1,32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. Richiesto per la conferma=CONFIRMED. |
2 | ID remoto | SÌ | stringa{1,20} | L'identificativo unico della transazione assegnato nel sistema AP. Richiesto per la conferma=CONFIRMED. |
3 | conferma | SÌ | stringa{1,100} | Stato di conferma dell'ordine. Può assumere due valori: - CONFERMATO - l'operazione è riuscita. NOTA: non indica il successo. - NOTCONFIRMED - operazione fallita. |
4 | motivo | NO | stringa{1,1000} | Spiegazione del motivo del rifiuto dell'ordine (per conferma=NOTCONFIRMED), se disponibile. |
5 | elenco blikAML | NO | stringa{1,10000} | Elenco delle applicazioni di banca mobile disponibili nell'ambito dell'opzione BLIK 0 OneClick (per conferma=NOTCONFIRMED e motivo=ALIAS_NONUNIQUE). |
Formato per blikAMList:
|
||||
6 | Stato del pagamento | NO | enum | Stato di autorizzazione della transazione, assume i valori: - PENDING - transazione avviata - SUCCESSO - corretta autorizzazione delle transazioni - FAILURE - transazione non completata correttamente |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del Servizio. Richiesto per la conferma=CONFIRMED. |
Se i parametri (e la configurazione) sono stati convalidati correttamente e non è necessario che il cliente esegua un'ulteriore azione, viene restituita una conferma dell'ordine di carico.
Questo è il caso in cui i dati sono sufficienti per effettuare un addebito per il canale di pagamento in questione, ad esempio: BLIK 0 senza
il codice BLIK richiesto (né l'indicazione dell'alias dell'app mobile della banca), pagamento ricorrente, pagamento con carta OneClick senza il CVC/CVV/3DS richiesto.
Risultato
conferma=CONFIRMED
Convalida dei parametri non corretta
In caso di convalida errata dei parametri (e della configurazione), viene restituito un errore.
Risultato
conferma=NOTCONFIRMED
Un errore può essere restituito anche in caso di risposta sincrona da parte del Canale di pagamento (ad esempio un errore specifico per il tentativo di inizializzare un pagamento automatico BLIK, ovvero reason= RECURRENCY_NOT_SUPPORTED).
NOTA: Un errore può essere restituito anche in caso di risposta sincrona da parte di un Canale di pagamento (ad esempio, un errore specifico per un tentativo di inizializzazione di un pagamento automatico BLIK, ovvero reason=RECURENCY_NOT_SUPPORTED). Un altro caso noto è l'errore di convalida dell'indirizzo fornito nel parametro iniziale CustomerEmail (INVALID_EMAIL).
Stato di conferma | Stato del pagamento (paymentStatus) | Descrizione del comportamento del partner |
---|---|---|
CONFERMATO | SUCCESSO | Transazione accettata per l'elaborazione, stato corretto. Non riprovare l'addebito La conferma del pagamento può essere visualizzata, ma i processi aziendali devono essere messi in pausa fino alla conferma nell'ITN (che verrà inviata una volta che l'AP avrà ricevuto lo stato corretto della transazione dal Canale di pagamento). |
CONFERMATO | FALLIMENTO | Transazione accettata per l'elaborazione, stato non valido. È possibile riprovare l'addebito con lo stesso ID ordine. Una volta che l'AP ha ricevuto lo stato della transazione dal canale di pagamento, viene inviato un messaggio ITN. NOTA: Non è possibile ripetere la transazione con la stessa ID ordine se, durante l'integrazione, viene concordato un modello per il Sistema per bloccare l'inizio delle transazioni con lo stesso ID ordine. Per impostazione predefinita, il Partner preserva l'unicità dell'oggetto. ID ordine è solo una raccomandazione e non è soggetta a verifica all'avvio della transazione. |
CONFERMATO | IN ATTESA | Una transazione è stata accettata per l'elaborazione, ma il suo stato non è ancora noto. Non ritentare il caricamento. Gestione ulteriore come in caso di timeout. |
NON CONFERMATO | - | Transazione non ordinata (motivo indicato nel nodo reason). È possibile riprovare il caricamento con lo stesso OrderID. |
Timeout (o altra risposta come struttura non valida, campi obbligatori mancanti, altro stato di conferma) | - | Attendere l'ITN fino alla data di scadenza della transazione (a tal fine si consiglia un tempo di scadenza breve, ad esempio 15 minuti), informando il cliente del risultato in un processo separato (e-mail/sms). Dopo questo periodo, si consiglia di interrogare lo stato della transazione (Stato della transazione). Se il metodo non restituisce alcuna transazione registrata (o FALLIMENTO solo gli stati di pagamento), l'ordine di addebito può essere riproposto con la stessa ID ordine. In alternativa, si può cercare di annullare la transazione, accelerando così il processo di ottenimento dello stato finale della transazione ed eventualmente il processo di rinnovo del messaggio di avvio della transazione. A tale scopo, utilizzare il servizio di cancellazione della transazione (transazioneAnnulla) e confermare il suo funzionamento interrogando lo stato della transazione (come descritto sopra). |
Il Bonifico veloce è una forma di pagamento che richiede al Cliente di riscrivere autonomamente i dati di bonifico forniti dal Sistema. Il tipo di canale di pagamento viene indicato dal parametro GatewayType in risposta alla chiamata al servizio "Interrogazione dell'elenco dei canali di pagamento attualmente disponibili".
Canali di pagamento". I dati del trasferimento possono essere visualizzati dal cliente:
sul sito web dell'AP (esecuzione della transazione in base al modello standard di avvio della transazione descritto nella parte Inizio della transazione)
sul sito del Partner (l'elaborazione della transazione senza reindirizzare il cliente al sito dell'AP è descritta di seguito)
Per la corretta trasmissione del messaggio, è necessario inviare al backend un messaggio standard di avvio della transazione (ad es.
cURL), con un'intestazione 'BmHeader' di valore: 'pay-bm' (Nella sua interezza, l'intestazione dovrebbe apparire come segue BmHeader: pay-bm'.). Se l'intestazione è definita in modo errato o manca, il messaggio verrà letto male. Inoltre, si consiglia di passare il parametro CustomerIP come descritto in User IP (necessario per i processi di reclamo e segnalazione) e richiesto per passare un valore non nullo GatewayID (con gatewayType "Trasferimento veloce"`").
Implementazione dell'avvio delle transazioni in background (PHP)
$data = array(
'ServiceID' => '100047',
'OrderID' => '20150723144517',
'Amount' => '1.00',
'Description' => 'test bramki',
'GatewayID' => '71',
'Currency' => 'PLN',
'CustomerEmail' => 'test@bramka.pl',
'CustomerIP' => '127.0.0.0',
'Title' => 'Test title',
'ValidityTime' => '2016-12-19 09:40:32',
'LinkValidityTime' => '2016-07-20 10:43:50',
'Hash' => 'e627d0b17a14d2faee669cad64e3ef11a6da77332cb022bb4b8e4a376076daaa'
);
$fields = (is_array($data)) ? http_build_query($data) : $data;
$curl = curl_init('https://{gate_host}/test_ecommerce');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('BmHeader: pay-bm'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
$curlResponse = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$response = curl_getinfo($curl);
curl_close($curl);
echo htmlspecialchars_decode($curlResponse);
Nel caso di pagamenti di questo tipo, il Sistema genera un insieme di dati
necessari per effettuare un trasferimento intra-bancario (e quindi veloce) al conto bancario dell'AP. Questi dati vengono inseriti nella risposta all'inizio della transazione, in un documento xml.
Risposta del sistema di pagamento all'avvio della transazione (XML)
<?xml version="1.0" encoding="UTF-8"?>
<transaction>
<receiverNRB>47 1050 1764 1000 0023 2741 0516</receiverNRB>
<receiverName>Autopay</receiverName>
<receiverAddress>81-718 Sopot, ul. Powstancow Warszawy 6</receiverAddress>
<orderID>9IMYEH2AV3</orderID>
<amount>1.00</amount>
<currency>PLN</currency>
<title>9IMYEH2AV3 - weryfikacja rachunku</title>
<remoteID>9IMYEH2AV3</remoteID>
<bankHref>https://ssl.bsk.com.pl/bskonl/login.html</bankHref>
<hash> fe685d5e1ce904d059eb9b7532f9e06a64c34c1ea9fcf29b62afefdb7aad7b75 </hash>
</transaction>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione
.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ricevitoreNRB | SÌ | stringa{32} | Numero di conto del destinatario del bonifico (AP). |
2 | NomeRicevitore | SÌ | stringa{1,100} | Nome del destinatario del bonifico (AP). |
3 | indirizzo del ricevitore | SÌ | stringa{1,100} | Indirizzo del destinatario del bonifico (AP). |
5 | ID ordine | SÌ | stringa{1,32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. |
6 | importo | SÌ | importo | Importo della transazione. Un punto fermo - '. - viene utilizzato come separatore decimale. Formato: 0,00; lunghezza massima: 14 cifre prima della virgola e 2 dopo la virgola. NOTA: Il valore consentito di una singola transazione nel Sistema di produzione è di min. 0,01 PLN, max. 100000,00 PLN (o fino al limite della singola Transazione della Banca per un trasferimento intrabancario). |
7 | valuta | SÌ | stringa{1,3} | Valuta della transazione. |
8 | titolo | SÌ | stringa{1,140} | Il titolo completo del trasferimento (ID insieme al campo Descrizione dall'inizio della transazione). |
9 | ID remoto | SÌ | stringa{1,20} | L'identificativo univoco del trasferimento assegnato nel sistema AP. |
10 | bancaHref | SÌ | stringa{1,100} | L'indirizzo di accesso al sistema bancario online, che può essere utilizzato per creare un pulsante "Vai alla banca". |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
NOTA: Le informazioni di cui sopra devono essere utilizzate per visualizzare i dati di trasferimento e reindirizzare l'utente alla pagina di login della banca.
Si tratta di una soluzione dedicata ai pagamenti BLIK, che consente di pagare senza inserire il codice BLIK (e senza dover lasciare il sito web). Il suo avvio con successo nel Sistema provoca l'attivazione/risveglio automatico dell'applicazione mobile della banca e la presentazione della transazione all'Utente per la conferma.
Potenziali benefici:
rendere disponibile il primo metodo di pagamento comodo e sicuro nel mCommerce che non richiede un numero di carta apre questo segmento a nuovi clienti,
una migliore esperienza d'acquisto per i clienti, che pagano più velocemente e più comodamente,
frequenza di acquisto e valore del cliente nel tempo - i clienti sono più disposti a
acquistare più spesso da quei negozi in cui il processo di acquisto è
più conveniente,
tasso di conversione - il servizio ha un maggiore controllo sul processo di acquisto e pagamento (il cliente non lo abbandona), il rischio di perdita del carrello,
decisione rapida sulla transazione - in breve tempo la transazione è soggetta ad autorizzazione, rifiuto o annullamento,
Il servizio ha la possibilità di analizzare la fase stessa del pagamento
.
La condizione affinché il BLIK 0 OneClick sia reso disponibile al Cliente è di essere stato autorizzato sul Servizio
(avere un account e avervi precedentemente effettuato l'accesso).
Se, durante un pagamento BLIK precedentemente eseguito, insieme ad altre
informazioni di pagamento, il Servizio ha inviato un UID Alias dedicato (descrizione dei
parametri Chiave BlikUID e Etichetta BlikUID in un'altra parte del documento
), e il Cliente, mentre confermava il pagamento nell'applicazione mobile
ha indicato che desiderava ricordare il negozio, ciò ha comportato un'associazione permanente
(in genere per un periodo di 2 anni) del Cliente del servizio con la sua applicazione, ossia la registrazione
Alias UID. Il suo successivo utilizzo comporterà l'
autorizzazione della transazione senza l'inserimento del codice.
Quando si seleziona un canale di pagamento BLIK, si consiglia di non forzare l'utente a inserire un codice BLIK. Si consiglia invece di visualizzare il collegamento ipertestuale "Voglio inserire il mio codice BLIK" sotto il pulsante "Acquista e paga" per consentire l'inserimento del codice al primo tentativo (nel caso in cui il Cliente desideri effettuare un pagamento BLIK da un'applicazione mobile diversa da quella in cui ha precedentemente salvato un determinato Servizio).
Il Servizio deve eseguire la Pre-Transazione, prestando particolare attenzione ai seguenti elementi:
specificando il parametro GatewayID = 509 - che indica il canale di pagamento BLIK,
fornendo Chiave BlikUID e Etichetta BlikUID parametri - che indicano BLIK 0 OneClick Alias UID (ID utente) richiesto da BLIK 0 OneClick. utente)
fornire il Codice di autorizzazione parametro - se il cliente ha fornito il codice BLIK,
fornendo BlikAMKey parametro - se il Cliente ha specificato un'etichetta del dell'applicazione mobile della banca dall'elenco presentato sul Sito web,
gestione delle possibili risposte alla pre-transazione, compresa la gestione di 'Response - no continuation' ed errori specifici di BLIK 0 OneClick:
a) errore di molte applicazioni mobili della banca (conferma=NOTCONFIRMED e motivo=ALIAS_NONUNIQUE) - visualizzando l'elenco delle etichette restituite nell'elenco degli alias pre-transazione (coppie chiave + etichetta contenute nel file Elenco BlikAML per recuperare la chiave selezionata e fornirla nella struttura BlikAMKey del prossimo tentativo di pre-transazione
(b) errori di autorizzazione (conferma=NOTCONFIRMED e motivo con uno dei valori: ALIAS_DECLINATO, ALIAS_NON_TROVATO, BIGLIETTO_ERRATO, BIGLIETTO_SCADUTO, BIGLIETTO_USATO) - visualizzare il campo Blik Code, per poterlo recuperare e fornire nel campo Codice di autorizzazione del prossimo tentativo di pre-transazione
Google Pay è un sistema di pagamento istantaneo e intuitivo di Google.
Google Pay è un prodotto che permette di ottenere i dati criptati della carta di pagamento del cliente, consentendone l'addebito.
Per pagare tramite Google Pay, è necessario salvare la carta di pagamento sul proprio account Google, utilizzando una qualsiasi piattaforma di Google (ad esempio, l'acquisto di app su Google Play) o direttamente sul sito web di Google. Google Pay.
NOTA: Il servizio richiede la preventiva sottoscrizione di un contratto con l'operatore della carta. Per maggiori informazioni, contattare il reparto commerciale Autopay.
Dopo aver fatto clic su "Paga con Google Pay", sulla pagina del negozio appare un modulo Google Pay. In esso il cliente conferma il suo account Google e la carta con cui intende pagare (in questa fase può anche passare a un'altra carta o aggiungerne una nuova). Lo script trasmette in background i dati codificati della carta tramite il servizio messaggio poi il negozio deve accettarlo e codificarlo tramite la funzione base64 e infine inviarlo nel file Token di pagamento insieme agli altri parametri (dati della transazione).
Sul proprio sito web, il negozio deve richiamare lo script fornito da Google con i dati del processore di pagamento modificati.
CONSIGLIO: Dettagli in Documentazione per sviluppatori di Google.
Schema dettagliato di comunicazione e scambio di dati
CONSIGLIO: Un esempio di come inviare una richiesta è disponibile all'indirizzo GitHub Autopay.
(a) I dati del processore di pagamento sono stati alterati:
const tokenizationSpecification = {
type: 'PAYMENT_GATEWAY',
parameters: {
'gateway': 'bluemedia',
'gatewayMerchantId': paybmApiResponse.acceptorId
}
};
b) I dati restituiti dal sistema di pagamento online AP trasferiti nell'oggetto PaymentDataRequest.merchantInfo:
PaymentDataRequest.merchantInfo = {
merchantId: paybmApiResponse.merchantId,
merchantOrigin: paybmApiResponse.merchantOrigin,
merchantName: paybmApiResponse.merchantName,
authJwt: paybmApiResponse.authJwt,
};
CONSIGLIO: Un esempio completo di integrazione con Google Pay è disponibile su GitHub Autopay.
Per mantenere l'integrità estetica del design utilizzato sul sito web e sull'applicazione mobile, si prega di utilizzare le indicazioni fornite nel documento parti delle linee guida del marchio della documentazione di sviluppo Google per descrizioni di stile e pulsanti per le pagine web e per Parti Documentazione per sviluppatori tutorial Google, dove troverete le informazioni necessarie per lo sviluppo dell'applicazione mobile.
Implementazione di Apple Pay sul sito web del negozio.
Richiesta di contatto con il prodotto dell'infrastruttura di pagamento - necessità di supporto informatico.
- certificato di comunicazione - per la cosiddetta presentazione - identificativo del commerciante
- certificato di addebito - certificato di elaborazione dei pagamenti
Implementazione web in conformità con documento Apple Pay sul web
Preparazione di 2 endpoint sul lato del partner, su un dominio registrato presso Apple (utilizzando 2 certificati di Apple):
- per l'avvio della sessione
- per addebitare al cliente il costo del token di Apple.
SUGGERIMENTO: Safari (il browser del cliente) richiede la sessione all'endpoint (menzionato sopra) e poi va da noi - noi restituiamo la sessione.
NOTA: I certificati AP CSR per l'accettazione e per la produzione sono diversi).
Dopo averlo utilizzato nel processo di registrazione Apple, fornire all'AP un certificato firmato da Apple e inviarlo via Modulo di pagamento automatico
SUGGERIMENTO: Il cliente deve fornire il paese, la città, il dominio del sito web e l'e-mail della persona di contatto.
Nell'ambito dell'elaborazione dei pagamenti sul sito del partner, avviare una sessione API Apple.
Quindi restituire il token Autopay nel parametro PaymentToken start.
NOTA: La decodifica del token è responsabilità dell'AP.
Formato del token di pagamento: una fetta di un oggetto in formato json che l'API ApplePay restituisce:
EncryptedPaymentData {
String version;
String data;
String signature;
Header header;
}
Header {
String ephemeralPublicKey;
String publicKeyHash;
String transactionId;
String applicationData;
}
NOTA: Quando si invia una richiesta di pagamento ApplePayPaymentRequest, è necessario riempire il campo applicationData con il valore Base64-encoded orderId, come descritto nel documento documento applicationData.
I partner che desiderano incorporare una parte delle transazioni direttamente sul loro sito / nel loro carrello (nel cosiddetto modello WhiteLabel) possono farlo integrando il Widget Autopay. Attualmente, il Widget Autopay supporta la raccolta dei dati della carta (all'interno del PaywayId 1500
/1503
) o Visa Mobile inizia (PaywayId PaywayId 1523
)
IMPORTANTE! Il Partner non è autorizzato a memorizzare i dati della Carta (in particolare il numero di carta, il codice di sicurezza CVC, il CVV2), ad eccezione dei parametri trasferiti durante l'elaborazione dei pagamenti automatici da parte dell'AP, come descritto in questa sezione.
IMPORTANTE! Il sito web del partner in cui viene utilizzata la funzionalità del widget Autopay deve essere criptato e l'IFRAME HTML con il widget deve essere incorporato in un indirizzo HTTPS con l'uso di TLS.
IMPORTANTE! Il partner si impegna a presentare all'AP, in forma elettronica,
i seguenti documenti:
a) una tantum (prima della conclusione del Contratto): un questionario SAQ-A PCI compilato (Sezione 2); il documento sarà fornito da AP o è disponibile per il download sul sito web: https://www.pcisecuritystandards.org
b) Su base trimestrale: il risultato dell'audit PCI ASV trimestrale che include una scansione di indirizzi/reti/domini IP esterni (pubblici) - IPv4 e/o IPv6. Tale audit deve essere condotto da uno degli appaltatori autorizzati elencati in: https://www.pcisecuritystandards.org/assessors_and_solutions/approved_scanning_vendors
È necessario utilizzare l'Autopay WidgetJS SDK per incorporare e comunicare con il widget Autopay. In breve, si tratta di incorporare l'IFRAME HTML con il widget e di configurare l'SDK JS per gestire i messaggi (eventi) prodotti quando il titolare della carta interagisce con il widget. Il messaggio finale è un evento con uno stato di MODULO_INTERROTTO
incluso paymentToken
necessari per l'avvio delle transazioni backend sull'API del sistema di pagamento online AP.
Di seguito sono riportati alcuni esempi di come incorporare e diffondere facilmente un widget, utilizzando l'Autopay WidgetJS SDK, sia per la carta che per i canali VisaMobile.
L'SDK Autopay WidgetJS è disponibile all'indirizzo widget-nuovo/widget-comunicazione.min.js
una volta che è stato inserito nel <head>
<script src="?r=quot;https://testcards.autopay.eu/widget-new/widget-communication.min.js"></script>
Si accede all'oggetto WidgetConnection
var widgetConfigObject = { ... };
var widget = new WidgetConnection(widgetConfigObject)
che, se integrato con una configurazione sotto forma di oggetto JSON, consentirà una comunicazione completa con l'API Autopay e, di conseguenza, garantirà la ricezione di un evento con uno stato pari a MODULO_INTERROTTO
da paymentToken
.
Esempio di configurazione per i dati della carta
Configurazione:
{ language: 'pl', amount: 1.23, currency: 'PLN', serviceId: 123456 }
PaymentToken restituito:
{status: 'FORM_SUCCESS', message: 'ey...9', id: 'OGFlZTYyYTMtN2U2OS00MTU1LTgyNDctNmMwMGI2NjE5ZDQy'}
Esempio di configurazione per i dati VisaMobile
Configurazione:
{ language: 'pl', amount: 1.23, currency: 'PLN', serviceId: 123456, merchantName: 'ShopName' }
PaymentToken restituito:
{status: 'FORM_SUCCESS', message: 'ey...9', prefix: '48', phoneNumber: '666666666', id: 'OGFlZTYyYTMtN2U2OS00MTU1LTgyNDctNmMwMGI2NjE5ZDQy'}
Lingua
Determina la versione linguistica del widget in cui sarà presentato.
Nome del campo: lingua
Formato stringa
Valori: predefinito it
Attualmente sono supportate le seguenti lingue: cs
, de
, el
, it
, es
, fr
, hr
, hu
, esso
, it
, ro
, se
, sk
, sl
, uk
Importo della transazione
Importo della transazione
Nome del campo: importo
Formato galleggiante
Valori: un importo scritto in formato float, ad es: "1,23 PLN" dovrebbe essere 1.23
importo: 1,23, valuta: 'PLN', serviceId: 123456, merchantName: 'ShopName'.
Valuta della transazione
Valuta della transazione
Nome del campo: valuta
Formato stringa
Valori: predefinito PLN
, altre valute in un formato compatibile con la configurazione attuale del servizio
Numero di servizio
Numero di servizio ricevuto da Autopay (dipende dall'ambiente di sviluppo)
Nome del campo: serviceId
Formato intero
Valori: di solito sei cifre
Tipo di ricorrenza (solo per le carte)
Indicazione del tipo di avvio della ricorrenza (solo per il canale 1503 relativo all'avvio della ricorrenza)
Nome del campo: azione ricorrente
Formato stringa
Valori: 'INIT_WITH_REFUND', 'INIT_WITH_PAYMENT'.
Nome del negozio (solo per VisaMobile)
Nome visualizzato all'utente nella notifica VisaMobile nell'applicazione mobile della banca (solo per il canale 1523 di VisaMobile)
Nome del campo: nome del commerciante
Formato stringa
Valori: Nome del negozio
IMPORTANTE! Il seguente esempio di codice HTML è stato creato a scopo illustrativo. Per poterlo eseguire effettivamente sul computer locale, il seguente file HTML deve essere collocato sotto un dominio locale (qualsiasi, può essere test.local
).
Questo HTML non può essere sparato nel browser come file locale, perché gli eventi JS scambiati tra l'IFRAME e la pagina vengono verificati per verificare la coerenza del dominio (e quindi deve essere presente un dominio).
La pagina seguente ha lo scopo di imitare Front Merchant, mostrando quali elementi devono essere implementati per integrarsi con il Widget Autopay.
Nel browser, la seguente pagina di esempio è composta da tre sezioni:
PayButon
in bundle con l'SDK JS per controllare l'avvio del processo nel widget (in questo esempio, il pulsante si attiva solo quando riceve il messaggio che la convalida è corretta e i dati necessari per avviare il processo sono completi)Quando si seleziona un canale per la carta (payway: 1500 o 1503), viene caricata una vista dedicata al modulo della carta (basata su HTML IFRAME). Quando nel widget vengono inseriti i dati completi e validi della carta, (grazie agli eventi di convalida) si attiva il pulsante "Paga" sul front-end dell'esercente.
CONSIGLIO: Come si può vedere nell'esempio, è possibile supportare il canale VisaMobile anche nel modello WhiteLabel. L'implementazione/layout è analogo a quello del widget della carta, pertanto il codice sottostante contiene già entrambi i casi.
Convalida e completamento dei dati
L'Autopay Widget JS SDK riceve eventi dal widget quando inserisce i dati della carta STATO_DI_VALIDITÀ
con valore valido: falso
Una volta ottenuti i dati completi della carta, l'ultimo evento sarà STATO_DI_VALIDITÀ
con valore valido: vero
{status: 'VALIDITY_STATUS', message: null, valid: true, id: 'M2Zl...mU2'}
L'attivazione del pulsante può essere basata su questo evento Pulsante di pagamento
CONSIGLIO: Nell'ambiente di test, i pagamenti con carta si basano su un mock 3ds e un mock di autorizzazione. Ai diversi scenari corrispondono numeri di carta di prova dedicati. L'elenco completo dei casi di test è riportato in un'appendice separata.
Schermo DCC
Se lo scenario e la carta soddisfano le condizioni per ottenere un'offerta DCC, apparirà un'ulteriore schermata con una proposta di conversione di valuta per il titolare della carta.
Il titolare della carta può scegliere se utilizzare l'addebito della carta nella sua valuta nativa o se lasciare la valuta originale. In questa schermata avviene anche la convalida.
La scelta della valuta del Titolare della carta non influisce sull'Esercente e sull'importo originale della transazione stessa, ma influisce sull'importo che verrà addebitato alla carta. Se il Titolare non desidera usufruire dell'offerta di conversione di valuta DCC, seleziona la valuta originale (che in questo caso è il PLN).
Ottenere un token
Il pulsante deve essere collegato all'SDK Autopay Widget JS, in modo che il suo clic attivi una chiamata all'applicazione widget.sendForm();
nel metodo WidgetConnection
che, in ultima analisi, si tradurrà in un oggetto MODULO_INTERROTTO
cioè ottenere il valore del paymentToken (nell'evento messaggio
campo).
{status: 'FORM_SUCCESS', message: 'eyJ...n19', id: 'M2Z...ZmU2'}
Di seguito è riportato un diagramma dettagliato della comunicazione tra esercente, titolare di carta e sistemi di pagamento Autopay nel caso della cosiddetta integrazione WhiteLabel (ovvero utilizzando un widget della carta).
Trasferimento sicuro dei dati della carta al sistema Autopay e flusso completo delle transazioni:
Di seguito è riportato un esempio di una semplice implementazione HTML/JS che utilizza il widget VisaMobile (e il widget della carta)
{ 'status': 'FORM_SUCCESS', 'message': 'eyJrZ...', ... }
Cruciale per questa integrazione è il punto del codice JS responsabile della ricezione degli eventi, in particolare dell'evento con stato MODULO_INTERROTTO
, in quanto contiene nel messaggio
il valore del paymentToken che l'esercente deve passare al proprio backend per completare i parametri dell'API Autopay e consentire l'avvio del pagamento in Autopay.
Pagina di esempio
Nel browser, la seguente pagina di esempio è composta da tre sezioni:
PayButon
pulsante, fornito con l'SDK JS, che controlla l'avvio del processo nel widget (in questo esempio, il pulsante diventa attivo solo quando riceve un messaggio di corretta convalida e ottiene tutti i dati necessari per avviare il processo)Quando si seleziona un canale dedicato a VisaMobile, viene visualizzata una vista dedicata (basata su HTML IFRAME), dove l'inserimento del numero di telefono completo (grazie ai messaggi di convalida) porta all'attivazione del pulsante "Paga".
Convalida e completamento dei dati
Quando si inserisce un numero di telefono, l'SDK del Widget Autopay JS riceve un messaggio STATO_DI_VALIDITÀ
dal widget con il valore valido: falso
Una volta ottenuto il numero di telefono completo, l'ultimo evento sarà STATO_DI_VALIDITÀ
con il valore valido: vero
.
{status: 'VALIDITY_STATUS', message: null, valid: true, id: 'M2Zl...mU2'}
L'attivazione del pulsante può essere basata su questo evento Pulsante di pagamento
Ottenere un token
Il pulsante deve essere collegato all'SDK Autopay Widget JS, in modo che il suo clic attivi una chiamata all'applicazione widget.sendForm();
nel metodo WidgetConnection
che, in ultima analisi, si tradurrà in un oggetto MODULO_INTERROTTO
cioè l'ottenimento del valore del paymentToken.
{status: 'FORM_SUCCESS', message: 'eyJ...n19', prefix: '48', phoneNumber: '666666666', id: 'M2Z...ZmU2'}
Iniziare la transazione:
paymentToken
.Possibile annullamento della transazione (dal paywall di PayAutopay):
Carica e restituisce il risultato:
Il codice seguente è stato utilizzato per generare le integrazioni di esempio citate nelle sezioni con esempi di implementazione del Widget Carta e del Widget Visa Mobile
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Autopay Widget Integration Example</title>
<script src="?r=quot;https://testcards.autopay.eu/widget-new/widget-communication.min.js"></script>
<style>/* omitted from the example */</style>
</head>
<body>
<div>
<form onsubmit="submitForm(event)" novalidate>
<div class="form-group"><p>Transaction amount:</p><span>1,23 PLN</span></div>
<!-- example implementation of a merchant-side payment channel selection mechanism -->
<p>Choose payment method:</p>
<ul>
<li onclick="setPayway(event, 1500)">One time payment with card</li>
<li onclick="setPayway(event, 1503)">Remember your card</li>
<li onclick="setPayway(event, 1523)">Pay with VisaMobile</li>
</ul>
<!-- the place where the HTML IFRAME with the widget will be injected -->
<div class="form-group" id="iframe-wrapper">
<iframe id="iframe"></iframe>
</div>
<!-- call to action button in the widget -->
<button type="submit" id="button" disabled="disabled">PayButton</button>
</form>
</div>
<script type="text/javascript">
window.addEventListener("load', () => {
// auxiliary variables (only for the purpose of the example)
var currentPayway = null;
var widget = null;
// example configurations depending on the devlopers' environment (only for the purpose of the example)
var AUTOPAY_CARDS_DOMAIN_ENV_PROD = 'https://cards.autopay.eu';
var AUTOPAY_CARDS_DOMAIN_ENV_TEST = 'https://testcards.autopay.eu';
var MERCHANTS_SERVICE_ID_ENV_PROD = 903555;
var MERCHANTS_SERVICE_ID_ENV_TEST = 903555;
// auxiliary method to support payment channel selection and widget embedding
function setPayway (event, paywayId) {
if (currentPayway === paywayId) {
return;
}
currentPayway = paywayId
removeWidget();
disableSubmitButton();
markActiveIcon(event);
if (paywayId === 1500) {
startWidget('/widget-new/partner' , { language: 'en', amount: 1.23, currency: 'PLN', serviceId: MERCHANTS_SERVICE_ID_ENV_TEST });
return
}
if (paywayId === 1503) {
startWidget('/widget-new/partner' , { language: 'en', amount: 1.23, currency: 'PLN', serviceId: MERCHANTS_SERVICE_ID_ENV_TEST, recurringAction: 'INIT_WITH_REFUND' });
return
}
if (paywayId === 1523) {
startWidget('/widget-new/visamobile', { language: 'en', amount: 1.23, currency: 'PLN', serviceId: MERCHANTS_SERVICE_ID_ENV_TEST, merchantName: 'ShopName' });
return
}
}
// auxiliary method (only for the purpose of the example) setting the border on the selected payment channel
function markActiveIcon (event) {
var currentActive = document.querySelector('ul li.active');
if (currentActive) {
currentActive.classList.remove('active');
}
var newActive = event.target;
if (newActive.nodeName.toLowerCase() === 'img') {
newActive = newActive.parentNode;
}
newActive.classList.add('active');
}
// the main method responsible for embedding the IFRAME with the widget and setting up communication between it and its object representation WidgetConnection
function startWidget (widgetVariantUrl, widgetConfig) {
if (!widgetEvents || !WidgetConnection) {
return;
}
var iframeEl = document.getElementById('iframe');
iframeEl.src = AUTOPAY_CARDS_DOMAIN_ENV_TEST + widgetVariantUrl;
widget = new WidgetConnection(widgetConfig)
widget.startConnection(iframeEl).then(() => {
// handling the main, final event containing the PaymentToken value
widget.on(widgetEvents.formSuccess, function (message, eventData) {
console.log('payment token event =>', eventData);
console.log('payment token value:', message);
// here should be a merchant API call to pass the paymentToken (message) to the merchant backend; <<<<<<<<<<<<<<<<<
})
// handling validation events during user/cardholder input in the widget
widget.on(widgetEvents.validityStatus, function (message, eventData) {
console.log('form validation status =>', eventData);
if (eventData.valid) {
enableSubmitButton();
} else {
disableSubmitButton();
}
})
// handling the validation event when the user/cardholder enters data in the widget
widget.on(widgetEvents.validationResult, function (message, eventData) {
console.log('form validation result =>', eventData);
if (eventData.valid) {
enableSubmitButton();
} else {
disableSubmitButton();
}
})
// handling the showModal event
widget.on(widgetEvents.showModal, function () {
console.log('show modal');
})
})
}
// an auxiliary method (only for the purpose of the example) setting the removal of the widget for payment channels other than cards (in the example, there is a 106 PBL channel)
function removeWidget () {
if (!widget) {
return;
}
widget.stopConnection();
}
// auxiliary method (only for the purpose of the example)
function enableSubmitButton () {
document.getElementById('button').removeAttribute('disabled');
}
// auxiliary method (only for the purpose of the example)
function disableSubmitButton () {
document.getElementById('button').setAttribute('disabled', 'disabled');
}
// an auxiliary method (for the purpose of the example only) that binds the call of the active pay button to the sendForm() call in the widget object
function submitForm (event) {
event.preventDefault();
if (!widget || widget.invalid) {
return;
}
disableSubmitButton();
widget.sendForm();
}
window.setPayway = setPayway;
window.submitForm = submitForm
});
</script>
</body>
</html>
I pagamenti automatici sono un modo estremamente comodo e sicuro di effettuare transazioni ricorrenti. Comporta l'incasso automatico dei crediti da parte del cliente alle date di pagamento previste. Il servizio deve essere prima attivato. Nel caso delle carte, ciò avviene reindirizzando il cliente al modulo di attivazione del servizio. Nel caso di BLIK, accettando un pagamento automatico nell'applicazione mobile. Una volta autorizzata con successo tale transazione di attivazione, l'AP trasmette al Partner un messaggio standard sul cambiamento di stato della transazione (ITN) e un messaggio sull'attivazione del servizio di pagamento automatico (RPAN). Il messaggio RPAN contiene il campo clientHashcon cui il partner identificherà lo specifico pagamento automatico durante i successivi addebiti e la disattivazione del servizio.
NOTA: Prima di avviare transazioni ricorrenti, il Partner è tenuto a familiarizzare con i requisiti delle organizzazioni di pagamento VISA e Mastercard, nonché con gli standard Autopay. Questi requisiti mirano a ridurre il rischio di chargeback e a garantire la conformità alle normative del settore. Informazioni dettagliate sono disponibili nell'articolo: Requisiti per i pagamenti automatici.
Tutte le transazioni all'interno del ciclo di vita di un pagamento automatizzato
(attivazione e addebito) vengono eseguiti all'interno di un'area dedicata.
Canali di pagamento (BLIK - GatewayID=522, Carte di pagamento - GatewayID = 1503) i
gatewayType="Pagamento automatico".. Nel caso di integrazione
Per i pagamenti automatici BLIK, è possibile specificare (nei dati forniti prima di
integrazione) la durata dei pagamenti automatici attivati
(illimitato per impostazione predefinita) o di specificarlo nella transazione di inizializzazione
(parametro Tempo di validità ricorrente).
L'attivazione del pagamento automatico consiste in una transazione di attivazione dell'autorizzazione, una comunicazione ITN e un RPAN. Una volta ricevuto l'RPAN, il Partner è pronto a eseguire gli addebiti ricorrenti (o un clic).
Si tratta di un caso di attivazione del servizio di pagamento automatico durante
pagamento di un servizio/bene (quindi RecurringAction=INIT_WITH_PAYMENT e il regolamento della transazione al Partner).
Il messaggio ITN inviato dopo un pagamento automatico è simile a quelli ricevuti dopo i pagamenti una tantum (è solo prolungato dall'utente che ha effettuato il pagamento. Dati ricorrenti nodo, e - per i pagamenti con carta - Dati scheda). Gli altri due elementi del processo di attivazione del servizio sono l'avvio della transazione e la RPAN.
Il processo di attivazione del servizio viene avviato dal sito del partner avviando la transazione con il parametro Azione ricorrente consente di controllare il comportamento del sistema:
(a) valore INIT_WITH_PAYMENT - corrisponde all'attivazione del servizio di pagamento automatico al momento del pagamento di un servizio/merce (la carta o il conto vengono addebitati con l'importo dovuto e i fondi del pagamento vengono trasferiti al Partner); nell'elenco dei canali di pagamento disponibili, il Sistema presenta solo i pagamenti automatici (a meno che non sia stato selezionato un canale di pagamento nel Servizio),
(b) valore INIT_WITH_REFUND - corrisponde all'attivazione del servizio di pagamento automatico al di fuori del processo di pagamento del servizio/merce (la carta o il conto vengono addebitati con l'importo di 1 PLN, seguito dal rimborso automatico dei fondi sul conto del Cliente); nell'elenco dei canali di pagamento disponibili, il Sistema presenta solo pagamenti automatici (a meno che non sia stato selezionato un canale di pagamento sul Sito),
c) nessun parametro (o vuoto) - a meno che non sia stato selezionato un canale di pagamento sul Sito, il Sistema visualizzerà tutti i canali di pagamento disponibili per il Sito (compresi quelli automatici) e lascerà al Cliente la possibilità di decidere: pagamento unico o avvio del pagamento automatico. Se il Cliente sceglie il pagamento automatico, la transazione verrà addebitata al Partner secondo le modalità standard (e il RecurringAction=INIT_WITH_PAYMENT restituirà il parametro in RPAN).
NOTA: Non è consentito avviare transazioni di attivazione con il canale di pagamento automatico selezionato ma senza la RecurringAction selezionata.
In alcuni casi (se risulta dalla risposta del metodo dati legali) è necessario specificare anche i parametri Stato di accettazione ricorrente (con il valore ACCETTATOche significa che il cliente ha letto e accettato i termini e le condizioni del pagamento automatico sul Servizio Partner) e RecurringAcceptanceID.
L'attivazione del servizio di carta di pagamento automatico avviene tramite i format forniti da AP. Il cliente deve inserire i dati della carta: nome, cognome, numero di carta, data di scadenza e codice CVV. In caso di pagamento automatico da un conto bancario (BLIK), l'autorizzazione viene effettuata senza inserire i dati della carta: ad esempio con il codice BLIK (trasportato nei parametri di avvio in AuthorisationCode), o tramite BLIK OneClick Alias (trasportato nei parametri di avvio in BlikUIDKey/BlikUIDLabel).
Una volta autorizzata la transazione, il Sistema AP trasmette al Servizio Partner un messaggio di modifica dello stato della transazione (ITN) e un messaggio di attivazione del servizio di pagamento automatico (RPAN). Il messaggio RPAN è dedicato agli eventi di attivazione del pagamento automatico e contiene il suo identificativo (ClientHash), che il Partner utilizzerà per i successivi addebiti e disattivazioni del servizio. Il RPAN contiene anche informazioni su un'azione del processo di pagamento automatico (RecurringAction, descritta sopra).
Al ricevimento di uno stato di pagamento positivo per l'attivazione del pagamento automatico, viene inviato al Servizio un messaggio dedicato. Questa notifica consiste nell'invio da parte del Sistema AP di un documento XML contenente i dati relativi al pagamento automatico attivato. Il documento viene inviato tramite protocollo HTTPS (porta 443 di default), utilizzando il metodo POST, come parametro HTTP denominato ricorrente. Questo parametro viene memorizzato utilizzando il meccanismo di crittografia di trasporto Base64.
Formato del documento (XML)
<?xml version="1.0" encoding="UTF-8"?>
<recurringActivation>
<serviceID>ServiceID</serviceID>
<transaction>
<orderID>OrderID</orderID>
<remoteID>RemoteID</remoteID>
<amount>999999.99</amount>
<currency>PLN</currency>
<gatewayID>GatewayID</gatewayID>
<paymentDate>YYYYMMDDhhmmss</paymentDate>
<paymentStatus>PaymentStatus</paymentStatus>
<paymentStatusDetails>PaymentStatusDetails</paymentStatusDetails>
<startAmount>999998.99</startAmount>
<invoiceNumber>InvoiceNumber</invoiceNumber>
<customerNumber>CustomerNumber</customerNumber>
<customerEmail>CustomerEmail</customerEmail>
<customerPhone>CustomerPhone</customerPhone>
</transaction>
<recurringData>
<recurringAction>RecurringAction</recurringAction>
<clientHash>ClientHash</clientHash>
<expirationDate>YYYYMMDDhhmmss</expirationDate>
</recurringData>
<cardData>
<index>Index</index>
<validityYear>ValidityYear</validityYear>
<validityMonth>ValidityMonth</validityMonth>
<issuer>Issuer</issuer>
<bin>BIN</bin>
<mask>Mask</mask>
</cardData>
<hash>Hash</hash>
</recurringActivation>
Valori degli elementi: ID ordine, ID servizio, importo relativi a ciascun pagamento automatico attivato sono identici ai valori dei campi corrispondenti forniti dal Servizio all'avvio del rispettivo pagamento di inizializzazione.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1. | serviceID | SÌ | stringa{1,10} | L'ID del servizio partner, assegnato durante la registrazione del servizio, identifica in modo univoco il servizio partner nel sistema di pagamento online. |
2. | transazione -> orderID | SÌ | stringa{1,32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. |
3. | transazione -> remoteID | SÌ | stringa{1,20} | Un identificativo alfanumerico della transazione assegnato dal Sistema di pagamento online. |
5. | transazione -> importo | SÌ | importo | Importo della transazione. Un punto - '. - viene utilizzato come separatore decimale. Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. NOTA: Il valore ammissibile di una singola transazione nel sistema di produzione è rispettivamente: - per le PBL - min. 0,01 PLN, max. 100000,00 PLN (o fino all'importo stabilito dalla banca che emette lo strumento di pagamento) - per le carte di pagamento - min. 0,10 PLN, max. 100000,00 PLN (o fino all'importo stabilito dalla Banca che ha emesso lo strumento di pagamento) - per i trasferimenti veloci - min. 0,01 PLN, max. 100000,00 PLN (o fino al limite individuale della Banca per una singola transazione per un bonifico intrabancario) - per BLIK - min. 0,01 PLN, max. 75000,00 PLN (o fino al limite individuale della Banca per una singola transazione per un trasferimento intrabancario) - per OTP - min. 100,00 PLN, max. 2000,00 PLN - per Alior Rate - min. 50,00 PLN, max. 7750,00 PLN |
6. | transazione -> valuta | SÌ | stringa{1,3} | Valuta della transazione. |
7. | transazione -> gatewayID | SÌ | stringa{1,5} | Identificatore del canale di pagamento attraverso il quale il cliente ha effettuato il pagamento. |
8. | transazione -> data di pagamento | SÌ | stringa{14} | L'ora in cui la transazione è stata autorizzata, trasmessa nel formato YYYMMDDhhmmss. (ora CET). |
9. | transazione -> paymentStatus | SÌ | enum | Stato di autorizzazione della transazione. Assume valori (transizioni di stato identiche al campo corrispondente in ITN): IN ATTESA - transazione avviata SUCCESSO - autorizzazione corretta delle transazioni, il Servizio riceve i fondi per la transazione FALLIMENTO - transazione non completata correttamente |
10. | transazione -> paymentStatusDetails | SÌ | enum | Stato dettagliato della transazione, il valore può essere ignorato dal Servizio. |
11. | transazione -> startAmount | NO | importo | L'importo della transazione indicato nel Link di pagamento (non include l'importo della commissione addebitata al Cliente, se presente.) La somma della commissione del Cliente e dell'Importo iniziale si trova nel campo Importo, poiché è il valore risultante della transazione). Un punto - '. - viene utilizzato come separatore decimale. Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. |
12. | transazione -> numero fattura | NO | stringa{1,100} | Il numero del documento finanziario nel servizio. |
13. | transazione -> numero cliente | NO | stringa{1,35} | Numero di cliente nel servizio. |
14. | transazione -> customerEmail | NO | stringa{1,60} | Indirizzo e-mail del cliente. |
15. | transazione -> telefono del cliente | NO | stringa{9-15} | Numero di telefono dell'utente. |
16. | dati ricorrenti -> recurringAction | NO | stringa{1,100} | Azione nel processo di pagamento automatico. |
17. | dati ricorrenti -> clientHash | SÌ | stringa{1,64} | Identificatore di pagamento automatico. |
18. | dati ricorrenti -> data di scadenza | NO | stringa{14} | Scadenza del pagamento automatico, trasmessa nel formato YYYMMDDhhmmss. (ora CET) |
19. | cardData -> indice | NO | stringa{1, 64} | Indice della carta di pagamento utilizzata per il pagamento automatico (se viene utilizzata una carta). |
20. | cardData -> anno di validità | NO | stringa{4} | Validità della carta nel formato YYYY (se è stata utilizzata una carta). |
21. | data della carta -> mese di validità | NO | stringa{2} | Validità della carta in formato mm (se la carta è utilizzata). |
22. | cardData -> emittente | NO | stringa{64} | Emittente della carta, valori possibili: - VISA - MASTERCARD - MAESTRO - AMERICAN EXPRESS (attualmente non supportato) - SCOPRI (attualmente non supportato) - CENA (attualmente non supportata) - UNCATEGORIZZATO (emittente non riconosciuto) |
23. | cardData -> bin | NO | stringa{6} | Le prime 6 cifre del numero della carta. |
24. | cardData -> maschera | NO | stringa{4} | Le ultime 4 cifre del numero della carta. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
CONSIGLIO: Elemento hash (messaggio) viene utilizzato per autenticare
il documento. Per una descrizione di come viene calcolato l'hash, vedere la sezione Sicurezza delle transazioni.
Risposta alla notifica
In risposta alla notifica, ci si aspetta uno stato HTTP di 200 (OK) e un testo in formato XML (non codificato Base64), restituito dal Servizio partner nella stessa sessione HTTP, contenente una conferma di ricezione del messaggio.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8"?>
<confirmationList>
<serviceID>ServiceID</serviceID>
<recurringConfirmations>
<recurringConfirmed>
<clientHash>ClientHash</clientHash>
<confirmation>Confirmation</confirmation>
</recurringConfirmed>
</recurringConfirmations>
<hash>Hash</hash>
</confirmationList>
Il conferma è utilizzato per comunicare lo stato di verifica dell'autenticità della transazione da parte del Servizio partner. Il valore dell'elemento è determinato dalla verifica della correttezza del valore dell'elemento serviceID confrontando i valori del parametro ID ordine e importo nel messaggio di notifica e nel messaggio di avvio della transazione e verificando la coerenza dell'hash calcolato dai parametri del messaggio con il valore passato nel campo hash del messaggio.
Per l'elemento sono previsti due valori conferma:
a) CONFERMATO - i valori dei parametri in entrambi i messaggi e il parametro hash corrispondono - la transazione è autentica;
b) NON CONFERMATO - i valori nei due messaggi sono diversi o c'è una mancata corrispondenza dell'hash - la transazione non è autentica;
CONSIGLIO: Il hash (nella risposta al messaggio) è usato per autenticare la risposta ed è calcolato a partire dai valori dei parametri della risposta. Per una descrizione di come viene calcolato l'hash, vedere la sezione Sicurezza delle transazioni.
Se non c'è una risposta corretta alle notifiche inviate, il sistema di pagamento online farà un altro tentativo di trasmissione dopo che è trascorso un tempo specificato. Il servizio del partner deve eseguire la propria logica di business (ad esempio, lanciare un servizio di pagamento automatico, inviare una lettera, ecc. ClientHash.
Di seguito è riportato uno schema che descrive il rinnovo programmato dei messaggi (ci riserviamo, tuttavia, la possibilità di rinnovare uno qualsiasi di essi in qualsiasi momento).
Numero di tentativi | Intervallo fino al prossimo rinnovo |
---|---|
1-12 | 3 min |
13-156 | 10 min |
157-204 | 1 ora |
205-209 | 1 giorno |
NOTA: La ripetizione continua di un messaggio identico da parte del Sistema indica una risposta mancante o errata da parte del Servizio e richiede al Partner di diagnosticarne urgentemente la causa.
Ricezione corretta dell'identificativo del servizio (ClientHash), rende il Partner pronto ad addebitare automaticamente al Cliente i beni/servizi acquistati dal Servizio. Il processo consiste in transazioni e comunicazioni ITN.
Di seguito viene illustrato il processo di addebito automatico al cliente del servizio/bene (quindi RecurringAction=MANUAL/AUTO e il regolamento della transazione al Partner).
Il messaggio ITN inviato dopo un pagamento automatico è simile a quelli ricevuti dopo un pagamento unico. È esteso solo dal nodo RecurringData e (per i pagamenti con carta) CardData.
Per eseguire un addebito automatico, il servizio partner deve eseguire una pre-transazione con un valore di ClientHash parametro, coerente con il servizio di pagamento automatico precedentemente attivato (proveniente da RPAN), con una Stato di accettazione ricorrente parametro di NON APPLICABILE e il corrispondente valore del parametro Azione ricorrente parametro:
a) AUTO - pagamento ricorrente (addebito senza coinvolgimento del cliente),
b) MANUALE - pagamento con un solo clic (addebito ordinato da
il cliente, chiamato OneClick).
NOTA: La partecipazione del cliente all'opzione MANUALE, di solito, si limita alla chiamata di un messaggio (selezionando nel servizio l'opzione di pagamento con la carta memorizzata). Nella maggior parte dei casi, è necessaria un'autorizzazione aggiuntiva presso la banca (sotto forma di codice 3DS o CVC). Quindi, invece di un addebito (e dello stato dell'ordine in risposta alla pre-transazione), il sistema restituirà un link per continuare - questo è il comportamento predefinito del sistema nell'ambiente di test. Per testare lo scenario di carico senza la necessità di ulteriori autorizzazioni, è necessario dichiarare la necessità di modificare la configurazione del Sistema per la durata del test.
NOTA: Opzione non disponibile per i pagamenti automatici BLIK (BLIK
OneClick).
Il partner può disattivare il servizio di pagamento automatico in qualsiasi momento. Il processo può consistere in un messaggio che ordina la disattivazione e in un messaggio RPDN (dedicato agli eventi di cancellazione del servizio di pagamento automatico).
Può anche accadere che la cancellazione del servizio venga avviata dal lato AP (ad esempio, su richiesta del cliente, della banca o dell'organizzazione della carta). In tal caso, il sistema fornirà anche un messaggio RPDN.
Il servizio può essere disattivato tramite un messaggio dedicato. Tutti i parametri sono trasmessi con il metodo POST (all'indirizzo https://{gate_host}/disattiva_ricorrenze). Il protocollo è sensibile alle maiuscole e alle minuscole sia nei nomi dei parametri che nei valori. I valori dei parametri passati devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | L'ID del servizio partner, assegnato durante la registrazione del servizio, identifica in modo univoco il servizio partner nel sistema di pagamento online. |
2 | MessaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio con una lunghezza di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID); il valore del campo deve essere unico per il sito partner. |
3 | ClientHash | SÌ | stringa{1,64} | Identificatore di pagamento automatico. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
NOTA: L'elemento Hash (messaggio) viene utilizzato per autenticare il documento. Il valore di questo elemento è calcolato come valore di una funzione hash da una stringa contenente i valori concatenati di tutti i campi del documento e la chiave condivisa allegata.
In risposta alla notifica, nella stessa sessione HTTP viene restituito un testo in formato XML contenente una conferma di ricezione.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8"?>
<confirmationList>
<serviceID>ServiceID</serviceID>
<messageID>MessageID</messageID>
<recurringConfirmations>
<recurringConfirmed>
<clientHash>ClientHash</clientHash>
<confirmation>Confirmation</confirmation>
<reason>Reason</reason>
</recurringConfirmed>
</recurringConfirmations>
<hash>Hash</hash>
</confirmationList>
Il conferma è utilizzato per comunicare lo stato di verifica dell'autenticità dell'operazione da parte del Servizio. Il valore dell'elemento è determinato dalla verifica della correttezza dei valori dell'elemento serviceID e clientHash con quelli forniti nel messaggio RPAN all'inizio di un determinato pagamento di attivazione, nonché verificare la coerenza dell'hash calcolato dai parametri del messaggio con il valore fornito nel campo Hash.
Per l'elemento sono previsti due valori conferma:
a) CONFERMATO - i valori dei parametri sono corretti e il parametro Hash è coerente - l'operazione è autentica;
b) NON CONFERMATO - i valori in entrambi i messaggi non sono corretti o l'hash non corrisponde - l'operazione non è autentica;
NOTA: L'elemento hash (nel messaggio di risposta) è usato per autenticare la risposta ed è calcolato a partire dal valore dei parametri della risposta. Il valore di questo elemento è calcolato come valore di una funzione hash da una stringa contenente i valori concatenati di tutti i campi del documento (senza tag) e la chiave condivisa allegata. Per una descrizione dell'elemento Sicurezza delle transazioni.
Quando il pagamento automatico viene disattivato per un dato ClientHashL'invio di un messaggio dedicato sotto forma di documento XML avviene tramite protocollo HTTPS (porta predefinita 443), utilizzando il metodo POST, con un parametro denominato ricorrente. Questo parametro viene memorizzato utilizzando il meccanismo di codifica di trasporto Base64.
Formato del documento (XML)
<?xml version="1.0" encoding="UTF-8"?>
<recurringDeactivation>
<serviceID>ServiceID</serviceID>
<recurringData>
<recurringAction>RecurringAction</recurringAction>
<clientHash>ClientHash</clientHash>
<deactivationSource>DeactivationSource</deactivationSource>
<deactivationDate>DeactivationDate</deactivationDate>
<recurringData>
<hash>Hash</hash>
</recurringDeactivation>
I valori degli elementi: serviceID, clientHash relativi a ciascun pagamento ciclico disattivato, sono identici ai valori dei campi corrispondenti, indicati nel messaggio RPAN all'inizio del rispettivo pagamento di inizializzazione.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,10} | L'ID del servizio partner, assegnato durante la registrazione del servizio, identifica in modo univoco il servizio partner nel sistema di pagamento online. |
2 | dati ricorrenti -> recurringAction | SÌ | stringa{1,100} | Azione nel processo di pagamento automatico (in questo caso, il valore DISATTIVA). |
3 | dati ricorrenti -> clientHash | SÌ | stringa{1,64} | Identificatore di pagamento automatico. |
4 | recurringData -> deactivationSource | SÌ | stringa{1,64} | Motivo della disattivazione del pagamento automatico. Questa descrizione va considerata come informativa, l'elenco dei valori ammessi è in continua crescita e la comparsa di nuovi valori non può comportare la non accettazione del messaggio RPDN. Di seguito sono riportati i valori attuali: - SERVIZIOrichiesto dal Partner - ACQUIRENTEcommissionato dall'AP (ad esempio, al ricevimento di informazioni su fraudu) - BM_ITordinati dal cliente su fatture.autopay.eu - PAYBM: risultante dalla scadenza della carta. |
5 | dati ricorrenti -> data di disattivazione | SÌ | stringa{14} | L'ora di disattivazione del pagamento automatico, trasmessa nel formato YYYYMMDDhhmmss. (ora CET) |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
NOTA: L'elemento hash (messaggio) viene utilizzato per autenticare il documento. Il valore di questo elemento è calcolato come valore di una funzione hash da una stringa contenente i valori concatenati di tutti i campi del documento e una chiave condivisa allegata.
In risposta alla notifica, ci si aspetta uno stato HTTP 200 (OK) e un testo in formato XML (non codificato Base64), restituito dal Servizio nella stessa sessione HTTP, contenente una conferma di ricezione del messaggio.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8"?>
<confirmationList>
<serviceID>ServiceID</serviceID>
<recurringConfirmations>
<recurringConfirmed>
<clientHash>ClientHash</clientHash>
<confirmation>Confirmation</confirmation>
</recurringConfirmed>
</recurringConfirmations>
<hash>Hash</hash>
</confirmationList>
Il conferma è utilizzato per comunicare lo stato di verifica dell'autenticità dell'operazione da parte del Servizio. Il valore dell'elemento è determinato dalla verifica della correttezza dei valori dell'elemento serviceID e clientHash con quelli forniti nel messaggio RPAN all'inizio di un determinato pagamento di inizializzazione e verificando la coerenza dell'hash calcolato dai parametri del messaggio con il valore fornito nel campo hash.
Per l'elemento sono previsti due valori conferma:
a) CONFERMATO - i valori dei parametri sono corretti e i parametri hash sono coerenti - operazione autentica
b) NON CONFERMATO - i valori in entrambi i messaggi non sono validi o l'hash non corrisponde - l'operazione non è autentica
NOTA: L'elemento hash (nel messaggio di risposta) viene utilizzato per autenticare la risposta e viene calcolato a partire dai valori dei parametri della risposta. Per una descrizione di come viene calcolato l'hash, vedere la sezione Sicurezza delle transazioni.
In assenza di una risposta corretta alle notifiche inviate, il sistema farà ulteriori tentativi per comunicare lo stato più recente della transazione dopo che è trascorso il tempo specificato. Il Servizio partner deve eseguire la propria logica di business (ad esempio, l'invio di un'e-mail di conferma) solo dopo il primo messaggio relativo a un determinato stato di pagamento.
CONSIGLIO: Si consiglia di leggere anche le sezioni Monitoraggio delle comunicazioni ITN/ISTN/IPN/RPAN/RPDN e Schema di ripetizione dei messaggi ITN/ISTN/IPN/RPAN/RPDN.
L'avvio della transazione può essere effettuato con i parametri aggiuntivi descritti nelle sezioni seguenti.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | tipo | descrizione |
---|---|---|---|
8 | Lingua | stringa{1,2} | Selezione della lingua in cui i contenuti saranno presentati nel sistema. I valori accettabili sono: PL, EN, DE, CS, ES, FR, IT. L'uso di valori diversi da PL deve essere confermato durante l'integrazione e deve dipendere dall'effettiva scelta della lingua da parte del Cliente sul Sito web. |
9 | ClienteNRB | stringa{26} | Numero di conto del cliente, un parametro destinato esclusivamente ai Servizi partner che generano numeri di conto dedicati all'ordine o al cliente (cfr. Modello di regolamento per le transazioni dopo ogni pagamento). Sono ammesse solo cifre. Se durante l'integrazione è stato stabilito l'utilizzo di conti al di fuori della Polonia, il campo trasferisce l'IBAN e l'intervallo di dati previsto per il campo cambia in: caratteri latini alfanumerici (min. 15, max. 32 caratteri). |
10 | Codice Swift | stringa{8,11} | Il codice swift corrispondente al numero di conto indicato. Sono ammesse solo cifre. Parametro da fornire se durante l'integrazione è stato stabilito l'uso di account non polacchi. |
11 | Modalità di trasferimento estero | stringa{4,5} | Il sistema con cui deve essere effettuato il trasferimento del regolamento estero: SEPA (Single Euro Payments Area) - possibilità di effettuare trasferimenti in valuta euro all'interno degli Stati membri dell'Unione Europea, nonché in altri Paesi del Vecchio Continente, come ad esempio Islanda, Liechtenstein, Norvegia, Svizzera, Monaco o Andorra, SWIFT - trasferimenti all'estero non realizzabili con la SEPA (ad esempio, valuta diversa dall'euro), comporta costi di trasferimento più elevati rispetto alla SEPA. Valori accettabili: SEPA e SWIFT. Parametro da fornire se durante l'integrazione è stato stabilito l'uso di conti al di fuori della Polonia. |
12 | Paese fiscale | stringa{1,64} | Paese di residenza del pagatore. |
13 | ClienteIP | stringa{1,15} | L'indirizzo IP dell'utente, un parametro destinato solo ai servizi partner che eseguono il sistema in background (cfr. Pre-transazione e Ordinare i dati di trasferimento in una transazione di trasferimento veloce). |
14 | Titolo | stringa{1,95} | Titolo del bonifico che compensa la transazione, un parametro destinato solo ai Servizi partner compensati tramite bonifico dopo ogni pagamento (cfr. Modello di regolamento delle transazioni dopo ogni pagamento). In alcuni casi, indipendentemente dall'AP, il titolo del trasferimento del regolamento può essere modificato autonomamente dalla Banca presso la quale è avvenuto il regolamento. Caratteri alfanumerici latini e caratteri dell'intervallo accettabili: dove il segno "/" sarà sostituito da un "-" per le transazioni in uscita. |
15 | NomeRicevitore | stringa{1,35} | Nome del destinatario del bonifico che compensa la transazione, parametro destinato solo ai Servizi partner compensati tramite bonifico dopo ogni deposito (cfr. Modello di regolamento delle transazioni dopo ogni pagamento). Caratteri alfanumerici latini e caratteri dell'intervallo accettabili:
|
16 | Prodotti | stringa{1,10000} | Informazioni sui prodotti inclusi nella transazione, trasmesse come XML codificato con protocollo di trasporto Base64. La descrizione della struttura in parte Cestino prodotti. |
17 | Telefono del cliente | stringa{9-15} | Numero di telefono dell'utente. Sono ammesse solo cifre. |
18 | ClientePesel | stringa{11} | Numero PESEL dell'utente. Sono ammesse solo cifre. |
20 | Numero cliente | stringa{1,35} | Numero di cliente nel Servizio. |
21 | Numero di fattura | stringa{1,100} | Il numero del documento finanziario nel Servizio. |
22 | Nome dell'azienda | stringa{1,150} | Nome della società per la verifica automatica del contributore, ad esempio Cool Company. |
23 | Nip | stringa{1,10} | Il numero di partita IVA dell'azienda verificata, ad esempio 5851351185. Sono ammesse solo cifre. |
24 | Regon | stringa{9,14} | Il numero di identificazione REGON dell'azienda verificata, ad esempio 191781561. Sono ammesse solo cifre. |
25 | NomeVerifica | stringa{1,32} | Il nome di battesimo fornito dal Servizio per la verifica automatica del collaboratore, ad esempio Jan. Sono ammesse solo le lettere dell'alfabeto polacco. |
26 | NomeVerifica | stringa{1,64} | Nome indicato nel Servizio per la verifica automatica del contribuente, ad esempio Smith. Sono ammesse solo le lettere dell'alfabeto polacco. |
27 | VerificaStreet | stringa{1,64} | Via fornita dal Servizio per la verifica automatica, ad esempio Long. Sono ammesse solo lettere dell'alfabeto polacco e numeri. |
28 | VerificaStreetHouseNo | stringa{1,64} | Il numero civico fornito dal Servizio per la verifica automatica del contribuente. Sono ammesse solo lettere dell'alfabeto polacco e numeri. |
29 | VerificaStradaSalaNessuno | stringa{1,64} | Il numero di scala fornito dal Servizio per la verifica automatica del contribuente. Sono ammesse solo lettere dell'alfabeto polacco e numeri. |
30 | VerificaStreetPremiseNo | stringa{1,64} | Numero di telefono fornito dal Servizio per la verifica automatica del contribuente. Sono ammesse solo lettere dell'alfabeto polacco e numeri. |
31 | Codice postale di verifica | stringa{1,64} | Codice postale fornito dal Servizio per la verifica automatica del contribuente, formato XX-XXX, ad esempio 80-180. Sono ammessi solo i numeri e il segno "-". |
32 | VerificaCittà | stringa{1,64} | Città specificata nel Servizio per la verifica automatica del collaboratore, ad esempio Varsavia. Sono ammesse solo lettere dell'alfabeto polacco e numeri. |
33 | VerificaNRB | stringa{1,26} | Il numero di conto bancario fornito dal Servizio per la verifica automatica del contribuente, ad esempio 88154010982001554242710005. Sono ammesse solo cifre. |
35 | Stato di accettazione ricorrente | stringa{1,100} | Informazioni sull'accettazione dei termini e delle condizioni di pagamento automatico che indicano se il Cliente ha accettato i termini e le condizioni di pagamento automatico o se l'accettazione deve essere imposta dal Sistema. Campo necessario per i pagamenti automatici nel modello WhiteLabel del servizio di pagamento fornito da AP al Cliente (il Cliente paga una commissione). La disponibilità dei termini e delle condizioni può essere verificata richiamando il metodo legalData. Valori ammessi: NON APPLICABILE - l'accettazione dei termini e delle condizioni non è richiesta (pagamento singolo o azione di addebito, cioè recurringAction con valore AUTO o MANUAL) ACCETTATO - dichiarazione di accettazione dei termini e delle condizioni del servizio dell'appaltatore (da allegare al contratto). RecurringAcceptanceID) PROMEMORIA - sul modulo della carta viene proposto il consenso per l'iscrizione alla carta, la cui spunta dà il via al pagamento automatico FORZA - Il consenso al salvataggio della carta è richiesto nel modulo della carta, altrimenti il pagamento non è possibile. NOTA: La disponibilità del ACCETTATO/PROMOSSO/FORZATO L'opzione dipende dagli accordi commerciali (in particolare, la determinazione del luogo di visualizzazione del consenso/regole del servizio di pagamento automatico). |
36 | Azione ricorrente | stringa{1,100} | Campo obbligatorio per i pagamenti automatici, che specifica le azioni possibili su un pagamento automatico. Valori ammessi: INIT_WITH_PAYMENT - attivazione del pagamento automatico con pagamento di beni/servizi INIT_WITH_REFUND - attivazione di un pagamento automatico seguito da una restituzione di pagamento AUTO - pagamento ciclico (addebito senza coinvolgimento del cliente) MANUALE - pagamento con un solo clic (addebito avviato dal cliente) NOTA: Opzione non disponibile per i pagamenti automatici BLIK (BLIK OneClick). DISATTIVA - per disattivare il pagamento automatico |
37 | ClientHash | stringa{1,64} | Identificatore automatico di pagamento. Questo parametro consente di assegnare uno strumento di pagamento (ad es. carta, BLIK) a un cliente in modo anonimo. In base ad esso, il Partner può attivare gli addebiti successivi nel modello di pagamento automatico. |
38 | Nome dell'operatore | stringa{1,35} | Il nome dell'operatore del numero di telefono indicato. Valori ammessi: Plus, Play, Orange, T-Mobile. |
39 | ICCID | stringa{12,19} | Numero della carta SIM del numero di telefono specificato. Valori ammessi (sono ammesse solo le cifre): Per Plus: 12 o 13 cifre Per Play, Orange, T-Mobile: 19 cifre |
40 | Codice di autorizzazione | stringa{6} | Un codice di autorizzazione al pagamento inserito dal lato del servizio/sistema (attualmente supportato in BLIK). Il suo utilizzo significa che non è necessario reindirizzare il cliente alla pagina del Canale di pagamento. Dovrebbe quindi essere inserito solo tramite la Pre-transazione. Il formato dipende dal canale di pagamento. Per il BLIK effettuato in background (BLIK 0, eventualmente BLIK OneClick): 6 cifre. |
41 | Tipo di schermo | stringa{4,6} | Tipo di visualizzazione del modulo di autorizzazione al pagamento. Valori accettabili: IFRAME - non supportato COMPLETO. |
42 | Chiave BlikUID | stringa{1,64} | Chiave Alias UID (utilizzata in BLIK). È l'identificativo univoco dell'utente del Servizio. Caratteri alfanumerici latini e caratteri ammessi: . |
43 | Etichetta BlikUID | stringa{1,20} | Etichetta Alias UID (utilizzata in BLIK), che verrà presentata al Cliente nell'applicazione bancaria per distinguere i conti presso il Partner. Si raccomanda di utilizzare il login, il nickname o l'indirizzo e-mail assegnato al conto autorizzato del Cliente. Se esiste la possibilità che i dati personali (ad esempio, l'indirizzo e-mail) vengano trasmessi al Partner. jan.kowalski@poczta.pl) rendere i dati riservati (sostituendo i 3 punti con alcuni caratteri, ad es. ja...ki@po...pl). Caratteri alfanumerici latini e caratteri dell'intervallo: . : @ - , spazio. |
44 | BlikAMKey | stringa{1,64} | Chiave alias dell'applicazione mobile della banca (utilizzata in BLIK). Si tratta dell'identificativo unico del vostro conto BLIK. Cifre accettabili. |
45 | URL di ritorno | stringa{1,1000} | Indirizzo dinamico di ritorno del pagamento che inizia con http/https. URL validi accettabili. Possono contenere IP, porta, sottodominio, caratteri polacchi e (dopo il dominio) parametri e caratteri speciali: ,'+&;%$#_!=. . |
46 | Modalità di transazione | stringa{2,10} | Possibilità di modificare il regolamento delle transazioni. Mancanza di parametri (retrocompatibilità) trattati come invio di valori COMUNI. Il parametro NESSUNO fa sì che la transazione venga trattata come una ricarica del saldo prepagato e non venga regolata. Valori accettabili: COMUNE NESSUNO |
47 | Token di pagamento | stringa{1,100000} | Token utilizzato nei portafogli Visa e Google Pay collocati direttamente sul sito web del Partner (autorizzazione senza reindirizzamento al Sistema). In questo caso, il sito web si integra direttamente con le API di Visa e/o Google per recuperare l'handle della carta. Il token ottenuto viene trasmesso al Sistema di pagamento online in forma codificata con il protocollo di trasporto Base64. NOTA: Il parametro non è necessario se la selezione dei canali di pagamento (e l'accesso al portafoglio) avviene direttamente sulla pagina del Sistema di pagamento online.... |
48 | Numero di documento | stringa{1,150} | Numero del documento finanziario. |
49 | RecurringAcceptanceID | stringa{1,10} | L'identificativo dei termini e delle condizioni del servizio di pagamento automatico visualizzati sul Servizio e accettati dal Cliente. Campo obbligatorio per i pagamenti automatici nel Etichetta bianca modello del servizio di pagamento fornito da AP al Cliente (il Cliente paga una commissione). L'ID dei termini e delle condizioni appropriati per la lingua selezionata (e il canale di pagamento) deve essere recuperato utilizzando l'opzione dati legali metodo. |
50 | Tempo di accettazione ricorrente | stringa{1,19} | Campo opzionale. Al momento dell'accettazione dei Termini e delle Condizioni da parte del Cliente, questo valore sarà verificato dal Sistema con l'ora dei Termini e delle Condizioni con il dato RecurringAcceptanceID. Valore di esempio: 2014-10-30 07:54:50 (ora in CET). |
51 | Stato di accettazione della regolamentazione predefinita | stringa{1,100} | Informazioni sull'accettazione dei termini e delle condizioni del servizio di pagamento. Campo richiesto nel modulo Etichetta bianca modello del servizio di pagamento fornito da AP al Cliente (il Cliente paga la commissione). La sua assenza può essere associata a un errore o alla visualizzazione della pagina di transizione del sistema con l'obbligo di accettare i termini e le condizioni. La disponibilità del regolamento può essere verificata chiamando il servizio dati legali metodo. Valori ammessi: ACCETTATO - accettazione di norme e regolamenti del servizio di controparte (da specificare insieme a DefaultRegulationAcceptanceID). |
52 | DefaultRegulationAcceptanceID | stringa{1,10} | Identificatore dei termini e delle condizioni del servizio di pagamento fornito da AP al cliente e visualizzato sul sito web e accettato dal cliente. Campo necessario nel modello WhiteLabel del servizio di pagamento fornito da AP al Cliente (il Cliente paga la commissione). L'ID delle norme e dei regolamenti rilevanti per la lingua (e il canale di pagamento) selezionati deve essere recuperato con il metodo legalData. |
53 | Tempo di accettazione del regolamento predefinito | stringa{1,19} | Campo opzionale. L'ora in cui le norme e i regolamenti sono stati accettati dal cliente; questo valore sarà verificato dal sistema con l'ora delle norme e dei regolamenti con il DefaultRegulationAcceptanceID specificato; valore di esempio: 2014-10-30 07:54:50. (Ora in CET) |
54 | Tipo di portafoglio | stringa{1,32} | Il tipo di portafoglio di pagamento determina l'origine del parametro PaymentToken (se è stato inviato). I valori disponibili sono: SDK_NATIVE - formato scheda nativo (SDK mobile) WIDGET - widget della carta (formato della carta prima dell'inizio della transazione) _ |
55 | Tempo di validità ricorrente | stringa{10} | Data di scadenza del pagamento automatico BLIK attivato, formato AAAA-MM-GG (valore di esempio: 2024-01-30). Se il parametro manca, verrà proposta una data di configurazione predefinita impostata durante l'integrazione (solitamente indefinita). |
56 | URL del servizio | stringa{1,1000} | Parametro che specifica l'indirizzo web del negozio da cui è stato avviato il pagamento, iniziando con http/https. URL valido accettabile. Può contenere IP, porta, sottodominio, caratteri polacchi, nonché (dopo il dominio) parametri e caratteri speciali: ,'+&;%$#_!= |
57 | Etichetta BlikPPL | stringa{1,35} | Etichetta del pagamento ricorrente BLIK, visualizzata nell'applicazione mobile quando viene accettato. Se il parametro manca, verrà utilizzato il suo valore predefinito (impostato durante l'integrazione). |
58 | NomeRicevitorePerFronte | stringa{1,35} | Nome del destinatario del pagamento BLIK, visualizzato nell'applicazione mobile quando si accetta un pagamento. Se il parametro manca, verrà utilizzato il suo valore predefinito (di solito l'URL del servizio). NOTA: Il servizio deve essere concordato con il mentore aziendale. Caratteri alfanumerici latini accettabili, caratteri compresi nell'intervallo: êÓó±¶³¿¿Ææñ-/,!()=[]{};:? e lo spazio. |
59 | Nome del titolare del conto | stringa{1,100} | Nome del proprietario del mezzo di pagamento. |
Il carrello dei prodotti viene inviato come parametro (metodo POST) denominato Prodotti. Il suo valore è codificato con il protocollo di trasporto Base64.
Formato prima della codifica (XML)
<?xml version="1.0" encoding="UTF-8"?>
<productList>
<product>
<subAmount>SubAmount1</subAmount>
<params>Params1</params>
</product>
<product>
<subAmount>SubAmount2</subAmount>
<params>Params2</params>
</product>
…
<product>
<subAmount>SubAmountN</subAmount>
<params>ParamsN</params>
</product>
</productList>
Il elenco prodotti deve contenere almeno 1 nodo prodotto ogni elemento prodotto deve contenere un nodo subImporto e params ogni elemento.
Il subImporto deve contenere un importo positivo del prodotto (il separatore decimale è un punto seguito da due cifre al centesimo). La somma degli importi dei prodotti successivi deve essere uguale all'importo specificato nell'elemento Importo (importo della transazione).
Se le condizioni di cui sopra non sono soddisfatte, il sistema restituisce un errore.
Il params può essere utilizzato per trasmettere informazioni specifiche sul prodotto. I nomi dei parametri e il loro significato sono soggetti a un accordo in forma operativa ogni volta durante l'integrazione.
Di seguito sono riportati alcuni esempi di parametri di prodotto e il loro significato.
<params>
<param name="productName" value="Product name 1" />
</params>
<params>
<param name="productType" value="ABCD" />
<param name="productName" value="Product name 1" />
</params>
<params>
<param name="productID" value="12456" />
</params>
<params>
<param name="idBalancePoint" value="12456" />
</params>
Nel caso in cui il Partner utilizzi la fatturazione TRASFERIMENTO DI MASSA, cioè
ogni transazione viene regolata immediatamente al momento del deposito e
i regolamenti vengono effettuati a livello di prodotto/punto di fatturazione (cioè dopo il deposito vengono effettuati tanti trasferimenti di regolamento quanti sono i prodotti nel paniere), e
non sono stati impostati dati di fatturazione fissi (o non tutti i dati di fatturazione sono impostati in modo rigido nella configurazione di fatturazione),
Il partner deve fornire in ogni prodotto i dati mancanti per la fatturazione di quel prodotto. I parametri disponibili che costituiscono i dati sono:
clienteNRB - numero di conto target per la fatturazione.
Formato NRB (26 cifre con checksum). Se, durante l'integrazione, viene stabilito l'utilizzo di conti non polacchi, allora il campo trasferisce l'IBAN e l'intervallo di dati previsto per il campo cambia in: caratteri latini alfanumerici (min. 15, max. 32 caratteri). Specificando valori nel formato IBAN sarà necessario specificare nel prodotto anche i parametri swiftCode, foreignTransferMode.
titolo - Il titolo del trasferimento di regolamento del prodotto. In alcuni casi, indipendentemente dall'AP, il titolo del trasferimento del regolamento può essere modificato autonomamente dalla Banca da cui è avvenuto il regolamento.
Caratteri alfanumerici latini e caratteri dell'intervallo accettabili:
NomeRicevitore - il nome del destinatario del bonifico che effettua la compensazione del prodotto.
Caratteri alfanumerici latini e caratteri dell'intervallo accettabili:
Esempio di applicazione dei parametri a un prodotto:
<params>
<param name="customerNRB" value="83109010980000000107285707" />
<param name="title" value="Settlement of product X" />
<param name="receiverName" value="John Smith" />
</params>
Esempio di parametri del carrello:
<params>
<param name="idBalancePoint" value="12456" />
<param name="productName" value="Balance transfer for Autopay" />
</params>
Se durante le discussioni relative al paniere prodotti è stato stabilito che il suo riepilogo deve essere visualizzato nella pagina del Sistema (schermata di selezione del Canale di pagamento), è possibile specificare le etichette di ciascun parametro utilizzato nel paniere. Il Sistema può utilizzare l'etichetta predefinita del parametro o adottarla all'inizio della transazione.
Il valore di titolo sarà visualizzato prima del valore del parametro del prodotto.
Esempio di attributo title
<params>
<param name="productName" value="Product name 1" title="Name"/>
<param name="productType" value="ABCD" title="Type"/>
</params>
Le notifiche istantanee di una modifica dello stato di una transazione possono includere campi aggiuntivi (vedere Schemi di preautorizzazione). La loro presenza è un
configurazione, determinata in fase di integrazione (per impostazione predefinita viene inviato solo il nodo clienteDati).
Il fatto che si tratti di un messaggio ITN o IPN è determinato esclusivamente dalla presenza di un nodo prodotto.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | tipo | descrizione |
---|---|---|---|
11 | indirizzoIP | stringa{1,15} | L'indirizzo IP del cliente registrato dal front-end del sistema, o l'indirizzo trasmesso al sistema nel parametro CustomerIP, o l'IP da cui è stata avviata la transazione nel sistema. |
13 | numero cliente | stringa{1,35} | Numero di cliente nel servizio. |
21 | titolo | stringa{1,140} | Titolo del pagamento. In alcuni casi, al di fuori del controllo di AP, il titolo del bonifico può essere modificato autonomamente dalla Banca in cui è avvenuto il pagamento del cliente. |
22 | dati del cliente> fNome | stringa{1,128} | Nome del pagatore. |
23 | dati del cliente> lNome | stringa{1,128} | Cognome del pagatore. |
24 | dati del cliente> nome della strada | stringa{1,128} | Nome della via del pagatore. |
25 | dati del cliente-> viaCasaNo | stringa{1,10} | Numero civico del pagatore. |
26 | dati del cliente-> viaStaircaseNo | stringa{1,10} | Numero di scala del pagatore. |
27 | dati del cliente-> viaPremioNo | stringa{1,10} | Numero di sede del pagatore. |
28 | dati del cliente> codice postale | stringa{1,6} | Codice postale dell'indirizzo del pagatore. |
29 | dati del cliente; città | stringa{1,128} | Città pagante. |
30 | dati del cliente; nrb | stringa{1,26} | Conto bancario del pagatore. |
31 | DatiCliente> DatiMittente | stringa{1,600} | Dati del pagatore in forma indivisa. |
32 | verificaStato | enum | Elemento contenente lo stato di verifica del pagatore. Si tratta di un enum che consente i valori PENDING, POSITIVE e NEGATIVE. |
n.d. | motivi della verifica | lettera | Un elenco dei motivi della verifica negativa o in sospeso. I motivi possono essere molteplici. |
33 | verificaStato | enum | Motivazione dettagliata in caso di esito negativo o di verifica in corso. Valori ammessi per la verifica negativa: - NOME - il nome o il cognome non corrispondono - NRB - il numero di conto non corrisponde - TITOLO - il titolo non corrisponde - STREET - il nome della via non corrisponde - HOUSE_NUMBER - numero civico non corretto - SCALA - numero di scala non corretto - PREMISE_NUMBER - il numero del locale non è corretto. - POSTAL_CODE - il codice postale non corrisponde - CITTA' - la città non è d'accordo - BLACKLISTED - il conto da cui è stato effettuato il pagamento è nella lista nera. - SHOP_FORMAL_REQUIREMENTS - il servizio verificato non soddisfaceva le condizioni formali Valori ammessi per la verifica in corso: - NEED_FEEDBACK - è in corso l'attesa che il servizio soddisfi le condizioni formali. NOTA: Per contare i valori di Hash, vengono presi i valori dei seguenti nodi: motivi della verifica, verificationStatusReason. |
60 | importo iniziale | importo | L'importo della transazione indicato nel Link di pagamento (non include l'importo della commissione addebitata al Cliente, se presente). La somma della commissione del Cliente e importo iniziale è sul campo importopoiché si tratta del valore della transazione risultante). Come separatore decimale si utilizza un punto - ".". Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. |
70 | dati ricorrenti-> recurringAction | stringa{1,100} | Azione nel processo di pagamento automatico (il significato e i valori ammessi sono descritti nella sezione Definizioni). |
71 | dati ricorrenti-> clientHash | stringa{1,64} | Identificatore di pagamento automatico generato dal PA e trasmesso al Partner al momento dell'attivazione del pagamento automatico. |
72 | dati ricorrenti-> data di scadenza | stringa{14} | Scadenza del pagamento automatico, trasmessa nel formato YYYMMDDhhmmss. (ora CET) |
73 | cardData-> indice | stringa{1,64} | Indice della carta (se viene utilizzata una carta). L'indice identifica una carta con una data di scadenza (la modifica della data o del numero della carta cambia il valore di questo parametro). |
74 | cartaDati-> validitàAnno | stringa{4} | Validità della carta nel formato YYYY (se è stata utilizzata una carta). |
75 | data della carta> mese di validità | stringa{4} | Validità della carta in formato mm (se la carta è utilizzata). |
76 | dati della carta | stringa{1,64} | Tipo di carta (se viene utilizzata una carta). Valori possibili: - VISA - MASTERCARD - MAESTRO - AMERICAN EXPRESS (attualmente non supportato) - SCOPRI (attualmente non supportato) - CENA (attualmente non supportata) - UNCATEGORIZZATO (emittente non riconosciuto) |
77 | cardData-> bin | stringa{6} | Le prime 6 cifre del numero della carta (se viene utilizzata una carta). Passato se il parametro cardData-> mask non è passato. |
78 | schedaDati-> maschera | stringa{4} | Le ultime 4 cifre del numero della carta (se viene utilizzata una carta). Viene passato se il parametro cardData->bin non viene passato. |
90 | prodotto-> subImporto | importo | L'importo del prodotto utilizza un punto fermo come separatore decimale - '.'. Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. Nodo disponibile solo nelle comunicazioni IPN. |
91 | prodotto-> params | lettera | Parametri di prodotto successivi in base al formato del carrello all'avvio della transazione. Nodo disponibile solo nei messaggi IPN. |
NOTA: Per il conteggio dei valori Hash, l'opzione valore degli attributi del successivo prodotto.params nodi vengono presi.
Esempio di messaggio ITN/IPN con parametri aggiuntivi (XML)
<?xml version="1.0" encoding="UTF-8"?>
<transactionList>
<serviceID>ServiceID</serviceID>
<transactions>
<transaction>
<orderID>OrderID</orderID>
<remoteID>RemoteID</remoteID>
<amount>999999.99</amount>
<currency>PLN</currency>
<gatewayID>GatewayID</gatewayID>
<paymentDate>YYYYMMDDhhmmss</paymentDate>
<paymentStatus>PaymentStatus</paymentStatus>
<paymentStatusDetails>PaymentStatusDetails</paymentStatusDetails>
<addressIP>127.0.0.1</addressIP>
<customerNumber>1111111</customerNumber>
<title>title</title>
<customerData>
<fName>fName</fName>
<lName>lName</lName>
<streetName>streetName</streetName>
<streetHouseNo>streetHouseNo</streetHouseNo>
<streetStaircaseNo>streetStaircaseNo</streetStaircaseNo>
<streetPremiseNo>streetPremiseNo</streetPremiseNo>
<postalCode>postalCode</postalCode>
<city>city</city>
<nrb>nrb</nrb>
<senderData>senderData</senderData>
</customerData>
<verificationStatus>verificationStatus</verificationStatus>
<verificationStatusReasons>
<verificationStatusReason>reason1</verificationStatusReason>
<verificationStatusReason>reason2</verificationStatusReason>
<verificationStatusReason>reason3</verificationStatusReason>
</verificationStatusReasons>
<startAmount>999998.99</startAmount>
<recurringData>
<recurringAction>RecurringAction</recurringAction>
<clientHash>ClientHash</clientHash>
<expirationDate>YYYYMMDDhhmmss</expirationDate>
</recurringData>
<cardData>
<index>Index</index>
<validityYear>ValidityYear</validityYear>
<validityMonth>ValidityMonth</validityMonth>
<issuer>Issuer</issuer>
<bin>BIN</bin>
</cardData>
<product>
<subAmount>SubAmount</subAmount>
<params>
<param name="idBalancePoint" value="idBalancePoint"/>
<param name="invoiceNumber" value="invoiceNumber"/>
<param name="customerNumber" value="customerNumber"/>
<param name="subAmount" value="SubAmount"/>
</params>
</product>
</transaction>
</transactions>
<hash>Hash</hash>
</transactionList>
Stato del pagamento (paymentStatus) | Stato di verifica | Dettagli della verifica (verificationStatusReasons) | Dettagli |
---|---|---|---|
IN ATTESA | IN ATTESA | Vuoto | Il cliente ha selezionato il metodo di pagamento. |
SUCCESSO | IN ATTESA | Vuoto | La transazione è stata pagata, il sistema è in attesa di recuperare i dati del contribuente dal conto. |
SUCCESSO | IN ATTESA | BISOGNO DI UN RISCONTRO | Autopay è in attesa che il Partner soddisfi le condizioni formali. |
SUCCESSO | POSITIVO | Vuoto | La verifica ha avuto esito positivo. |
SUCCESSO | NEGATIVO | Elenco dei motivi di NEGATIVO | Verifica negativa. |
Stato del pagamento (paymentStatus) | Stato di verifica | Dettagli della verifica (verificationStatusReasons) | Dettagli |
---|---|---|---|
IN ATTESA | IN ATTESA | Vuoto | Il cliente ha selezionato il metodo di pagamento. |
FALLIMENTO | IN ATTESA | Vuoto | La transazione non è stata completata correttamente. Lo stato di verifica non verrà fornito. |
Il messaggio ITN per una transazione in entrata contiene, oltre allo stato del pagamento (campo Stato del pagamento), una descrizione dettagliata di questo stato (campo pagamentoStatoDettagli). Questa descrizione è da considerarsi informativa, l'elenco dei valori ammessi è in continua crescita e la comparsa di nuovi valori non può implicare la non accettazione del messaggio ITN.
Valore del campo | Significato del campo |
---|---|
AUTORIZZATO | transazione autorizzata da un Canale di pagamento |
ACCETTATO | transazione approvata dal Call Center (ad esempio, a seguito di un reclamo andato a buon fine) |
RIFIUTATO | Transazione interrotta da un canale di pagamento (banca/agente di compensazione) |
RIFIUTATO_DA_UTENTE | transazione interrotta dal Cliente |
IMPORTO_ERRATO | è stato pagato un importo diverso da quello indicato all'inizio della transazione |
SCADUTO | transazione scaduta |
ANNULLATO | una transazione annullata dal Servizio Partner o dal Call Centre (ad esempio su richiesta del Cliente). Non è possibile avviare una nuova transazione o continuare una transazione precedentemente avviata con la stessa ID ordine |
RICORSIONE_INATTIVA | errore ciclico nell'attività di pagamento |
ALTRO_ERRORE | si è verificato un altro errore durante l'elaborazione della transazione |
Valore del campo | Significato del campo | Codice di errore dell'organizzazione della scheda opzionale |
---|---|---|
ERRORE_DI_CONNESSIONE | errore di connessione con la banca dell'emittente della carta di pagamento | ✔ |
LIMITE_DI_CARTA_SUPERATO | errore nei limiti della carta di pagamento | ✔ |
ERRORE DI SICUREZZA | errore di sicurezza (ad es. cvv errato) | ✔ |
NON ONORE | Rifiuto dell'autorizzazione in banca; suggerimento di contattare il cliente con l'emittente della carta | ✔ |
TREEDI_NEGATIVO | transazione non riuscita in 3DS | ✔ |
CARTA_EXPIRED | carta non valida | ✔ |
NUMERO_CARTA_ERRATA | numero di carta errato | ✔ |
FRODE_SUSPETTO | sospetto di frode (ad esempio, smarrimento della carta, ecc.) | ✔ |
STOP_RECURRING | impossibilità di ripetizione a causa dell'annullamento delle istruzioni del cliente | ✔ |
VUOTO | transazione abbandonata o errore di comunicazione | ✖ |
NON CLASSIFICATO | altri errori | ✔ |
Valore del campo | Significato del campo |
---|---|
FONDI_INSUFFICIENTI | Mancanza di fondi. Messaggio consigliato da visualizzare per il cliente: Pagamento non riuscito - rifiuto della banca. Verificare il motivo del rifiuto nella domanda della banca. Se il motivo è che avete superato il limite, potete aumentarlo contattando la vostra banca. |
LIMIT_EXCEED | Errore nei limiti (es. importi). Messaggio consigliato da visualizzare al cliente: Pagamento non riuscito - rifiuto della banca. Verificare il motivo del rifiuto nella domanda della banca. Se il motivo è che avete superato il limite, potete aumentarlo contattando la vostra banca. |
BAD_PIN | è stato inserito un PIN errato al momento della conferma della transazione |
EMITTENTE_DECISO, UTENTE_DECISO, SEC_DECISO | transazione terminata dal cliente |
TIMEOUT e AM_TIMEOUT | timeout nella comunicazione con l'applicazione mobile della banca |
USER_TIMEOUT | timeout in attesa della conferma della transazione da parte del cliente |
Nel caso di un Partner che utilizza struttura estesa (Cestino prodotti con più punti di fatturazione), il sistema fornisce una notifica indipendente dei cambiamenti di stato per ciascun prodotto. Questo servizio ha senso se i singoli punti di fatturazione devono ricevere le proprie notifiche. In questo caso, la configurazione dell'IPN (indirizzo per le notifiche, campi da includere nel messaggio, ecc.) è memorizzata proprio a livello di configurazione del punto di fatturazione. La struttura dell'IPN è simile a quella dell'ITN (ampliata solo con un prodotto nodo simile a quello descritto nella sezione Campi aggiuntivi nel messaggio ITN/ transazione di inserimento IPN, completata solo dalla ripetizione dell'espressione subImporto nei parametri). Esempio di IPN nella sottosezione Campi aggiuntivi nel messaggio ITN/IPN di una transazione di ingresso).
È possibile fornire messaggi relativi a tutte le erogazioni (liquidazioni, erogazioni a saldo e rimborsi) effettuate dal Sistema nell'ambito del servizio di pagamento. Poiché il servizio non è abilitato di default, la necessità di questo servizio, insieme all'indirizzo postale ISTN, deve essere richiesta dal Partner in fase di determinazione dei requisiti.
In caso di esito positivo dell'avvio della comunicazione ISTN, il Sistema trasmette immediatamente le notifiche relative all'ordine dell'operazione di regolamento (eventuali prelievi/rimborsi) e alla modifica del suo stato. Le conferme vengono inviate all'indirizzo del server di servizio del Partner stabilito durante la configurazione aggiuntiva del Servizio del Partner:
https://shop_name/receipt_of_settlement_information
Questa notifica consiste nell'invio da parte del Sistema di un documento XML contenente i nuovi stati delle transazioni. Il documento viene inviato tramite il protocollo HTTPS (porta predefinita 443). Il documento viene inviato con il metodo POST, come parametro HTTP denominato transazioni. Questo parametro viene memorizzato utilizzando il meccanismo di codifica Base64.
Formato del documento (XML)
<?xml version="1.0" encoding="UTF-8"?>
<transactionList>
<serviceID>ServiceID</serviceID>
<transactions>
<transaction>
<isRefund>true/false</isRefund>
<productID>ProductID</productID>
<orderID>OrderID</orderID>
<orderOutID>OrderOutID</orderOutID>
<remoteID>RemoteID</remoteID>
<remoteOutID>RemoteOutID</remoteOutID>
<amount>999999.99</amount>
<currency>PLN</currency>
<transferDate>YYYYMMDDhhmmss</transferDate>
<transferStatus>TransferStatus</transferStatus>
<transferStatusDetails>TranasferStatusDetails</transferStatusDetails>
<title>Title</title>
<receiverBank>ReceiverBank</receiverBank>
<receiverNRB>ReceiverNRB</receiverNRB>
<receiverName>ReceiverName</receiverName>
<receiverAddress>ReceiverAddress</receiverAddress>
<senderBank>SenderBank</senderBank>
<senderNRB>SenderNRB</senderNRB>
</transaction>
</transactions>
<hash>Hash</hash>
</transactionList>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | NO | stringa{1,10} | L'ID del servizio partner, assegnato durante la registrazione del servizio, identifica in modo univoco il servizio partner nel sistema di pagamento online. |
2 | isRefund | NO | Booleano | Informazioni sul fatto che l'ISTN si riferisca alla restituzione di una transazione (true) o al normale regolamento (false). |
3 | ID prodotto | NO | stringa{1,36} | L'identificativo del prodotto fatturato dal paniere di prodotti della transazione in entrata; il valore del campo deve essere unico per il Servizio partner. |
4 | ID ordine | NO | stringa{1,32} | Identificatore di transazione in ingresso, composto da un massimo di 32 caratteri alfanumerici latini; il valore del campo deve essere unico per il Servizio partner. |
5 | orderOutID | NO | stringa{1,32} | Identificatore della transazione in uscita, composto da un massimo di 32 caratteri alfanumerici latini. Il campo può essere assegnato dal Servizio (nel caso di un ordine di fatturazione) o dal Sistema di pagamento online. |
6 | ID remoto | NO | stringa{1,20} | Identificativo alfanumerico della transazione in entrata assegnato dal Sistema di pagamento online (dato se un pagamento è collegato al regolamento). |
7 | remoteOutID | NO | stringa{1,20} | L'identificativo alfanumerico dell'operazione di regolamento assegnato dal Sistema di pagamento online. |
8 | importo | SÌ | importo | Importo della transazione. Un punto - '. - viene utilizzato come separatore decimale. Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. |
9 | valuta | SÌ | stringa{1,3} | Valuta della transazione. |
40 | data di trasferimento | NO | stringa{14} | L'ora in cui la transazione è stata autorizzata, trasmessa nel formato YYYMMDDhhmmss. (ora CET). Si verifica solo per transferStatus=SUCCESS. |
41 | transferStatus | SÌ | enum | Stato di autorizzazione dell'operazione di regolamento. Adotta i seguenti valori: - PENDING - trasferimento in corso - SUCCESSO - trasferimento ordinato alla banca - FALLIMENTO - il trasferimento non può essere effettuato, ad esempio numero di conto sbagliato. |
42 | transferStatusDetails | NO | enum | Stato dettagliato della transazione, valore che può essere ignorato dal Servizio partner. Accetta i seguenti valori (l'elenco può essere esteso): - AUTORIZZATO - transazione presentata per l'esecuzione in banca - CONFIRMED - transazione confermata in banca (denaro inviato fisicamente) - ANNULLATO - transazione annullata dal servizio partner o dal call center (ad esempio, su richiesta del servizio). - ANOTHER_ERROR - si è verificato un altro errore di elaborazione della transazione |
43 | titolo | NO | stringa{1,140} | Titolo del bonifico. In alcuni casi, al di fuori del controllo di AP, il titolo del bonifico può essere modificato autonomamente dalla Banca da cui è stato effettuato il regolamento. Caratteri alfanumerici latini e caratteri dell'intervallo accettabili: ĘęÓ󥹌śŁłŻżŹźĆćŃń\\s.-/,!@#%\^\*()\_=+\[\]{};:? dove il segno "/" sarà sostituito da un "-" per le transazioni in uscita. |
44 | ricevitoreBanca | NO | stringa{1,64} | Il nome della banca a cui il Sistema ha effettuato il bonifico. |
45 | ricevitoreNRB | NO | stringa{26} | Il numero di conto bancario del destinatario del bonifico. |
46 | NomeRicevitore | NO | stringa{1,140} | Nome del destinatario del trasferimento. Caratteri alfanumerici latini e caratteri dell'intervallo accettabili: ĘęÓ󥹌śŁłŻżŹźĆćŃń\\s.-/,!@#%\^\*()\_=+\[\]{};:? |
47 | indirizzo del ricevitore | NO | stringa{1,140} | Indirizzo del destinatario del trasferimento. Caratteri alfanumerici latini e caratteri dell'intervallo accettabili: ĘęÓ󥹌śŁłŻżŹźĆćŃń\\s.-/,!@#%\^\*()\_=+\[\]{};:? |
48 | mittenteBanca | NO | stringa{1,64} | Il nome della banca attraverso la quale il Sistema ha effettuato il bonifico. |
49 | mittenteNRB | NO | stringa{26} | Numero di conto corrente bancario dell'ordinante del bonifico. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
In risposta alla notifica, ci si aspetta un testo in formato XML (non codificato Base64), restituito dal Servizio partner nella stessa sessione HTTP, contenente una conferma della ricezione dello stato della transazione.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8"?>
<confirmationList>
<serviceID>ServiceID</serviceID>
<transactionsConfirmations>
<transactionConfirmed>
<remoteOutID>RemoteOutID</remoteOutID>
<confirmation>Confirmation</confirmation>
</transactionConfirmed>
</transactionsConfirmations>
<hash>Hash</hash>
</confirmationList>
Il conferma è utilizzato per comunicare lo stato di verifica dell'autenticità della transazione da parte del Servizio partner. Il valore dell'elemento è determinato dalla verifica della correttezza del valore dell'elemento serviceID e verificare che l'hash calcolato corrisponda al valore passato nel campo hash.
Per questo elemento sono previsti due valori:
a) CONFERMATO - il parametro hash è coerente - la transazione è autentica;
b) NON CONFERMATO - il parametro hash è inconsistente - la transazione non è autentica;
Se non c'è una risposta corretta alle notifiche inviate, il sistema farà ulteriori tentativi per comunicare un nuovo stato dopo un tempo specificato. Il Servizio partner deve eseguire la propria logica di business solo dopo il primo messaggio relativo a un determinato stato di pagamento.
CONSIGLIO: Vale la pena di dare un'occhiata a Schema di ripetizione dei messaggi ITN/ISTN/IPN/RPAN/RPDN.
Nel modello di base, il sistema fornirà solo uno stato di SUCCESSOTuttavia, è possibile una notifica più accurata. L'opzione completa deve essere notificata durante l'integrazione e prevede il seguente schema di transizioni di stato.
ZUn ordine per una transazione di regolamento invia uno stato di IN ATTESA. In seguito, il sistema consegnerà SUCCESSO o FALLIMENTO. Per una transazione per la quale SUCCESSO si è verificato, non dovrebbe più esserci un cambiamento di stato in FALLIMENTO. Tuttavia, può verificarsi una modifica dello stato di dettaglio (i successivi messaggi di modifica dello stato di dettaglio sono solo informativi e non devono comportare la riesecuzione di alcuna logica aziendale).
In casi particolari (ad esempio un errore della banca), una transazione originariamente confermata può essere passata per una nuova esecuzione e quindi cambiare il suo stato in IN ATTESA e di nuovo a SUCCESSO.
Un altro caso particolare potrebbe essere un FALLIMENTO (ad esempio, dopo un errore interno del sistema), quindi sostituito da un messaggio SUCCESSO stato.
Per costruire una vista di selezione dei metodi di pagamento sul sito web, il sistema consente di interrogare da remoto l'elenco attuale dei canali di pagamento. A tal fine, richiamare il metodo gatewayList (https://{gate_host}/gatewayList/v3) con i relativi parametri (in formato JSON). Tutti i parametri sono trasmessi utilizzando la tecnologia REST. Il protocollo è sensibile alle maiuscole e minuscole sia per i nomi dei parametri che per i valori. I valori dei parametri trasmessi devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | intero | ID servizio partner. |
2 | MessaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio con una lunghezza di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Il valore del campo deve essere unico per il servizio partner. |
3 | Valute | SÌ | stringa{0,1000} | Elenco di valute di cui si vuole restituire l'elenco dei canali disponibili. L'elenco deve contenere almeno un elemento. I valori accettabili sono: PLN, EUR, GBP, USD. |
4 | Lingua | SÌ | stringa{2} | Lingua in cui verranno restituite le descrizioni dei metodi di pagamento. Valori accettabili: PL,EN,DE,FR,IT,ES,CS,RO,SK,HU,UK,EL,HR,SL,TR,BG. |
5 | Hash | SÌ | stringa{64} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni |
Esempio di messaggio
{
"ServiceID": 47498,
"MessageID": "11111111111111111111111111111111",
"Currencies":"PLN,EUR",
"Language": "PL",
"Hash": "306519f632e53a5e662de0125da7ac3f8135c7e4080900f2b145d4b25ff1b55d"
}
In risposta a una richiesta, vengono restituiti 2 elenchi di definizioni nella stessa sessione HTTP:
(a) Canali di pagamento (nodo gatewayList
)
(b) Gruppi di pagamento (nodo gatewayGruppi
)
Di seguito viene riportata una descrizione dettagliata del messaggio restituito:
nome | richiesto | tipo | descrizione | |
---|---|---|---|---|
1 | risultato | SÌ | stringa{1,5} | Stato della risposta. Valori accettabili: - OK - ERRORE |
2 | erroreStato | SÌ | stringa{1,100} | Stato di errore, da compilare in caso di errore (altrimenti nullo). |
3 | descrizione | SÌ | stringa{1.500} | Descrizione dell'errore, da compilare in caso di errore (altrimenti null). |
4 | gatewayGruppi | SÌ | lettera | Un elenco contenente i gruppi di pagamento. |
4.1 | tipo | SÌ | stringa{1,20} | Tipo di gruppo di pagamento. Ogni definizione di pagamento è assegnata a uno dei tipi. |
4.2 | titolo | SÌ | stringa{1,50} | Nome del gruppo di pagamento. |
4.3 | breveDescrizione | NO | stringa{1,200} | Breve descrizione del gruppo di pagamento. |
4.4 | descrizione | NO | stringa{1,1000} | Descrizione dettagliata del gruppo di pagamento. |
4.5 | ordine | SÌ | intero | Ordine di visualizzazione consigliato per i gruppi di pagamento. |
4.6 | iconUrl | NO | stringa{1,100} | Indirizzo dal quale è possibile scaricare il logo del gruppo di pagamento. |
5 | serviceID | SÌ | stringa{1,10} | Identificatore del servizio del partner; derivato dalla richiesta del metodo. |
6 | messaggioID | SÌ | stringa{32} | Identificatore del messaggio derivato dalla richiesta del metodo. |
7 | gatewayList | NO | lettera | Elenco contenente ulteriori canali di pagamento (vuoto se non sono configurati canali di pagamento). |
7.1 | gatewayID | SÌ | intero{1,5} | Identificatore del Canale di pagamento con cui il Cliente può regolare il pagamento. |
7.2 | nome | SÌ | stringa{1,200} | Il nome del canale di pagamento che può essere visualizzato nell'elenco delle banche disponibili. |
7.3 | gruppoTipo | NO | stringa{1,30} | Tipo, utilizzato per raggruppare i canali di pagamento nel loro elenco. Il parametro prende i valori dal nodo gatewayGruppi . |
7.4 | NomeBanca | NO | stringa{1,32} | Nome della banca. |
7.5 | iconUrl | NO | stringa{1,100} | Indirizzo dal quale è possibile scaricare il logo del Canale di pagamento. |
7.6 | Stato | SÌ | stringa{1,64} | Informazioni sullo stato di disponibilità dei canali. Accetta valori: - OK - canale disponibile - TEMPORARY_DISABLED - canale temporaneamente non disponibile (ad es. per lavori bancari) - DISABLED - canale non disponibile (servizio sospeso per un periodo prolungato) |
7.7 | statoData | NO | stringa{1,19} | Ora dell'ultimo aggiornamento dello stato del Canale di pagamento; valore di esempio: 2023-08-28 00:00:01. (ora CET) |
7.8 | breveDescrizione | NO | stringa{1,200} | Campo opzionale contenente una breve descrizione del canale di pagamento. Può essere visualizzato quando viene selezionato. |
7.9 | descrizione | NO | stringa{1,1000} | Campo opzionale che descrive dettagliatamente il canale di pagamento (può essere con tag HTML). |
7.10 | descrizioneUrl | NO | stringa{1,200} | Campo opzionale contenente un link a una pagina esterna che illustra il canale di pagamento. |
7.11 | disponibilePer | SÌ | stringa{2,10} | Il valore di questo campo indica a quale cliente è destinato il canale di pagamento:B2C - metodo di pagamento per le persone fisiche B2B - metodo di pagamento per le aziende ENTRAMBI - metodo di pagamento per tutti i clienti.In base a questo parametro, si deve decidere se presentare al cliente un canale di pagamento. |
7.12 | parametri richiesti | NO | elenco | Un elenco di parametri richiesti quando si seleziona un metodo di pagamento. Ad esempio, l'inizio di una transazione per un metodo di pagamento del gruppo B2B deve includere il parametro Nip . I parametri richiesti sono descritti nella sezione: Avvio di una transazione con parametri aggiuntivi.Attualmente, tali parametri possono essere: Nip e Nome del titolare del conto . |
7.13 | mcc | NO | oggetto | Codice categoria commerciante. Nodo opzionale, configurabile in aggiunta. In casi particolari, per siti contenenti prodotti di diverse categorie, possiamo restituire un elenco di codici MCC consentiti e vietati, in modo che l'esercente possa decidere se il metodo di pagamento può essere presentato o meno. |
7.13.1 | consentito | NO | lettera | Elenco dei codici MCC consentiti. |
7.13.2 | non ammesso | NO | lettera | Elenco dei codici MCC vietati. |
7.14 | inBalanceAllowed | NO | booleano | Informazioni sulla possibilità di utilizzare il canale (previo accordo commerciale) per saldi prepagati (inizio transazione con TransactionSettlementMode=NONE parametro). |
7.15 | minValidityTime | NO | intero | Tempo minimo di validità della transazione in minuti. Compare per i canali che richiedono più tempo del solito per stabilire lo stato del pagamento. |
7.16 | ordine | SÌ | intero | Ordine di visualizzazione consigliato per il metodo di pagamento. |
7.17 | valute | SÌ | elenco | Un elenco contenente le valute disponibili per il canale di pagamento, con i limiti degli importi. |
7.17.1 | valuta | SÌ | stringa{3} | La valuta che può essere pagata da questo canale. Se per un canale di pagamento sono disponibili più valute, l'elenco conterrà più di una voce. Valori accettati solo: PLN, EUR, GBP e USD. Per il conteggio dei valori di Hash, vengono presi i valori dei seguenti nodi valute. |
7.17.2 | importo minimo | NO | importo | L'importo minimo di una transazione che può essere pagato attraverso questo canale. Come separatore decimale si usa un punto fermo - '.'. Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. Il campo è presente solo per alcuni canali, il valore è espresso nella valuta del campo valuta. Per il conteggio dei valori di Hash, vengono presi i valori dei seguenti nodi valute. |
7.17.3 | Importo massimo | NO | importo | L'importo massimo di una transazione che può essere pagato attraverso questo canale. Come separatore decimale si usa un punto fermo - '.'. Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. Il campo è presente solo per alcuni canali, il valore è espresso nella valuta del campo valuta. Per il conteggio dei valori di Hash, vengono presi i valori dei seguenti nodi valute. |
7.18 | titolo del pulsante | SÌ | stringa | Messaggio suggerito che dovrebbe essere presente sul pulsante "paga" dopo aver selezionato un canale di pagamento. |
Esempio di risposta
{
"result": "OK",
"errorStatus": null,
"description": null,
"gatewayGroups": [
{
"type": "PBL",
"title": "Internet transfer",
"shortDescription": "Select the bank from which you want to order the payment".,
"description": null,
"order": 1,
"iconUrl": null
},
{
"type": "FR",
"title": "Transfer details",
"shortDescription": "Order a transfer using the details provided",
"description": null,
"order": 2,
"iconUrl": null
},
{
"type": "BNPL",
"title": "Buy now, pay later",
"shortDescription": "Buy now, pay later",
"description": null,
"order": 3,
"iconUrl": null
}
],
"serviceID": "10000",
"messageID": "2ca19ceb5258ce0aa3bc815e80240000",
"gatewayList": [
{
"gatewayID": 106,
"name": "PBL test payment",
"groupType": "PBL",
"bankName": "NONE",
"iconURL": "https://testimages.autopay.eu/pomoc/grafika/106.gif",
"state": "OK",
"stateDate": "2023-10-03 14:35:01",
"description": "Test payment",
"shortDescription": null,
"descriptionUrl": null,
"availableFor": "BOTH",
"requiredParams": ["Nip"],
"mcc": {
"allowed": [1234, 9876],
"disallowed": [1111]
},
"inBalanceAllowed": true,
"minValidityTime": null,
"order": 1,
"currencies": [
{
"currency": "PLN",
"minAmount": 0.01,
"maxAmount": 5000.00
}
],
"buttonTitle": "Pay"
},
{
"gatewayID": 9,
"name": "Transfer from another bank",
"groupType": "FR",
"bankName": "BANK TEST",
"iconURL": "https://testimages.autopay.eu/pomoc/grafika/9.gif",
"state": "OK",
"stateDate": "2023-10-03 14:35:02",
"description": "<b>Fast transfer</b>",
"shortDescription": "Fast transfer",
"descriptionUrl": null,
"availableFor": "BOTH",
"requiredParams": [],
"mcc": null,
"inBalanceAllowed": true,
"minValidityTime": null,
"order": 2,
"currencies": [
{
"currency": "PLN"
}
],
"buttonTitle": "Generate transfer details"
},
{
"id": 701,
"name": "Pay later with Payka",
"groupType": "BNPL",
"bankName": "NONE",
"iconUrl": "https://testimages.autopay.eu/pomoc/grafika/701.png",
"state": "OK",
"stateDate": "2023-10-03 14:37:10",
"description": "<div class=\"payway_desc\"><h1>Cost details</h1><p>Pay later - one-off up to 45 days (...). Offer details at: <a href="?r="https://payka.pl\" target=\"_blank\">Payka.pl</a></p></div>",
"shortDescription": "Pay later - in one go up to 45 days or in several equal instalments",
"descriptionUrl": null,
"availableFor": "B2C",
"requiredParams": [],
"mcc": null,
"inBalanceAllowed": false,
"minValidityTime": 60,
"order": 3,
"currencies": [
{
"currency": "PLN",
"minAmount": 49.99,
"maxAmount": 7000.00
}
],
"buttonTitle": "Pay"
}
]
}
NOTA: Il risultato dell'interrogazione del metodo deve essere aggiornato ogni minuto (chiamando gatewayList Se non c'è risposta o se c'è una risposta errata, dovrebbe essere visualizzata l'ultima configurazione nota e corretta dei canali di pagamento. Questo è il secondo motivo per mantenere una copia temporanea della configurazione dei canali di pagamento. gatewayList sul servizio partner. Una risposta non valida deve essere considerata come una risposta vuota, un timeout o un elenco vuoto di gatewayGruppi o gatewayList nodi.
Una descrizione dell'integrazione che consente l'utilizzo di una lista di pagamento incorporata nel servizio (o nell'app mobile), senza fasi di transizione. In alcuni casi, invece di una fase di transizione, il comportamento standard del sistema prevede un avvio bloccato della transazione.
I contenuti formali pertinenti (ossia le clausole informative e, se del caso, i termini e le condizioni) dovrebbero essere visualizzati già al momento della selezione del metodo di pagamento, e successivamente la conferma della loro visualizzazione e, se del caso, accettazione (sotto forma di identificatori) dovrebbe essere inviata al Sistema di pagamento online.
Il sistema consente di interrogare a distanza l'elenco corrente degli obblighi e il relativo contenuto formale. A tal fine, è necessario richiamare l'opzione dati legali (https://{gate_host}/legalData) con i parametri appropriati (in formato JSON).
CONSIGLIO: Tutti i parametri sono trasmessi utilizzando la tecnologia REST. Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi che nei valori dei parametri. I valori dei parametri trasmessi devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | intero | ID servizio partner. |
2 | MessaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio con una lunghezza di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Il valore del campo deve essere unico per il servizio partner. |
3 | GatewayID | SÌ | intero{1,5} | Identificativo del Canale di pagamento attraverso il quale il Cliente intende regolare il pagamento. |
4 | Lingua | SÌ | stringa{2} | La lingua in cui viene presentato il contenuto del Sito web. Valori accettabili PL, EN, DE, CS, ES, FR, IT, SK, RO, HU, UK. L'uso di valori diversi da PL deve essere confermato durante l'integrazione e dipende dalla scelta effettiva (da parte del cliente) della lingua nel Servizio. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
Esempio di messaggio
{
"ServiceID": 102422,
"MessageID": "11111111111111111111111111111111",
"GatewayID": 1500,
"Language": "PL",
"Hash":"61789013d932e2bc728d6206f7e9222b93e3176f7f07f6aa8cce1ccd65afaf0d"
}
In risposta alla richiesta, viene restituito un elenco (nella stessa sessione HTTP), contenente ulteriori contenuti formali sotto forma di: ID, tipo e formulazione del contenuto, sua posizione nel Servizio, indirizzo alle regole e altre informazioni aggiuntive.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | risultato | SÌ | stringa{1,5} | Stato della risposta. Valori accettabili: - OK - ERRORE |
2 | erroreStato | SÌ | stringa{1,100} | Stato di errore, da compilare in caso di errore (altrimenti nullo). |
3 | descrizione | SÌ | stringa{1.500} | Descrizione dell'errore, da compilare in caso di errore (altrimenti null). |
4 | serviceID | SÌ | stringa{1,10} | Identificatore del servizio del partner; derivato dalla richiesta del metodo. |
5 | messaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Derivato dalla richiesta del metodo. |
6 | gatewayID | SÌ | intero{1,5} | Identificatore del Canale di pagamento con cui il Cliente può regolare il pagamento. |
7 | lingua | SÌ | stringa{2} | La lingua in cui il Sistema restituisce i contenuti (clausole e regolamenti). |
8 | modello di servizio | SÌ | stringa{1,20} | Un campo per indicare il modello in cui funziona il servizio, per eventuali indicazioni future basate su questi valori (attualmente con i valori: MERCHANT, PAYER). A questo punto dovrebbe essere ignorato. |
n.d. | elenco dei regolamenti | SÌ | lettera | Un elenco contenente i contenuti formali disponibili per il canale di pagamento. |
9 | regolamentoID | SÌ | intero{1,10} | Identificatore formale del contenuto, che (se accettato dal cliente) deve essere passato nel parametro di inizio DefaultRegulationAcceptanceID o RecurringAcceptanceID (rispettivamente per il tipo DEFAULT e RICORRENTE). Il metodo di accettazione è determinato dai campi showCheckbox e isCheckboxRequired. NOTA: Questo valore può ripetersi per le chiamate con diverse GatewayIDpoiché i regolamenti sono attribuiti a un gruppo di canali di pagamento piuttosto che a singoli canali. |
10 | tipo | SÌ | stringa{1,64} | Tipo di obbligo formale. Valori previsti: - DEFAULT - clausole e termini e condizioni di pagamento nel modello di servizio fornito da AP al cliente - RICORRENTE - e i termini e le condizioni del pagamento automatico. Valore disponibile solo se è configurato un servizio di pagamento automatico. - PSD2 - clausola dedicata ai canali di tipo PSD2 (valore non utilizzato al momento) - RODO - clausola informativa sul trattamento dei dati personali - PRIVACY - clausola informativa sulla privacy |
11 | url | NO | stringa{1.500} | Indirizzo del file dei termini e delle condizioni (da incorporare nel Servizio stesso). Per impostazione predefinita, se si tratta di un obbligo formale, dovrebbe far parte di una delle sue clausole, cioè il campo etichetta d'ingresso. CONSIGLIO: Appare quando c'è un documento associato al consenso. |
n.d. | elenco etichette | SÌ | lettera | Un elenco contenente le clausole disponibili per un determinato obbligo formale. L'obbligo può richiedere la visualizzazione di uno o più contenuti. |
12 | etichettaID | SÌ | intero{1,10} | Identificatore di clausola, trasmesso a scopo diagnostico (può essere ignorato dal Partner). |
13 | etichetta d'ingresso | SÌ | stringa{1.500} | Il contenuto della clausola da visualizzare sul Servizio in combinazione con la relativa regolamentoID. In alcuni casi, può includere un link ai regolamenti. |
14 | posizionamento | NO | stringa{1,64} | Informazioni che suggeriscono dove collocare le clausole. Valori attuali: - TOP_OF_PAGE - nella parte superiore del sito (ad es. vicino al logo/banner superiore) - NEAR_PAYWALL - intorno all'elenco dei canali di pagamento (direttamente sopra, sotto o accanto) - ABOVE_BUTTON - sopra il pulsante "Avvia il pagamento". - BOTTOM_OF_PAGE - in fondo alla pagina (di solito si riferisce a clausole di RODO, di informativa sulla PRIVACY) |
15 | showCheckbox | SÌ | booleano | Informazioni sull'opportunità di visualizzare una clausola accanto a una casella di controllo per l'accettazione da parte dell'utente. |
16 | casella di controlloRichiesta | SÌ | booleano | Informazioni sul fatto che la casella di controllo visualizzata deve essere selezionata dall'utente per procedere al pagamento. NOTA: Se il valore è true, il pulsante "Avvia pagamento" deve essere bloccato finché la casella di controllo non è selezionata. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
Esempio di risposta
{
"serviceID": "102422",
"messageID": "11111111111111111111111111111111",
"gatewayID": "1500",
"language": "PL",
"serviceModel": "PAYER",
"regulationList": [
{
"regulationID": 6288,
"type": "RECURRING",
"url": "https://host/path?params",
"labelList": [
{
"labelID": 1,
"inputLabel": "<ul><li>\r\nI have read and accept <a id=\"regulations_pdf\" target=\"_blank\" href=https://{gate_host}/path?params>Regulations for the payment services</a> and <a class=\"privacy-policy\" href=\"https://{gate_host}/polityka-prywatnosci.pdf\" target=\"_blank\">Privacy Policy</a></li><li>\r\nI want the service to be provided without delay and, in the event of withdrawal, I know that I will not be reimbursed for the services provided at my request until the withdrawal has taken place\r\n</li></ul>",
"placement": "ABOVE_BUTTON",
"showCheckbox": true,
"checkboxRequired": true
}
]
},
{
"regulationID": 1,
"type": "PRIVACY",
"labelList": [
{
"labelID": 1,
"inputLabel": "Autopay uses cookies. By remaining on this website, you consent to the use of cookies in accordance with the <a class=\"privacy-policy\" href="?r="https://{gate_host}/polityka-prywatnosci.pdf\" target=\"_blank\">Autopay S.A. privacy policy.</a> You can manage cookies yourself by changing the settings of your browser or device software accordingly."
"placement": "BOTTOM_OF_PAGE",
"showCheckbox": false,
"checkboxRequired": false
}
]
}
],
"hash": "61789013d932e2bc728d6206f7e9222b93e3176f7f07f6aa8cce1ccd65afaf0d",
"result": "OK",
"errorStatus": null,
"description": null
}
Poiché i requisiti formali per il contenuto delle clausole, la loro distribuzione e il metodo di accettazione dipendono dal canale di pagamento utilizzato, questo metodo deve essere invocato ogni volta che viene selezionato (da qui il parametro obbligatorio del GatewayID).
Il contenuto e il comportamento pertinenti dovrebbero essere adattati dinamicamente alle risposte del sistema (ad esempio, dovrebbe apparire una casella di controllo obbligatoria con una clausola informativa e un link ai termini e alle condizioni). Naturalmente, affinché l'applicazione venga eseguita rapidamente, è auspicabile l'uso di una cache per ricordare le risposte delle chiamate recenti (ad esempio, per 1 minuto).
Il consenso visualizzato (ed eventualmente approvato) al momento del passaggio al pagamento deve essere confermato nel Sistema allegando al messaggio di avvio della transazione il parametro start del suo identificativo (e quindi il corrispondente valore del parametro regolamentoID).
A seconda del valore del parametro tipo campo dei regolamenti:
- per la clausola visualizzato/accettato di tipo=DEFAULT:
a. al parametro DefaultRegulationAcceptanceID il suo valore di regolamentoID;
b. il Stato di accettazione della regolamentazione predefinita deve essere impostato su ACCETTATO e
c. il Tempo di accettazione del regolamento predefinito deve essere impostato sul valore corrispondente al momento in cui il consenso viene accettato selezionando la casella di controllo e facendo clic sul pulsante "Avvia pagamento".
- per la clausola visualizzato/accettato di tipo=RECURRING:
a. al RecurringAcceptanceID dovrebbe essere il suo parametro regolamentoID VALORE;
b. il Stato di accettazione ricorrente deve contenere il valore ACCETTATO e
c. il Tempo di accettazione ricorrente deve essere impostato sul valore corrispondente al momento in cui il consenso viene accettato selezionando la casella di controllo e facendo clic sul pulsante "Avvia pagamento".
NOTA: I campi (ad es. serviceModel, url, labelID) e i valori dei campi (ad es. PSD2, RODO, PRIVACY) del dati legali non sono obbligati a essere gestiti, ma si deve prevedere la possibilità che si presentino nella risposta della richiesta.
Per tutti i servizi è possibile interrogare il saldo corrente. A questo scopo, il metodo balanceGet
https://{gate_host}/webapi/balanceGet con i relativi parametri. Tutti i parametri vengono passati tramite il metodo POST (Tipo di contenuto: application/x-www-form-urlencoded
). Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi dei parametri che nei valori. I valori dei parametri passati devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
1 | Punto di equilibrioID | SÌ | stringa{1,10} | Identificatore del punto di insediamento. NOTA: Richiesto uno dei campi ID servizio o Punto di equilibrioID. Se si specificano entrambi, l'elaborazione della richiesta viene interrotta e viene visualizzato un errore http. |
2 | MessaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio con una lunghezza di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Il valore del campo deve essere unico per il servizio partner. |
3 | ID plenipotenziario | NO | stringa{8,8} | ID proxy. Se presente, la chiave condivisa del proxy viene utilizzata per calcolare l'Hash, anziché la chiave primaria del servizio/punto di fatturazione. Questo influisce anche sull'Hash in risposta a questo messaggio. IMPORTANTE! L'utilizzo di questo campo richiede accordi commerciali speciali. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Viene utilizzata una chiave condivisa assegnata all'identificatore di configurazione utilizzato (Servizio o Punto di regolamento). Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
In risposta alla richiesta, viene restituito un testo (nella stessa sessione HTTP) in formato XML, contenente una conferma dell'operazione da eseguire o una descrizione dell'errore.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<balanceGet>
<serviceID>ServiceID</serviceID>
<messageID>MessageID</messageID>
<balance>Balance</balance>
<currency>Currency</currency>
<hash>Hash</hash>
</balanceGet>
o
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<balanceGet>
<balancePointID>BalancePointID</balancePointID>
<messageID>MessageID</messageID>
<balance>Balance</balance>
<currency>Currency</currency>
<hash>Hash</hash>
</balanceGet>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,10} | ID servizio partner. Derivato da una richiesta di metodo. |
1 | balancePointID | SÌ | stringa{1,10} | Identificatore del punto di regolamento. Derivato da una richiesta di metodo. NOTA: Verrà restituito uno dei campi ID servizio o Punto di equilibrioID. |
2 | messaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Derivato dalla richiesta del metodo. |
3 | equilibrio | SÌ | importo | Valore del saldo; si usa un punto come separatore decimale - '.'. Formato: 0,00. |
4 | valuta | SÌ | stringa{1,3} | Valuta di equilibrio. Valori accettati solo: PLN, EUR, GBP e USD. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Viene utilizzata una chiave condivisa assegnata all'identificatore di configurazione utilizzato (Servizio o Punto di regolamento). Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
Per i servizi che hanno un saldo nel Sistema, è possibile eseguire un'operazione di ricarica per futuri rimborsi. A tal fine, avviare la transazione con l'opzione Modalità di transazione con il valore NESSUNO e Importo indicando il importo di ricarica.
Utilizzo Pre-transazione consentirà di consegnare semplicemente la transazione conclusa al pagatore (ad esempio, fornendo l'indirizzo contabile del partner in CustomerEmail).
NOTA: Il servizio deve essere concordato con il custode commerciale. Nel modello Marketplace, sarà inoltre necessario costruire un paniere di prodotti indicando quale Punto di regolamento (BalancePointID) deve essere alimentato.
Per i servizi che hanno un saldo nel Sistema, è possibile eseguire
un'operazione di prelievo di tutto o parte del saldo su un conto definito per
regolamento. A tal fine, è necessario richiamare il metodo saldoPagamento
(https://{gate_host}/settlementapi/balancePayoff) con i relativi parametri.
Tutti i parametri vengono passati tramite il metodo POST (Content-Type: application/x-www-form-urlencoded). Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi dei parametri che nei valori. I valori dei parametri passati devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
NOTA: Uno dei campi ID servizio o Punto di equilibrioID è necessario. W
Se si specificano entrambi, l'elaborazione della richiesta viene interrotta e viene visualizzato un errore http.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
1 | Punto di equilibrioID | SÌ | stringa{1,10} | Identificatore del punto di insediamento. |
2 | MessaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio con una lunghezza di 32 caratteri alfanumerici dell'alfabeto latino (ad esempio basato sull'UID); il valore del campo deve essere unico e indicare uno specifico ordine di pagamento nel Servizio del Partner. La verifica dell'univocità da parte del Sistema consente di ripetere il MessageID in caso di problemi di comunicazione (la ripetizione di questo valore comporta la conferma dell'ordine, senza una nuova esecuzione nel Sistema). |
3 | Importo | NO | importo | Importo del prelievo dal saldo (non può essere superiore al saldo attuale del servizio); la mancata indicazione di questo parametro comporta il prelievo del totale dei fondi accumulati sul saldo; un punto - '.' - viene utilizzato come separatore decimale. Formato: 0,00. |
4 | Valuta | NO | stringa{1,3} | Valuta di pagamento. La valuta predefinita è il PLN (l'uso di un'altra valuta deve essere concordato durante l'integrazione). All'interno di ServiceID è supportata una sola valuta. Valori accettati solo: PLN, EUR, GBP e USD. |
5 | ClienteNRB | NO | stringa{26} | Il numero di conto su cui deve essere effettuato il prelievo del saldo. Per impostazione predefinita, la configurazione dell'erogazione non consente di definire questo valore nella richiesta del metodo. saldoPagamento. Tale richiesta deve essere fatta durante l'integrazione. NOTA: In alcuni modelli, l'uso di questo campo può avvenire solo per le richieste provenienti da un elenco di IP affidabili e l'uso di uno dei 3 elementi aggiuntivi: - proteggere la comunicazione con un certificato client o - proteggere la comunicazione con un tunnel IPSec o - utilizzo del valore del parametro ClienteNRB dall'elenco degli account affidabili L'inosservanza di tali norme provoca un errore CUSTOMER_NRB_NOT_AUTHORIZED. Gli amministratori del pannello di sistema (https://portal.autopay.eu/admin) possono aggiornare autonomamente gli elenchi di IP e NRB attendibili nel file Controllo degli accessi configurazione del servizio. Sono ammesse solo le cifre. Se durante l'integrazione è stato stabilito l'utilizzo di conti al di fuori della Polonia, il campo trasferisce l'IBAN e l'intervallo di dati previsto per il campo cambia in: caratteri latini alfanumerici (min. 15, max. 32 caratteri). |
6 | Codice Swift | NO | stringa{8,11} | Il codice swift corrispondente al numero di conto indicato. Sono ammesse solo cifre. Parametro da fornire se durante l'integrazione è stato stabilito l'uso di account non polacchi. |
7 | Modalità di trasferimento estero | NO | stringa{4,5} | Il sistema con cui deve essere effettuato il trasferimento del regolamento estero: - SEPA (Single Euro Payments Area) - possibilità di effettuare trasferimenti in valuta euro all'interno degli Stati membri dell'Unione Europea, nonché in altri Paesi del Vecchio Continente, come ad esempio Islanda, Liechtenstein, Norvegia, Svizzera, Monaco o Andorra, - SWIFT - trasferimenti all'estero non realizzabili con la SEPA (ad esempio, valuta diversa dall'euro), comporta costi di trasferimento più elevati rispetto alla SEPA. Valori accettabili: SEPA e SWIFT. Parametro da fornire se durante l'integrazione è stato stabilito l'uso di conti al di fuori della Polonia. |
8 | NomeRicevitore | NO | stringa{35} | Il nome del beneficiario del prelievo del saldo. Per impostazione predefinita, la configurazione dell'erogazione non consente di definire questo valore nella richiesta del metodo. saldoPagamento. Tale richiesta deve essere fatta durante l'integrazione. Caratteri alfanumerici latini e caratteri dell'intervallo accettabili: êÓÓ󱳿¼ññæñ.-/,!()=[]{};:? |
9 | Titolo | NO | stringa{32} | Titolo dell'erogazione del saldo. Per impostazione predefinita, la configurazione dell'erogazione non consente di definire questo valore nella richiesta del metodo. saldoPagamento. Tale richiesta deve essere fatta durante l'integrazione. In alcuni casi, al di fuori del controllo dell'AP, questo titolo può essere modificato autonomamente dalla Banca. Caratteri alfanumerici latini e caratteri dell'intervallo accettabili: dove il segno "/" sarà sostituito da un "-" per le transazioni in uscita. |
10 | ID remoto | NO | stringa{1,20} | L'identificativo alfanumerico della transazione in entrata assegnato dal Sistema e trasmesso al Partner nel messaggio ITN della transazione in entrata. Il valore di questo messaggio è utilizzato per indicare lo strumento di pagamento (carta, conto, ecc.) da utilizzare per il prelievo. |
11 | Numero di fattura | NO | stringa{1,100} | Il numero del documento finanziario nel Servizio. In questo messaggio, il valore viene utilizzato per indicare la fattura di rettifica associata al pagamento. |
12 | ID plenipotenziario | NO | stringa{8,8} | ID proxy. Se presente, la chiave condivisa del proxy viene utilizzata per calcolare l'Hash, anziché la chiave primaria del servizio/punto di fatturazione. Questo influisce anche sull'Hash in risposta a questo messaggio. IMPORTANTE! L'utilizzo di questo campo richiede accordi commerciali speciali. |
n.d. | Hash | SÌ | stringa{1,128} | Viene utilizzata la chiave condivisa assegnata all'identificatore di configurazione utilizzato (servizio o punto di regolamento). Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
Alla ricezione di una richiesta di prelievo di saldo, il Sistema esegue una prima verifica dei campi e dei loro valori inviati nel messaggio e salva l'ordine per l'esecuzione. In risposta alla richiesta, viene restituito un testo in formato XML (nella stessa sessione HTTP), contenente la conferma che l'ordine è stato salvato nella coda per l'esecuzione o la descrizione dell'errore (la struttura del messaggio di errore è descritta nella sezione Messaggi di errore.
NOTA: La conferma di ricezione di un ordine non equivale alla sua effettiva esecuzione. Un prelievo dal saldo può essere elaborato fino a 30 minuti dopo l'invio della richiesta di prelievo e non sempre va a buon fine. In caso di problemi riscontrati durante l'elaborazione di un prelievo dal saldo (ad esempio, fondi insufficienti nel saldo), il giorno lavorativo successivo viene inviato un rapporto contenente informazioni sui prelievi dal saldo che non sono andati a buon fine.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<balancePayoff>
<serviceID>ServiceID</serviceID>
<messageID>MessageID</messageID>
<hash>Hash</hash>
</balancePayoff>
o
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<balancePayoff>
<balancePointID>BalancePointID</balancePointID>
<messageID>MessageID</messageID>
<hash>Hash</hash>
</balancePayoff>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,10} | ID servizio partner. Derivato da una richiesta di metodo. |
1 | balancePointID | SÌ | stringa{1,10} | Identificatore del punto di regolamento. Derivato da una richiesta di metodo. NOTA: Verrà restituito uno dei campi ID servizio o Punto di equilibrioID. |
2 | messaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Derivato dalla richiesta del metodo. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
NOTA: Tutte le risposte diverse da quelle ipotizzate (ad esempio con campi non validi, in particolare con campi vuoti o non validi) sono state inviate a un'altra persona. hash) può essere considerato un errore. Nel caso in cui il sistema autorizzi il mittente di un messaggio di ritorno ma l'operazione fallisca, la risposta seguirà lo schema descritto in Messaggi di errore. In caso di errore di comunicazione o di saldo insufficiente (ad esempio ON_DEMAND_ERROR), l'ordine può essere ritentato. Se il saldo è bloccato (BALANCE_DISABLED) o la configurazione non è attiva (PARTNER_DISABLED), l'ordine non deve essere rinnovato.
IMPORTANTE! In caso di errore in risposta a una richiesta di prelievo del saldo, la richiesta può essere ripetuta, ma si noti che qualsiasi richiesta di prelievo che non si concluda con un errore può essere eseguita. In caso di problemi di connessione, che superino il tempo massimo di risposta, la richiesta può essere ripetuta con lo stesso MessageID senza timore di duplicare l'ordine.
In caso di saldo bloccato (BALANCE_DISABLED) o di configurazione inattiva (PARTNER_DISABLED), la richiesta non deve essere rinnovata. 3 errori consecutivi (indipendentemente dalla causa) bloccheranno il servizio di erogazione su richiesta per l'IP mittente del messaggio specificato per 10 minuti - le chiamate durante questo periodo per questo IP termineranno con un errore TEMPORARY_DISABLED.
Per i servizi che presentano un saldo nel Sistema, è possibile effettuare l'operazione di restituzione al Cliente di tutto o parte dell'importo pagato per la transazione indicata. Il rimborso dell'intera transazione può essere effettuato una sola volta (in caso di ripetuti tentativi di rimborso della stessa transazione, il Sistema restituisce un errore opportunamente descritto). Il rimborso di parte dell'importo di una transazione può essere effettuato più volte, purché la sua somma non superi l'importo del deposito.
Per eseguire il rimborso di una transazione, richiamare il metodo transazioneRimborso (https://{gate_host}/settlementapi/transactionRefund) con i relativi parametri. Tutti i parametri vengono passati tramite il metodo POST (Tipo di contenuto: application/x-www-form-urlencoded
). Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi che nei valori dei parametri. I valori dei parametri passati devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
2 | MessaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio con una lunghezza di 32 caratteri alfanumerici dell'alfabeto latino (ad esempio basato sull'UID); il valore del campo deve essere univoco e indicare uno specifico ordine di pagamento nel Servizio Partner. La verifica dell'univocità da parte del Sistema consente la MessaggioID da ripetere in caso di problemi di comunicazione (la ripetizione di questo valore comporta la conferma dell'ordine, senza una nuova esecuzione nel Sistema). |
3 | ID remoto | SÌ | stringa{1,20} | L'identificativo alfanumerico della transazione di input restituita assegnato dal Sistema e passato al Partner nel messaggio ITN della transazione di input. |
4 | Importo | NO | importo | Importo del prelievo dal saldo (non può essere superiore al saldo attuale del servizio); la mancata indicazione di questo parametro comporta il prelievo del totale dei fondi accumulati sul saldo; un punto - '.' - viene utilizzato come separatore decimale. Formato: 0,00. Nel modello Marketplace, il campo deve essere vuoto (ritorno totale). In caso contrario, non sarebbe possibile indicare il/i punto/i di fatturazione a cui addebitare tale operazione. Con un reso totale, il saldo viene detratto in base alla somma degli importi dei prodotti del rispettivo punto di compensazione. |
5 | Valuta | NO | stringa{1,3} | Valuta di pagamento. La valuta predefinita è il PLN (l'uso di un'altra valuta deve essere concordato durante l'integrazione). All'interno di ServiceID è supportata una sola valuta. È supportata una sola valuta. Valori accettati solo: PLN, EUR, GBP e USD. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
In risposta alla richiesta, viene restituito un testo in formato XML (nella stessa sessione HTTP), che conferma l'operazione o descrive l'errore (descritto di seguito).
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<transactionRefund>
<serviceID>ServiceID</serviceID>
<messageID>MessageID</messageID>
<hash>Hash</hash>
</transactionRefund>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,10} | ID servizio partner. Derivato da una richiesta di metodo. |
2 | messaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Derivato dalla richiesta del metodo. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
L'opzione di rimborso delle transazioni pagate è possibile fino a 12 mesi fa, a partire dalla data di inizio della transazione. Fanno eccezione i pagamenti BLIK che, a causa di vincoli temporali da parte del fornitore del canale di pagamento, possono essere rimborsati fino a 6 mesi prima.
Le scadenze di cui sopra si applicano all'elaborazione delle restituzioni tramite il pannello amministrativo e il pannello di controllo. transazioneRimborsoad esempio tramite i propri strumenti amministrativi. Quando questi valori vengono superati, viene restituito un errore (TRANSAZIONE_TROPPO_VECCHIA_PER_RIMBORSARE). Lo schema di funzionamento è analogo a quello dei prelievi da saldo. Ovvero, il Sistema accetta l'ordine e lo elabora in modo asincrono entro un massimo di 30 minuti; in caso di fallimento, le informazioni sulle operazioni che si concludono con un errore vengono inviate in un report il giorno lavorativo successivo.
In caso di problemi di connessione, che superino il tempo massimo di risposta, la richiesta può essere rinnovata con la stessa MessaggioID senza timore di richieste doppie. Tutte le risposte diverse da quella ipotizzata (cioè con campi non corretti, in particolare campi vuoti o non corretti) sono state inviate a un'altra persona. hash). Se il sistema autorizza il mittente del messaggio di ritorno, ma l'operazione non riesce, viene restituito un messaggio di errore.
Per i siti che hanno un saldo nel Sistema e che specificano l'opzione ID prodotto nel carrello dei prodotti, è possibile eseguire un'operazione di restituzione al Cliente di tutto o parte dell'importo pagato per il prodotto indicato. La restituzione dell'intero importo di un prodotto può essere eseguita una sola volta (in caso di ripetuto tentativo di ordinare la restituzione dello stesso prodotto, il Sistema restituisce un errore opportunamente descritto). I rimborsi parziali del prodotto possono essere effettuati più volte, purché il loro totale non superi l'importo pagato per il prodotto.
Per eseguire una restituzione di prodotto, richiamare il metodo prodottoRimborso(https://{gate_host}/settlementapi/productRefund) con i parametri appropriati. Tutti i parametri vengono passati con il metodo POST (Content-Type: application/x-www-form-urlencoded). Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi dei parametri che nei valori. I valori dei parametri passati devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
2 | MessaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio con una lunghezza di 32 caratteri alfanumerici dell'alfabeto latino (ad esempio basato sull'UID); il valore del campo deve essere univoco e indicare uno specifico ordine di pagamento nel Servizio Partner. La verifica dell'univocità da parte del Sistema consente la MessaggioID da ripetere in caso di problemi di comunicazione (la ripetizione di questo valore comporta la conferma dell'ordine, senza una nuova esecuzione nel Sistema). |
3 | ID remoto | SÌ | stringa{1,20} | L'identificativo alfanumerico della transazione di input restituita assegnato dal Sistema e passato al Partner nel messaggio ITN della transazione di input. |
4 | ID prodotto | SÌ | stringa{1,36} | Identificatore del prodotto restituito. |
5 | Importo | NO | importo | Importo del rimborso (non può essere maggiore dell'importo del prodotto e del saldo attuale del servizio + l'importo della commissione di rimborso, se presente). La mancata indicazione di questo parametro comporterà la restituzione al cliente dell'intero importo pagato per il prodotto restituito; un punto fermo - '.' - viene utilizzato come separatore decimale. Formato: 0,00. |
6 | Valuta | NO | stringa{1,3} | Valuta di pagamento. La valuta predefinita è il PLN (l'uso di un'altra valuta deve essere concordato durante l'integrazione). All'interno di ServiceID è supportata una sola valuta. Valori accettati solo: PLN, EUR, GBP e USD. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
In risposta alla richiesta, viene restituito un testo (nella stessa sessione HTTP) in formato XML, contenente una conferma dell'operazione da eseguire o una descrizione dell'errore.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<productRefund>
<serviceID>ServiceID</serviceID>
<messageID>MessageID</messageID>
<hash>Hash</hash>
</productRefund>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,10} | ID servizio partner. Derivato da una richiesta di metodo. |
2 | messaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Derivato dalla richiesta del metodo. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
L'opzione di rimborso delle transazioni pagate è possibile fino a 12 mesi fa, a partire dalla data di inizio della transazione. Fanno eccezione i pagamenti BLIK che, a causa di vincoli temporali da parte del fornitore del canale di pagamento, possono essere rimborsati fino a 6 mesi prima.
Le scadenze di cui sopra si applicano all'elaborazione dei rimborsi tramite il pannello di amministrazione e prodottoRimborsoad esempio tramite i propri strumenti di amministrazione. Se questi valori vengono superati, viene restituito un errore (TRANSAZIONE_TROPPO_VECCHIA_PER_RIMBORSARE).
Lo schema di funzionamento è analogo a quello dei prelievi da saldo. In altre parole, il Sistema accetta l'ordine e lo elabora in modo asincrono entro un massimo di 30 minuti; in caso di errore, le informazioni sulle operazioni che si concludono con un errore vengono inviate in un report il giorno lavorativo successivo.
In caso di problemi di connessione, che superino il tempo massimo di risposta, la richiesta può essere rinnovata con lo stesso MessageID senza temere di avere richieste duplicate. Tutte le risposte diverse da quella ipotizzata (cioè con campi errati, in particolare campi vuoti o errati) sono da considerarsi come un'eccezione. hash). Se il sistema autorizza il mittente del messaggio di ritorno, ma l'operazione non riesce, viene restituito un messaggio di errore.
Una volta effettuato il rimborso o il prelievo del saldo, abbiamo la possibilità di verificare lo stato della transazione di fatturazione e
quale identificativo gli è stato assegnato dal Sistema di pagamento online. A tal fine, richiamare il metodo dettagli (https://{gate_host}/settlementapi/outDetails) con i parametri corrispondenti. Tutti i parametri vengono passati tramite il metodo POST (Content-Type: application/x-www-form-urlencoded). Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi dei parametri che nei valori. I valori dei parametri passati devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
NOTA: Uno dei campi ID servizio o Punto di equilibrioID è necessario.
Se si specificano entrambi, l'elaborazione della richiesta viene interrotta e viene visualizzato un errore http.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
1 | Punto di equilibrioID | SÌ | stringa{1,10} | Identificatore del punto di insediamento. |
2 | MessaggioID | SÌ | stringa{32} | Inserire lo stesso identificativo del messaggio inviato in precedenza quando si ordina un rimborso o un prelievo di saldo. |
3 | Metodo | SÌ | enum | L'operazione per la quale è stata creata la transazione di regolamento: SALDO_PAGAMENTO - prelievo dal bilancio RIMBORSO_TRANSAZIONE - rimborso delle transazioni PRODOTTO_RIMBORSO - restituzione del prodotto |
n.d. | Hash | SÌ | stringa{1,128} | Viene utilizzata la chiave condivisa assegnata all'identificatore di configurazione utilizzato (Servizio o Punto di regolamento). Il valore della funzione di hash per il messaggio, calcolato come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<outDetails>
<serviceID>ServiceID</serviceID>
<messageID>MessageID</messageID>
<status>Status</status>
<remoteOutId>RemoteOutId</remoteOutId>
<hash>Hash</hash>
</outDetails>
o
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<outDetails>
<balancePointID>BalancePointID</balancePointID>
<messageID>MessageID</messageID>
<status>Status</status>
<remoteOutId>RemoteOutId</remoteOutId>
<hash>Hash</hash>
</outDetails>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,10} | ID servizio partner. Derivato da una richiesta di metodo. |
1 | balancePointID | SÌ | stringa{1,10} | Identificatore del punto di regolamento. Derivato da una richiesta di metodo. NOTA: Verrà restituito uno dei campi ID servizio o Punto di equilibrioID. |
2 | messaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Derivato dalla richiesta del metodo. |
3 | stato | SÌ | enum | Stato di elaborazione: NUOVO - In attesa di essere rielaborato. ELABORAZIONE - Durante il processo ERRORE - Elaborazione non riuscita, ad es. mancanza di fondi nel saldo FATTO - L'elaborazione è andata a buon fine. |
4 | remoteOutId | NO | stringa{1,20} | L'identificativo alfanumerico dell'operazione di regolamento assegnato dal Sistema di pagamento online. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
Il sistema consente di visualizzare un riepilogo della transazione al cliente. A tal fine, il partner può creare dei link di attivazione con il metodo dei parametri appropriati. conferma (https://{gate_host}/web/conferma/pagamento). Tutti i parametri sono trasferiti con il metodo GET. Il protocollo è sensibile alle maiuscole e alle minuscole sia per i nomi dei parametri che per i valori. I valori dei parametri passati devono essere codificati in UTF-8.
Il reindirizzamento di un Cliente con i parametri corretti comporta la visualizzazione di un riepilogo della transazione (con contenuti che dipendono dal suo stato) o di informazioni sulla sua assenza (se il Sistema non la trova).
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
2 | ID ordine | SÌ | stringa{32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
NOTA: Il servizio deve essere attivato previo accordo con il supervisore aziendale. È possibile modificare il contenuto dei messaggi o adattare il layout grafico (questi sono soggetti a un accordo in forma operativa ogni volta durante l'integrazione).
Per tutti i servizi è possibile interrogare il saldo corrente. A questo scopo, il metodo Stato della transazione (https://{gate_host}/webapi/transactionStatus) con i relativi parametri. Tutti i parametri vengono passati tramite il metodo POST (Content-Type: application/x-www-form-urlencoded). Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi dei parametri che nei valori. I valori dei parametri passati devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
2 | ID ordine | SÌ | stringa{32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio partner. |
Per una corretta interrogazione, insieme ai parametri passati deve essere inviata un'intestazione HTTP definita con un contenuto appropriato. L'intestazione allegata deve essere denominata 'BmHeader' e hanno il seguente valore 'pay-bm', nella sua interezza, dovrebbe essere la seguente BmHeader: pay-bm'.. In caso di messaggio valido, viene restituito (nella stessa sessione HTTP) un testo in formato XML contenente tutte le transazioni con l'OrderID indicato, insieme alle informazioni di base su di esse.
CONSIGLIO: Questa situazione può verificarsi, ad esempio, quando il cliente cambia il canale di pagamento, richiama la stessa transazione dalla cronologia del browser, ecc. Il sistema consente di bloccare questi casi, ma l'opzione è sconsigliata (non sarebbe possibile pagare la transazione abbandonata).
IMPORTANTE! Se la query si riferisce a un ID ordine presente in più di 50 transazioni di un determinato servizio, viene restituita una risposta (XML) con il codice di errore 403.
Struttura di risposta quando viene raggiunto il limite di transazioni con lo stesso orderId:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<transaction>
<reason>LIMIT_REQUESTED_TRANSACTIONS_WITH_THE_SAME_ORDER_ID_AND_SERVICE_ID_EXCEEDED</reason>
<description>Transaction limit 50 with the same order id {{ORDER_ID}} and service id {{SERVICE_ID}} exceeded. Requested count {{TRANSACTION_AMOUNT}}
</description>
</transaction>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | SÌ | stringa{1,10} | L'ID del servizio partner, assegnato durante la registrazione del servizio, identifica in modo univoco il servizio partner nel sistema di pagamento online. |
2 | ID ordine | SÌ | stringa{1,32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. |
3 | ID remoto | SÌ | stringa{1,20} | Un identificativo alfanumerico della transazione assegnato dal Sistema di pagamento online. |
5 | importo | SÌ | importo | L'importo della transazione utilizza un punto fermo come separatore decimale - ".". Formato: 0,00; lunghezza massima: 14 cifre prima del punto e 2 dopo il punto. |
6 | valuta | SÌ | stringa{1,3} | Valuta della transazione. |
7 | gatewayID | NO | stringa{1,5} | Identificatore del canale di pagamento attraverso il quale il cliente ha effettuato il pagamento. |
8 | data di pagamento | SÌ | stringa{14} | L'ora in cui la transazione è stata autorizzata, trasmessa nel formato YYYMMDDhhmmss. (ora CET) |
9 | Stato del pagamento | SÌ | enum | Stato dell'autorizzazione alla transazione, assume valori (descrizione dei cambiamenti di stato più avanti): IN ATTESA - transazione avviata. SUCCESSO - corretta autorizzazione della transazione, il Servizio partner riceverà i fondi per la transazione - i beni/servizi possono essere emessi. FALLIMENTO - transazione non completata correttamente. |
10 | pagamentoStatoDettagli | NO | stringa{64} | Stato dettagliato della transazione, valore che può essere ignorato dal Servizio partner. CONSIGLIO: Descrizione dettagliata in parte Stati dettagliati delle transazioni. |
n.d. | hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
NOTA: Poiché il metodo può restituire più transazioni, le transazioni successive vengono scaricate nell'Hash (secondo l'ordine di comparsa delle transazioni nella risposta). All'interno di una determinata transazione, si applica l'ordine in base al numero accanto al campo (escluso il parametro ServiceID, livello superiore).
Esempio di funzione hash stringa
Hash = funkcja(<serviceID> + „|” +
<orderID1> + „|” + <remoteID1> + „|” + <amount1> + „|” + <currency1> + „|” + <gatewayID1> + „|” + <paymentDate1> + „|” + <paymentStatus1> + „|” + <paymentStatusDetails1> + „|” +
<orderID2> + „|” + <remoteID2> + „|” + <amount2> + „|” + <currency2> + „|” + <gatewayID2> + „|” + <paymentDate2> + „|” + <paymentStatus2> + „|” + <paymentStatusDetails2> + …
Condizione | Significato | Messaggio proposto al cliente |
---|---|---|
Esattamente una transazione con stato di pagamento=SUCCESSO | Transazione pagata correttamente. | Il sistema ha registrato correttamente il pagamento. |
Più di una transazione con stato di pagamento=SUCCESSO | Transazioni multiple a pagamento. | Il sistema ha registrato più di un pagamento. |
C'è un RemoteID con paymentstatus=PENDING e non c'è nessuno con paymentstatus=SUCCESS | La transazione è in attesa di pagamento. | Il sistema è in attesa di pagamento. |
Esiste almeno una transazione ma non c'è uno stato diverso da paymentstatus=FAILURE | Transazione annullata. | Il sistema ha registrato un annullamento di pagamento o una mancata autorizzazione di pagamento. |
Nessuna transazione o altro errore | Mancata individuazione di una transazione. | La transazione non è stata trovata. |
Per tutti i servizi è possibile annullare una transazione avviata ma non pagata chiamando il metodo transazioneAnnulla (https://{gate_host}/webapi/transactionCancel) con i parametri corrispondenti. Tutti i parametri vengono passati tramite il metodo POST (Content-Type: application/x-www-form-urlencoded).
Il protocollo è sensibile alle maiuscole e minuscole sia nei nomi che nei valori dei parametri. I valori dei parametri trasmessi devono essere codificati in UTF-8.
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | ID servizio | SÌ | stringa{1,10} | ID servizio partner. |
2 | MessaggioID | SÌ | stringa{32} | Identificatore pseudocasuale del messaggio con una lunghezza di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Il valore del campo deve essere unico per il servizio partner. |
3 | ID remoto | NO | stringa{1,20} | Un identificativo alfanumerico della transazione assegnato dal Sistema e trasmesso al Partner nel messaggio ITN della transazione in entrata. La sua indicazione comporterà l'annullamento di una sola transazione con l'identificativo indicato. ID remoto se il pagamento è in sospeso (stato IN ATTESA). |
4 | ID ordine | NO | stringa{32} | L'identificativo della transazione assegnato nel Servizio partner e comunicato all'inizio della transazione. La sua indicazione (no ID remoto) comporterà l'annullamento di tutte le transazioni in corso (IN ATTESA stato) con l'indicazione ID ordine (e ID servizio). NOTA: Richiesto uno dei campi ID ordine o ID remoto. Se si specificano entrambi, l'elaborazione della richiesta viene interrotta e viene visualizzato un errore http. |
n.d. | Hash | SÌ | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. |
Per una corretta interrogazione, insieme ai parametri passati deve essere inviata un'intestazione HTTP definita con un contenuto appropriato. L'intestazione allegata deve essere denominata 'BmHeader' e hanno il seguente valore 'pay-bm'. Nella sua interezza, dovrebbe essere come segue "BmHeader: pay-bm".
Nel caso di un messaggio valido, viene restituito un testo in formato XML (nella stessa sessione HTTP), contenente la conferma dell'operazione o la descrizione dell'errore.
Struttura di conferma (XML)
<?xml version="1.0" encoding="UTF-8"?>
<transaction>
<serviceID>ServiceID</serviceID>
<messageID>MessageID</messageID>
<confirmation>ConfStatus</confirmation>
<reason>Reason</reason>
<hash>Hash</hash>
</transaction>
IMPORTANTE! L'ordine degli attributi per l'enumerazione Hash deve seguire la loro numerazione.
Ordine di hash | nome | richiesto | tipo | descrizione |
---|---|---|---|---|
1 | serviceID | NO | stringa{1,32} | ID servizio partner. Derivato da una richiesta di metodo. Richiesto per la conferma=CONFIRMED |
2 | messaggioID | NO | stringa{1,20} | Identificatore pseudocasuale del messaggio di 32 caratteri alfanumerici latini (ad esempio, basato sull'UID). Derivato dalla richiesta del metodo. Richiesto per la conferma=CONFIRMED |
3 | conferma | SÌ | stringa{1,100} | Stato di conferma dell'ordine. Può assumere due valori: - CONFERMATO - l'operazione è riuscita - NOTCONFIRMED - operazione fallita |
4 | motivo | NO | stringa{1,1000} | Spiegazione dei dettagli dell'elaborazione della richiesta. |
n.d. | hash | NO | stringa{1,128} | Valore della funzione message digest calcolata come descritto nella sezione Sicurezza delle transazioni. Verifica obbligatoria della conformità dell'abbreviazione calcolata da parte del servizio. Richiesto per la conferma=CONFIRMED |
Se il messaggio è sintatticamente corretto, il sistema restituirà una delle seguenti coppie che descrivono il risultato dell'elaborazione. Oltre all'interpretazione, si raccomanda di controllare lo stato della transazione (metodo Stato della transazione).
Si noti che una volta che almeno una transazione è stata annullata con successo, non è possibile avviarne una nuova o continuare una transazione già avviata con lo stesso nome. ID ordine.
conferma | motivo | dettagli |
---|---|---|
CONFERMATO | ANNULLATO_PIENAMENTE | Per l'OrderID indicato: tutte le transazioni di deposito in sospeso sono state annullate. Per il RemoteID indicato: la transazione è stata annullata. |
CONFERMATO | ANNULLATO_PARZIALMENTE | Per l'OrderID indicato: almeno una transazione è stata annullata, ma ci sono transazioni che non potevano essere annullate (ad esempio, erano già state pagate). Per il RemoteID indicato: tale risposta non si verifica. |
NON CONFERMATO | STATO_DI_PAGAMENTO_ERRATO | È stata trovata almeno una transazione indicata, ma non è stato possibile annullarne nessuna (ad esempio, non c'era nessuna transazione in sospeso). |
NON CONFERMATO | TRANSAZIONE_NON_TROVATA | La transazione indicata non è stata trovata. |
NON CONFERMATO | ALTRO_ERRORE | Si è verificato un altro errore durante l'elaborazione della richiesta. |
Tutti i messaggi di errore vengono restituiti come documento XML, contenente il codice dell'errore, il nome e la descrizione. A causa dell'elevata variabilità degli errori possibili, non viene mantenuta una documentazione completa degli errori.
CONSIGLIO: Il descrizione descrive ogni errore in modo dettagliato (il campo codice di stato e nome possono essere ignorati).
Esempio di errore (XML)
<?xml version="1.0" encoding="UTF-8"?>
<error>
<statusCode>55</statusCode>
<name>BALANCE_ERROR</name>
<description>Wrong services balance! Should be 100 but is 40</description>
</error>
Questa sezione presenta i modelli, gli scenari degli eventi e le informazioni sui flussi.
Il modello più semplice, in cui la scelta dei canali di pagamento avviene sulle pagine Autopay (paywall).
È caratterizzato dalla presentazione dei canali di pagamento da parte dell'esercente. A tal fine, è necessario ottenere un elenco di canali con le relative descrizioni dal file
elenco gateway/v3
e ottenere un elenco delle norme e dei regolamenti necessari per ogni canale di pagamento (/dati legali
).
Il resto del processo è lo stesso del modello Paywall.
La struttura del partner è costituita da almeno 1 servizio (identificato da un identificatore ID servizio) e un numero qualsiasi di conti punti (identificati da un identificatore idPunto di equilibrio).
I servizi sono di solito le fonti dei link di pagamento (sito web, app mobile, e-mail, ecc.). I servizi distribuiscono anche il traffico relativo a diversi settori (pagamenti di fatture, acquisti di e-Commerce, ecc.). Poiché la transazione è identificata da una coppia di ID ordine e ID servizioSi può dire che "il servizio corrisponde al livello della transazione".
I punti di regolamento sono definiti se è necessario distinguere in qualche modo i pagamenti che li compongono (ad esempio, indicandoli nelle segnalazioni o nei regolamenti indipendenti). Poiché il prodotto di una transazione è identificato dal punto di regolamento associato (idPunto di equilibrio), si può dire che il "punto di fatturazione corrisponde al livello del prodotto".
Il paniere di prodotti (e quindi anche i punti di fatturazione) può non essere presente nella struttura che descrive il Partner. Il motivo dell'aggiunta dei punti di fatturazione alla struttura influenza la decisione sul modello di fatturazione:
La necessità di distinguere le componenti di un deposito nell'elenco delle transazioni (nei report) non implica necessariamente il regolamento separato di ogni prodotto o punto di fatturazione; in questa situazione, i modelli di fatturazione a livello di servizio (batch o dopo ogni deposito) sono solitamente sufficienti.
La necessità di separare i regolamenti componenti di un deposito comporta l'utilizzo di un modello di regolamento a livello di punto di regolamento (aggregato o dopo ogni deposito).
Di seguito è riportata un'illustrazione di una struttura esemplificativa (senza indicare uno specifico modello di insediamento)
Il regolamento sintetico avviene il giorno lavorativo successivo (D+1).
Il regolamento dopo ogni pagamento può essere eseguito immediatamente dopo la ricezione del pagamento da parte del Cliente ai dati della transazione indicati nei parametri del Link di pagamento (opzioni: Conto del destinatario, Titolo del trasferimento del regolamento, Nome del destinatario del trasferimento del regolamento).
Il regolamento sintetico avviene il giorno lavorativo successivo (D+1).
Il regolamento dopo ogni pagamento può essere effettuato immediatamente dopo la ricezione del pagamento da parte del Cliente ai dati del prodotto indicati nei parametri del Link di pagamento (opzioni: Conto destinatario, Titolo del trasferimento del regolamento, Nome del destinatario del trasferimento del regolamento).
Le liquidazioni possono essere ordinate dal socio chiamando il metodo: transazioneSettlement.