# TsPay-Gateway

Integrazione con il servizio Gateway TsPay

# Introduzione

# Overview

Il servizio pay-gateway permette l'integrazione del servizio TsPay all'interno del mondo Digital senza necessità di integrarsi direttamente con esso.

Essendo parte del mondo Digital, l'autenticazione verso il pay-gateway è analoga a quella usata negli altri servizi. È poi il gateway ad occuparsi dell'autenticazione dell'azienda verso TsPay, che può avvenire solo se il processo di onboarding è stato completato e confermato.

I servizi ad oggi offerti dal pay-gateway sono parte di tre servizi che la Banca d'Italia definisce come **mandatorio all'incasso** (num. 3), **disposizione di ordini di pagamento** (servizi PIS, num. 7), e **informazione e aggregazione conti** (servizi AIS, num. 8).

Oltre ad una serie di [endpoint](https://digital-docs.ts-paas.com/books/tspay-gateway/page/introduzione "Introduzione") per operare sui servizi sopra citati, il servizio pay-gateway si occupa anche della gestione e reinoltro delle [notifiche](https://digital-docs.ts-paas.com/books/tspay-gateway/page/overview-d94 "Overview") per tutti i casi previsti dal servizio TsPay.

# Servizi integrati

I servizi attualmente integrati nel pay-gateway sono:

**Mandatorio all'incasso** (3):

- [Fattura attiva](https://digital-docs.ts-paas.com/link/124#bkmrk-fattura-attiva)

**Disposizione di ordini di pagamento** (servizi PIS, 7):

- [Fattura passiva](https://digital-docs.ts-paas.com/link/127#bkmrk-fattura-passiva)

**Informazione e aggregazione conti** (servizi AIS, 8):

- [Lista movimenti](https://digital-docs.ts-paas.com/link/125#bkmrk-informazioni-movimen)
- [Lista conti collegati](https://digital-docs.ts-paas.com/link/125#bkmrk-informazioni-account)

# Getting started

# Overview

Per poter utilizzare il servizio TsPay si deve:

1. Lato azienda: attivare il servizio all'interno di Digital ed effettuare poi l'onboarding.
2. Lato applicativo integrante: configurare l'applicativo su NCS per ricevere le notifiche sulle operazioni effettuate.

#####  

##### Studio e Gestita

Nel caso di uno studio che vuole utilizzare i servizi di TsPay su una sua gestita, non è necessario che lo studia faccia l'onboarding, ma è sufficiente che estenda il servizio sulla gestita, e poi sia questa a fare l'onboarding su TsPay (riconducendosi quindi al caso precedente).

# Azienda: Attivazione e Onboarding

##### 1. Attivazione

Attivare il servizio all'interno di Digital, quindi entrare nella pagina di configurazione tramite la cta "Configura TS Pay" o tramite l'icona in alto a destra nella card:

[![tspay1.jpg](https://digital-docs.ts-paas.com/uploads/images/gallery/2021-09/scaled-1680-/iMV2bvKW52rplpm5-tspay1.jpg)](https://digital-docs.ts-paas.com/uploads/images/gallery/2021-09/iMV2bvKW52rplpm5-tspay1.jpg)

Una volta dentro, seguire la cta "Registra azienda" che reindirizzerà l'utente su TsPay per permettere l'onboarding.

##### 2. Onboarding

Atterrati su TsPay, fare login con l'utenza desiderata (o crearne una nuova) e procedere con l'onboarding.  
Per dettagli sull'onboarding **in ambiente di test** seguire i passaggi **dal punto 3 al punto 5 o 7** descritti [a questo link](https://ts-pay-docs.ts-paas.com/books/onboarding/page/onboarding-di-unazienda-in-ambiente-di-test).

##### 3. Finalizzazione (<span style="color: #ff0000;">solo test e dev</span>)

Una volta completato l'onboarding, in ambiente di test e dev il processo va finalizzato tramite una chiamata API: [qui dettagli](https://digital-docs.ts-paas.com/books/tspay-gateway/page/finalizzazione-onboarding). Se la chiamata va a buon fine si riceveranno due email, alla casella di posta dell'utente con cui ci si è loggati in TsPay:

1. Conferma di onboarding azienda, con codice titolare (merchant ref).
2. Conferma di creazione ApiKey, con link per l'attivazione della stessa.

##### 4. Attivazione ApiKey

Seguire il link ricevuto nella seconda email, per l'attivazione dell'ApiKey.

# Azienda: Finalizzazione Onboarding

##### <span style="color: #ff0000;">SOLO TEST E DEV</span>

Per finalizzare l'onboarding (step 3 di [questo processo](https://digital-docs.ts-paas.com/books/tspay-gateway/page/attivazione-e-onboarding)) va effettuata una chiamata ad uno dei due seguenti endpoint (sono alternativi):

1\. Utilizzando la session-key dell'onboarding appena concluso:

```
[PUT] /internal/helpers/finalizeonboarding/by-sessionkey/{onboardingSessionKey}
```

2\. Utilizzando l'itemUuid dell'azienda onboardata:

```
[PUT] /internal/helpers/finalizeonboarding/by-itemid/{itemId}
```

I due endpoint **NON** sono esposti dal pay-gateway ma dal servizio **ts-pay-config-write** e sono **disponibili solo in ambiente di test e dev**. Swagger:

- [DEV](https://ts-pay-config-write-dev.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/helper-apis-controller)
- [TEST](https://ts-pay-config-write-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/helper-apis-controller)

**Esito:** se la chiamata va a buon fine si riceveranno due email, alla casella di posta dell'utente con cui ci si è loggati in TsPay:

1. Conferma di onboarding azienda completato, con codice titolare (merchant ref).
2. Conferma di creazione ApiKey, con link per l'attivazione della stessa.

# API

# Introduzione

#### Swagger

- [**DEV**](https://ts-pay-gateway-dev.agyo.io/swagger-ui.html)
- [**TEST**](https://ts-pay-gateway-test.agyo.io/swagger-ui.html)

#### Headers

Per chiamare correttamente gli endpoint messi a disposizione dal servizio TS Pay Gateway, è necessario includere gli headers come descritto [qui](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital).

#### Struttura dell'endpoint

Gli endpoint sono costruiti secondo la struttura:

```
/api/v{X}/{itemId}/...
```

dove

- `vX` dove X è la versione dell'API (al momento solo **v1**)
- `itemId` è il company registry dell'azienda per la quale si richiede il servizio


<p class="callout warning">In questa guida tutti gli endpoint sono descritti senza il prefisso `/api/vX` che va dunque anteposto</p>

# Incasso

### Fattura attiva

#### Descrizione

Consente di ricevere un pagamento attraverso il servizio di TS Pay; chiamando l'endpoint **link2pay** si riceverà un'url col quale sarà possibile fare un pagamento.

---

#### [Richiesta link per effetture un pagamento](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/createLinkToPay)

Genera un link per effettuare un pagamento attraverso il servizio di TS Pay.

```
[POST] /{itemId}/link2pay
```

Nella **request** in particolare abbiamo:

- `template` contenente il testo ed eventualmente il logo da visualizzare nella pagina del pagamento generata e raggiungibile al link restituito in risposta 
    - `title` titolo, generalmente usato per indicare la ragione sociale del merchant (es: "TeamSystem S.p.A.")
    - `desc` motivazione del pagamento (es: "Fattura di vendita")
    - `paymentRef` estremi della fattura (es: "Numero 123 del 15/06/2020")
    - `logo` link all'immagine da visualizzare come logo
- `callbackUrl` url cui reindirizzare l'utente una volta completata l'operazione. facoltativo
- `sourceTypes` sorgenti di pagamento accettate: carta di credito, SDD o entrambi (default)
- `maxPaymentsNumber` numero massimo di pagamenti consentiti (0=illimitato)
- `amount` l'importo da pagare espresso come numero intero in cui le ultime due cifre compongono la parte decimale (ad es. 1450 è da considerare come 14,50)
- `externalRef` un riferimento univoco al pagatore, da utilizzare in seguito come elemento di ricerca
- `metadata` elementi di tracciabilità, da utilizzare per la riconciliazione

Nella **response** l'API fornisce:

- `orderKey` identificativo dell'ordine
- `url` link da utilizzare per eseguire l'operazione

---

#### [Richiesta link per memorizzare una sorgente di pagamento per addebiti futuri](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/createLinkToSave)

Genera un link per salvare una sorgente di pagamento attraverso il servizio di TS Pay.

```
[POST] /{itemId}/link2save
```

Nella **request** in particolare abbiamo:

- `template` contenente il testo ed eventualmente il logo da visualizzare nella pagina del pagamento generata e raggiungibile al link restituito in risposta 
    - `title` titolo, generalmente usato per indicare la ragione sociale del merchant (es: "TeamSystem S.p.A.")
    - `desc` motivazione del pagamento (es: "Fattura di vendita")
    - `paymentRef` estremi della fattura (es: "Numero 123 del 15/06/2020")
    - `logo` link all'immagine da visualizzare come logo
- `callbackUrl` url cui reindirizzare l'utente una volta completata l'operazione. facoltativo
- `sourceTypes` sorgenti di pagamento accettate: carta di credito, SDD o entrambi (default)
- `maxSourceNumber` numero massimo di sorgenti memorizzabili (0=illimitato, default=1)
- `maxAmount` l'importo massimo per gli addebiti, inteso come cumulativo, espresso come numero intero in cui le ultime due cifre compongono la parte decimale (ad es. 1450 è da considerare come 14,50)
- `contextId` il contesto a cui la memorizzazione della sorgente si applica, quindi nel caso specifico la fattura
- `externalRef` un riferimento univoco al pagatore, da utilizzare in seguito come elemento di ricerca
- `metadata` elementi di tracciabilità, da utilizzare per la riconciliazione

Nella **response** l'API fornisce:

- `orderKey` identificativo dell'ordine
- `url` link da utilizzare per eseguire l'operazione

---

#### [Addebito](https://ts-pay-gateway-dev.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/createCharge)

Esegue l'addebito sulla sorgente salvata con il LinkToSave.

```
[POST] /{itemId}/charges
```

Tra gli **header** è previsto:

- `x-operation-key` chiave univoca dell'addebito con lo scopo di prevenire i doppi incassi, in modo che se si tenta una seconda operazione con la stessa chiave viene restituito un errore (opzionale)

Nella **request** in particolare abbiamo:

- `sourceKey` identifica la sorgente di pagamento memorizzata dal customer attraverso il LinkToSave
- `contextId` l'eventuale contesto precedentemente impostato
- `description` è la motivazione del pagamento, che finisce nel movimento
- `amount` l'importo da addebitare espresso come numero intero in cui le ultime due cifre compongono la parte decimale (ad es. 1450 è da considerare come 14,50)

Nella **response** l'API fornisce:

- `orderKey` identificativo dell'ordine
- `chargeKey` identificativo dell'addebito

---

#### [Esito pagamanto](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getChargesByOrderKey)

Da utilizzare per conoscere tutti i dettagli dell'addebito.

```
[GET] /{itemId}/charges/orders/{orderKey}
```

I **parametri** richiesti sono:

- `orderKey` path variable - key dell'ordine, ritornato dalla [chiamata alla creazione della richiesta di pagamento](#bkmrk-addebito).

# Conti

### Aggregazione conti e carte

#### Descrizione

Consente di recuperare le informazioni aggregate di saldo e movimenti relativi a conti corrente e carte di credito tramite il servizio di TS Pay. La SCA è unica ma va rinnovata periodicamente, in genere ogni 90 giorni.

---

#### [Informazioni conti collegati](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getLinkedAccounts)

Restituisce l'elenco dei prodotti (conti e carte) collegati, comprensivo di saldo disponibile e informazioni relative al consenso.

```
[GET] /{itemId}/linked-accounts
```

Nella **response** l'API fornisce:

- `accountId` id del conto/carta
- `iban` iban del conto (se il prodotto è un conto corrente)
- `maskedPan` numero della carta mascherato (se il prodotto è una carta)
- `currency` valuta di conto
- `providerId` id del provider (ASPSP)
- `bankName` nome della banca
- `productCode` codice del prodotto
- `lastBalance` saldo 
    - `amount` importo (espresso come numero intero in cui le ultime due cifre compongono la parte decimale)
    - `currency` valuta
- `lastBalanceDate` data di riferimento del saldo
- `accountNature` natura del conto
- `consentId` id del consenso
- `consentExpireDate` data di scadenza del consenso
- `lastRefreshStatus` stato ultimo aggiornamento
- `lastRefreshDate` data ultimo aggiornamento

---

#### [Informazioni conti collegati o precedentemente utilizzati](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getAccounts)

Restituisce l'elenco dei prodotti (solo conti) collegati o precedentemente utilizzati. I primi comprensivi di saldo disponibile e informazioni relative al consenso.

```
[GET] /{itemId}/accounts
```

Nella **response** l'API fornisce:

- `accountId` id del conto/carta (solo per conti collegati)
- `iban` iban del conto
- `currency` valuta di conto
- `providerId` id del provider (ASPSP)
- `bankName` nome della banca
- `productCode` codice del prodotto
- `lastBalance` saldo (solo per conti collegati) 
    - `amount` importo (espresso come numero intero in cui le ultime due cifre compongono la parte decimale)
    - `currency` valuta
- `lastBalanceDate` data di riferimento del saldo (solo per conti collegati)

---

#### [Informazioni movimenti](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getTransactions)

Restituisce le informazioni relative alle transazioni dei conti collegati.

```
[GET] /{itemId}/transactions
```

I **parametri** richiesti sono:

- `dateFrom` data inizio movimenti (opzionale)
- `dateTo` data fine movimenti (opzionale)
- `bookingStatus` stato del movimento (booked o pending) (opzionale)
- `accounts` accounts per i quali mostrare i movimenti (opzionale)

Nella **response** l'API fornisce:

- `accountId` identifica il conto a cui la transazione fa riferimento
- `bookingStatus` stato del movimento (booked o pending)
- `bookingDate` data del movimento
- `remittanceInformationUnstructured` descrizione del movimento
- `transactionAmount` importo movimento   
    
    - `amount` importo (espresso come numero intero in cui le ultime due cifre compongono la parte decimale)
    - `currency` valuta
- `valueDate` data valuta

---

#### [Aggiornamento dati di un conto](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/refreshAccount)

Una volta collegato un conto/carta è necessario fare un aggiornamento dei dati, per scaricare transazioni e saldi. Questa operazione è schedulata tutte le notti, ma si può anche eseguire a richiesta tramite la seguente API. Va fatta per tutti gli account collegati con quel determinato consenso.

```
[POST] /{itemId}/accounts/{accountId}/refresh
```

I **parametri** richiesti sono:

- `accountId` path variable - identifica il conto

Nel corpo della **request** in particolare abbiamo:

- `psuIpAddress` IP del client che effettua la richiesta (è richiesto un indirizzo IP valido)

Nella **response** l'API fornisce:

- `accountId` identifica il conto
- `status` stato dell'operazione di refresh (tipicamente "*updating*")

# Pagamento

### Fattura passiva

#### Descrizione

Consente di effettuare un bonifico singolo, per una o più fatture/scadenze relative allo stesso beneficiario. La SCA è richiesta ad ogni operazione, fatte salve specifiche esenzioni previste dalla normativa.

---

#### [Inizializzazione pagamento](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/createPayment)

Inizializza un pagamento tramite SCT.

```
[POST] /{itemId}/payments
```

Nella **request** in particolare abbiamo:

- `externalRef` un riferimento univoco al creditore, da utilizzare in seguito come elemento di ricerca
- `metadata` elementi di tracciabilità, da utilizzare per la riconciliazione
- `providerId` id del provider (ASPSP, la banca)
- `productCode` id del prodotto selezionato
- `psuIpAddress` indirizzo IP del richiedente
- `debtorAccount` conto del pagatore 
    - `iban` iban
    - `currency` valuta
- `creditorAccount` conto del creditore 
    - `iban` iban
    - `currency` valuta
    - `creditorName` nome
- `amount` importo (espresso come numero intero in cui le ultime due cifre compongono la parte decimale)
- `currency` valuta
- `requestedExecutionDate` data di esecuzione
- `requestedExecutionTime` ora di esecuzione
- `remittanceInformations` descrizione (causale)
- `paymentProduct` SCT o SCTinst
- `tppRedirectUri` URL di redirect

Per conoscere `productCode` e `providerId` va preventivamente invocato [l'endpoint per la lettura dei conti](https://digital-docs.ts-paas.com/link/125#bkmrk-informazioni-account).

Nella **response** l'API fornisce:

- `paymentId` id del pagamento (al momento ciascun gruppo contiene un solo pagamento)
- `status` stato dell'operazione
- `totalTransactionFees` commissioni totali della transazione
- `scaManagerRedirectUrl` URL di redirect allo SCA manager

---

#### [Esito pagamento](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getPayment)

Interroga l'esito del pagamento.

```
[GET] /{itemId}/payments/{paymentId}
```

I **parametri** richiesti sono:

- `paymentId` path variable - id del pagamento, ritornato dalla [chiamata all'inizializzazione dello stesso](#bkmrk-informazioni-account)
- `psuIpAddress` query string - indirizzo IP del client

Nella **response** l'API fornisce:

- `paymentId` id del pagamento
- `status` stato dell'operazione
- `totalTransactionFees` commissioni totali della transazione
- `totalAmount` importo totale della transazione 
    - `amount` importo (espresso come numero intero in cui le ultime due cifre compongono la parte decimale)
    - `currency` valuta
- `debtorAccount` iban del debitore
- `creditorAccount` iban del creditore
- `createdOn` data operazione

# Consenso SCA

### Effettuare una SCA

#### Descrizione

In questa sezione vengono elencati gli endpoint che consentono di ottenere e rinnovare i vari consensi necessari al collegamento di un conto.

---

#### [Ottenimento consenso una-tantum per mostrare la lista dei conti](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/createAccountListConsent)

Consente di effettuare la SCA (usa e getta) per accedere ai conti/carte in proprio possesso presso la banca, per il prodotto definito nel productId.

```
[POST] /{itemId}/consents/accountsList
```

Nella **request** in particolare abbiamo:

- `providerId<span style="color: #ff0000;"><sup>*</sup></span>` id della banca (o provider)
- `productCode<span style="color: #ff0000;"><sup>*</sup></span>` codice del prodotto
- `accountNature<span style="color: #ff0000;"><sup>*</sup></span>` natura dell'account ("account" o "card")
- `tppRedirectUri` URL di redirect dopo che la SCA viene effettuata

Nella **response** l'API fornisce:

- `consentId` id del consenso
- `consentStatus` stato del consenso
- `scaManagerRedirectUrl` URI per effettuare la SCA
- `validUntil` data fine validità

---

#### [Ottenimento consenso ricorrente](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/createRecurringConsents)

Consente di effettuare la SCA (valida tipicamente 90 giorni) per collegare ai conti/carte in proprio possesso presso la banca, per il prodotto selezionato.

```
[POST] /{itemId}/consents/recurring
```

Nella **request** in particolare abbiamo:

- `providerId<span style="color: #ff0000;"><sup>*</sup></span>` id della banca (o provider)
- `productCode<sup><span style="color: #ff0000;">*</span></sup>` codice del prodotto
- `tppRedirectUri` URL di redirect dopo che la SCA viene effettuata
- `accountAccess<span style="color: #ff0000;"><sup>*</sup></span>` oggetto composto da 
    - `balances<span style="color: #ff0000;"><sup>*</sup></span>` lista di oggetti con la seguente forma: 
        - `resourceId<span style="color: #ff0000;"><sup>*</sup></span>`
        - `iban`
        - `maskedPan`
        - `currency<span style="color: #ff0000;"><sup>*</sup></span>`
        - `accountNature`
    - `transactions<span style="color: #ff0000;"><sup>*</sup></span>` lista di oggetti con la stessa forma di `balances`
    - `accounts` lista di oggetti con la stessa forma di `balances`

Nella **response** l'API fornisce:

- `consentId` id del consenso
- `consentStatus` stato del consenso
- `scaManagerRedirectUrl` URI per effettuare la SCA
- `validUntil` data fine validità

---

#### [Rinnovo di un consenso](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/renewConsent)

Consente di rinnovare la SCA (valida tipicamente 90 giorni) a partire da un consenso precedentemente valido.

```
[PUT] /{itemId}/consents/{consentId}/renew
```

I **parametri** richiesti sono:

- `consentId` path variable - id del consenso.

Nella **response** l'API fornisce:

- `consentId` id del consenso
- `consentStatus` stato del consenso
- `scaManagerRedirectUrl` URI per effettuare la SCA
- `validUntil` data fine validità

---

#### [Revoca di un consenso](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/deleteConsent)

Consente di rinnovare la SCA (valida tipicamente 90 giorni) a partire da un consenso precedentemente valido.

```
[DELETE] /{itemId}/consents/{consentId}
```

I **parametri** richiesti sono:

- `consentId` path variable - id del consenso.

Nella **response** l'API torna il consenso stesso, con lo status aggiornato.

---

#### [Recuperare i conti collegati ad un consenso](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getAccountsByConsentId)

Consente di recuperare l'elenco dei conti/carte in proprio possesso presso la banca a fronte del consenso precedentemente fornito.

```
[GET] /{itemId}/consents/{consentId}/accounts
```

I **parametri** richiesti sono:

- `consentId` path variable - id del consenso.

Nella **response** l'API fornisce:

- `accounts` lista degli account composti dalle seguenti proprietà 
    - `accountId` stato del consenso
    - `resourceId` id della risorsa
    - `iban` codice IBAN
    - `currency` valuta di conto
    - `providerId` id della banca
    - `productCode` codice del prodotto
    - `consentId` id del consenso

# Banche e Prodotti

#### Descrizione

In questa sezione vengono elencati gli endpoint che consentono di ottenere informazioni riguardante le banche e i prodotti associati.

---

#### [Banche](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getBanks)

Consente di recuperare l'elenco delle banche.

```
[GET] /{itemId}/banks
```

Nella **response** l'API fornisce:

- `id` id della banca (o provider) da utilizzare come *bankId* (o *providerId*) nelle varie chiamate
- `aspspCode` codice ASPSP
- `satus` stato
- `businessName` descrizione della banca
- `aisInfo` informazioni relative al servizio [**Conti**](https://digital-docs.ts-paas.com/books/tspay-gateway/page/conti)
    - `globalBankConsent` consenso globale supportato
    - `supportedNatures` nature supportate (conto, carta o entrambi)
- `logo` URL del logo della banca
- `readyToUse` indica che la banca è pronta per essere utilizzata dal servizio
- `supportedPaymentProducts` modalità di pagamento supportate 
    - `SCT-IT` SCT Italia
    - `SCT-EU` SCT Europa
    - `IP` SCT instantaneo
    - `CB` Cross-border
    - `T2` Target 2

---

#### [Prodotti](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getBankProducts)

Consente di recuperare l'elenco dei prodotti di una determinata banca.

```
[GET] /{itemId}/banks/{bankId}/products
```

Il parametro `bankId` fa riferimento all'id della banca ottenibile chiamando l'endpoint [Banche](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getBanks) sopra.

Nella **response** l'API fornisce:

- `aspspProductCode` codice del prodotto da utilizzare come *productCode* nelle varie chiamate
- `aspspProductDescription` descrizione prodotto estesa
- `aspspProductUuid` uuid del prodotto
- `aspspProductSuggestedLabel`descrizione sintetica del prodotto

# Settings

#### Descrizione

In questa sezione vengono elencati gli endpoint riguardanti le impostazioni/configurazioni di pay-gateway

---

#### [Configurazione di pagamento](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getSettingsConfig)

```
[GET] /{itemId}/settings/config
```

**Response**:

- `minChargeAmount`: importo minimo transazione (in centesimi)
- `maxChargeAmount`: importo massimo transazione (in centesimi)
- `balanceRefundReserve`: esposizione massima per rimborso (in centesimi)
- `minWireAmount`: importo minimo accredito (in centesimi)
- `maxWireAmount`: importo massimo accredito (in centesimi)
- `netChargeEnabled`: incasso tramite SDD al netto abilitato
- `payoutBlocked`: accredito bloccato

# Casi d'uso

# Collegamento conto

Per collegare un conto o carta è necessario seguire i seguenti passi:

1. Selezione della banca a cui appartiene il conto da collegare - [Banche](https://digital-docs.ts-paas.com/link/139#bkmrk-inizizalizza-un-paga)
2. Selezione del prodotto bancario a cui appartiene il conto - [Prodotti](https://digital-docs.ts-paas.com/link/139#bkmrk-consente-di-recupera-0)
3. Prestazione del consenso una-tantum per accedere ai conti e carte - [Consenso una-tantum](https://digital-docs.ts-paas.com/link/135#bkmrk-inizizalizza-un-paga)
4. Selezione dei conti e carte da collegare tra quelli disponibili legati al consenso precedente - [Recuperare i conti collegati ad un consenso](https://digital-docs.ts-paas.com/link/135#bkmrk-consente-di-recupera-0)
5. Prestazione del consenso ricorrente per collegare i conti e carte - [Ottenimento consenso ricorrente](https://digital-docs.ts-paas.com/link/135#bkmrk-consente-di-effettua)
6. Elenco dei conti e carte collegati con un determinato consenso - [Recuperare i conti collegati ad un consenso](https://digital-docs.ts-paas.com/link/135#bkmrk-consente-di-recupera-0)
7. Aggiornamento dei dati - [Aggiornamento conti](https://digital-docs.ts-paas.com/link/125#bkmrk-una-volta-collegato-)

# Notifiche

# Overview

Il sistema di notiche degli eventi che arrivano da TsPay sfrutta NCS per il loro smistamento all'interno di Digital.

Le applicazioni che si integrano via pay-gateway, e che hanno effettuato la configurazione per ricevere le notifiche via NCS, riceveranno tutte le notifiche, comprese quelle relative ad eventi scatenati da altre applicazioni, che sono anch'esse integrate via pay-gateway. Questo per due motivi:

1. Tutte le applicazioni che si integrano via pay-gateway si "presentano" a TsPay come singola applicazione.
2. Tutte le applicazioni del mondo digital potenzialmente operano sulle stesse aziende e quindi vogliono rimanere allineate sullo stato delle stesse.

È compito quindi della singola applicazione filtrare le notifiche desiderate dalle indesiderate, generalmente tenendo traccia dell'id dell'evento.

# Flusso notifiche

#### Notifiche

Le notifiche vengono inviate al verificarsi di determinati “eventi”.

Ogni **Evento** è composto da due parti, **Entity** e **State**, nella forma `entity.state`: l’**Entity** è il soggetto principale (ad esempio `tspay_pis`) mentre **State** si riferisce allo status dell’Entity (ad esempio `active`).

Esempi di eventi:

- `tspay_charge.active`
- `tspay_payout.refunded`
- `tspay_registration.active`



Gli eventi previsti, con i relativi stati, sono i seguenti:

<table border="1" id="bkmrk-servizio-entit%C3%A0-stat" style="border-collapse: collapse; width: 100%; height: 790px;"><tbody><tr style="height: 29px;"><td class="align-center" style="height: 29px; width: 14.074%;">**Servizio**</td><td class="align-center" style="height: 29px; width: 14.8149%;">**Entity**</td><td class="align-center" style="height: 29px; width: 19.2593%;">**State**</td><td class="align-center" style="height: 29px; width: 51.7283%;">**Descrizione**</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;">[Incasso (3)](https://digital-docs.ts-paas.com/books/tspay-gateway/page/servizi-integrati#bkmrk-mandatorio-all%27incas "Servizi integrati")</td><td style="width: 14.8149%; height: 29px;">`<a href="https://digital-docs.ts-paas.com/books/tspay-gateway/page/notifiche-da-entita-source">tspay_source</a>`</td><td style="height: 29px; width: 19.2593%;">`active`</td><td style="height: 29px; width: 51.7283%;">Memorizzazione sorgente Link2Save andata a buon fine</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="height: 29px; width: 19.2593%;">`error`</td><td style="height: 29px; width: 51.7283%;">Memorizzazione sorgente Link2Save andata in errore</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;">`<a href="https://digital-docs.ts-paas.com/books/tspay-gateway/page/notifiche-da-entita-charge" title="Notifiche da entità "charge"">tspay_charge</a>`</td><td style="height: 29px; width: 19.2593%;">`pending`</td><td style="height: 29px; width: 51.7283%;">Per l'SDD, nel tempo necessario all'elaborazione del pagamento</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="height: 29px; width: 19.2593%;">`active`</td><td style="height: 29px; width: 51.7283%;"><div>Pagamento andato a buon fine</div></td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="height: 29px; width: 19.2593%;">`error`</td><td style="height: 29px; width: 51.7283%;">Pagamento andato in errore</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="height: 29px; width: 19.2593%;">`refunded`</td><td style="height: 29px; width: 51.7283%;">Pagamento rimborsato</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="height: 29px; width: 19.2593%;">`disputeCreated`</td><td style="height: 29px; width: 51.7283%;">Contestazione creata</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="width: 19.2593%; height: 29px;">`disputeWithdrawn`</td><td style="width: 51.7283%; height: 29px;">Contestazione con importo trattenuto</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="width: 19.2593%; height: 29px;">`disputeUpdated`</td><td style="width: 51.7283%; height: 29px;">Contestazione aggiornata a seguito di invio prove</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="width: 19.2593%; height: 29px;">`disputeClosedLost`</td><td style="width: 51.7283%; height: 29px;">Contestazione persa</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="width: 19.2593%; height: 29px;">`disputeClosedWon`</td><td style="width: 51.7283%; height: 29px;">Contestazione vinta</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="width: 19.2593%; height: 29px;">`disputeClosed`</td><td style="width: 51.7283%; height: 29px;">Contestazione chiusa</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="width: 19.2593%; height: 29px;">`disputeRefunded`</td><td style="width: 51.7283%; height: 29px;">Contestazione rimborsata</td></tr><tr style="height: 32px;"><td style="width: 14.074%; height: 32px;"> </td><td style="width: 14.8149%; height: 32px;">`<a href="https://digital-docs.ts-paas.com/link/167#bkmrk-page-title" title="Notifiche da entità "charge"">tspay_wire</a>`</td><td style="width: 19.2593%; height: 32px;">`pending`</td><td style="width: 51.7283%; height: 32px;">Accredito in corso</td></tr><tr style="height: 30px;"><td style="width: 14.074%; height: 30px;"> </td><td style="width: 14.8149%; height: 30px;"> </td><td style="width: 19.2593%; height: 30px;">`done`</td><td style="width: 51.7283%; height: 30px;">Accredito eseguito</td></tr><tr style="height: 30px;"><td style="width: 14.074%; height: 30px;"> </td><td style="width: 14.8149%; height: 30px;"> </td><td style="width: 19.2593%; height: 30px;">`failed`</td><td style="width: 51.7283%; height: 30px;">Accredito fallito</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="width: 19.2593%; height: 29px;">`reverted`</td><td style="width: 51.7283%; height: 29px;">Accredito stornato</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="width: 19.2593%; height: 29px;">`expired`</td><td style="width: 51.7283%; height: 29px;">Accredito non confermato</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="width: 19.2593%; height: 29px;">`error`</td><td style="width: 51.7283%; height: 29px;">Accredito in errore</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;">[Pagamento (7)](https://digital-docs.ts-paas.com/books/tspay-gateway/page/servizi-integrati#bkmrk-disposizione-di-ordi "Servizi integrati")</td><td style="width: 14.8149%; height: 29px;">`<a href="https://digital-docs.ts-paas.com/books/tspay-gateway/page/notifiche-da-entita-pis">tspay_pis</a>`</td><td style="height: 29px; width: 19.2593%;">`pending`</td><td style="height: 29px; width: 51.7283%;">Pagamento in corso</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="height: 29px; width: 19.2593%;">`active`</td><td style="height: 29px; width: 51.7283%;">Pagamento eseguito</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="height: 29px; width: 19.2593%;">`failed`</td><td style="height: 29px; width: 51.7283%;">Pagamento fallito</td></tr><tr style="height: 30px;"><td style="width: 14.074%; height: 30px;"> </td><td style="width: 14.8149%; height: 30px;"> </td><td style="height: 30px; width: 19.2593%;">`error`</td><td style="height: 30px; width: 51.7283%;">Pagamento andato in errore</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;">[Conti (8)](https://digital-docs.ts-paas.com/books/tspay-gateway/page/servizi-integrati#bkmrk-informazione-e-aggre "Servizi integrati")</td><td style="width: 14.8149%; height: 29px;">`<a href="https://digital-docs.ts-paas.com/books/tspay-gateway/page/notifiche-consenso">tspay_consent</a>`</td><td style="height: 29px; width: 19.2593%;">`created`</td><td style="height: 29px; width: 51.7283%;">Consenso creato</td></tr><tr style="height: 29px;"><td style="width: 14.074%; height: 29px;"> </td><td style="width: 14.8149%; height: 29px;"> </td><td style="height: 29px; width: 19.2593%;">`renewed`</td><td style="height: 29px; width: 51.7283%;">Consenso rinnovato</td></tr><tr style="height: 30px;"><td style="width: 14.074%; height: 30px;"> </td><td style="width: 14.8149%; height: 30px;"> </td><td style="height: 30px; width: 19.2593%;">`in_expiration`</td><td style="height: 30px; width: 51.7283%;">Consenso in scadenza</td></tr></tbody></table>

---

#### Schema

Tutte le notifiche hanno il seguente schema:<svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg>

- `itemId` company registry dell'azienda per la quale si è verificato l'evento notificato
- `entity` entità
- `state` stato
- `event` evento
- `eventTime` timestamp
- `payload` parte variabile dipendente dal tipo di evento. Dettagli in basso.

##### Payload specifici per entità:

Di seguito i riferimenti allo schema dei vari payload:<svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg>

- Notifiche da entità `tspay_source`: [specifiche payload](https://digital-docs.ts-paas.com/books/tspay-gateway/page/notifiche-da-entita-source)
- Notifiche da entità `tspay_charge`: [specifiche payload](https://digital-docs.ts-paas.com/books/tspay-gateway/page/notifiche-da-entita-charge "Notifiche da entità "charge"")
- Notifiche da entità `tspay_wire`: [specifiche payload](https://digital-docs.ts-paas.com/link/167#bkmrk-page-title "Notifiche da entità "charge"")
- Notifiche da entità `tspay_pis`: [specifiche payload](https://digital-docs.ts-paas.com/books/tspay-gateway/page/notifiche-da-entita-pis)
- Notifiche da entità `tspay_consent`: [specifiche payload](https://digital-docs.ts-paas.com/books/tspay-gateway/page/notifiche-consenso)

# Payload notifiche tspay_charge

<table border="1" id="bkmrk-campo-tipo-descrizio-0" style="height: 436px; width: 510px;"><tbody><tr style="height: 29px;"><td class="align-center" style="width: 135.111px; height: 29px;">**Campo**</td><td class="align-center" style="width: 78.2222px; height: 29px;">**Tipo**</td><td class="align-center" style="width: 295.619px; height: 29px;">**Descrizione**</td></tr><tr style="height: 30px;"><td style="width: 135.111px; height: 30px;">`amount`</td><td style="width: 78.2222px; height: 30px;">integer</td><td style="width: 295.619px; height: 30px;">importo lordo</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`currency`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">valuta</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`chargeKey`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">id riferimento pagamento</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`state`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">stato pagamento</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`upstreamRef`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">flusso stati</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`orderKey`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">id riferimento ordine</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`customerKey`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">id riferimento cliente</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`upstreamStatus`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">stato pagamento</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`fees`</td><td style="width: 78.2222px; height: 29px;">array</td><td style="width: 295.619px; height: 29px;">commissioni</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`netAmount`</td><td style="width: 78.2222px; height: 29px;">integer</td><td style="width: 295.619px; height: 29px;">importo netto</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`modifiedOn`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">data di modifica</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`createdOn`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">data di creazione</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`payMethod`</td><td style="width: 78.2222px; height: 29px;">string</td><td style="width: 295.619px; height: 29px;">metodo di pagamento (card, SDD)</td></tr><tr style="height: 29px;"><td style="width: 135.111px; height: 29px;">`order`</td><td style="width: 78.2222px; height: 29px;">array</td><td style="width: 295.619px; height: 29px;">dettaglio richiesta di riferimento</td></tr></tbody></table>

# Payload notifiche tspay_source

<table border="1" id="bkmrk-campo-tipo-descrizio" style="height: 329px; width: 704px;"><tbody><tr style="height: 29px;"><td class="align-center" style="height: 29px; width: 114.794px;">**Campo**</td><td class="align-center" style="height: 29px; width: 90.4127px;">**Tipo**</td><td class="align-center" style="height: 29px; width: 497.778px;">**Descrizione**</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`orderKey`</td><td style="height: 30px; width: 90.4127px;">string</td><td style="height: 30px; width: 497.778px;">id richiesta di riferimento</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`sourceKey`</td><td style="height: 30px; width: 90.4127px;">string</td><td style="height: 30px; width: 497.778px;">id riferimento sorgente di pagamento</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`createdOn`</td><td style="height: 30px; width: 90.4127px;">string</td><td style="height: 30px; width: 497.778px;">data creazione</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`modifiedOn`</td><td style="height: 30px; width: 90.4127px;">string</td><td style="height: 30px; width: 497.778px;">data modifica</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`type`</td><td style="height: 30px; width: 90.4127px;">string</td><td style="height: 30px; width: 497.778px;">tipo sorgente di pagamento (card, sepa\_debit)</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`last4`</td><td style="height: 30px; width: 90.4127px;">string</td><td style="height: 30px; width: 497.778px;">ultime 4 cifre del numero identificativo della sorgente (carta o IBAN)</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`expiration`</td><td style="height: 30px; width: 90.4127px;">string</td><td style="height: 30px; width: 497.778px;">data di scadenza in formato mm/yyyy (solo carta)</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`brand`</td><td style="height: 30px; width: 90.4127px;">string</td><td style="height: 30px; width: 497.778px;">tipo di network (Visa, MasterCard, American Express, ecc...) (solo carta)</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`funding`</td><td style="height: 30px; width: 90.4127px;">string</td><td style="height: 30px; width: 497.778px;">tipologia di carta (credit, debit, prepaid) (solo carta)</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 114.794px;">`order`</td><td style="height: 30px; width: 90.4127px;">array</td><td style="height: 30px; width: 497.778px;">dettaglio richiesta riferimento</td></tr></tbody></table>

# Payload notifiche tspay_pis

<table border="1" id="bkmrk-campo-tipo-descrizio"><tbody><tr><td class="align-center">**Campo**</td><td class="align-center">**Tipo**</td><td class="align-center">**Descrizione**</td></tr><tr><td>`paymentId`</td><td>string</td><td>id del pagamento</td></tr><tr><td>`amount`</td><td>long</td><td>importo</td></tr><tr><td>`currency`</td><td>string</td><td>valuta</td></tr><tr><td>`remittanceInfo`</td><td>string</td><td>descrizione (causale)</td></tr><tr><td>`debtorIban`</td><td>string</td><td>iban del debitore</td></tr><tr><td>`creditorIban`</td><td>string</td><td>iban del creditore</td></tr><tr><td>`creditorName`</td><td>string</td><td>nome del creditore</td></tr><tr><td>`externalRef`</td><td>string</td><td>un riferimento univoco al creditore, da utilizzare in seguito come elemento di ricerca</td></tr><tr><td>`metadata`</td><td>string</td><td>elementi di tracciabilità, da utilizzare per la riconciliazione</td></tr><tr><td>`providerId`</td><td>string</td><td>id del provider (ASPSP)</td></tr><tr><td>`productCode`</td><td>string</td><td>id del prodotto</td></tr><tr><td>`paymentProduct`</td><td>string</td><td>SCT o SCTinst</td></tr></tbody></table>

# Payload notifiche tspay_consent

<table border="1" id="bkmrk-campo-tipo-descrizio-0" style="height: 291px; width: 450px;"><tbody><tr style="height: 29px;"><td class="align-center" style="width: 136px; height: 29px;">**Campo**</td><td class="align-center" style="width: 61px; height: 29px;">**Tipo**</td><td class="align-center" style="width: 253px; height: 29px;">**Descrizione**</td></tr><tr style="height: 30px;"><td style="width: 136px; height: 30px;">`type`</td><td style="width: 61px; height: 30px;"> </td><td style="width: 253px; height: 30px;">non utilizzato</td></tr><tr style="height: 29px;"><td style="width: 136px; height: 29px;">`consentId`</td><td style="width: 61px; height: 29px;">string</td><td style="width: 253px; height: 29px;">id del consenso</td></tr><tr style="height: 29px;"><td style="width: 136px; height: 29px;">`providerId`</td><td style="width: 61px; height: 29px;">string</td><td style="width: 253px; height: 29px;">id della banca (o provider)</td></tr><tr style="height: 29px;"><td style="width: 136px; height: 29px;">`productCode`</td><td style="width: 61px; height: 29px;">string</td><td style="width: 253px; height: 29px;">codice prodotto</td></tr><tr style="height: 29px;"><td style="width: 136px; height: 29px;">`validUntil`</td><td style="width: 61px; height: 29px;">string</td><td style="width: 253px; height: 29px;">data scadenza consenso</td></tr><tr style="height: 29px;"><td style="width: 136px; height: 29px;">`externalRef`</td><td style="width: 61px; height: 29px;">string</td><td style="width: 253px; height: 29px;">riferimento esterno</td></tr><tr style="height: 29px;"><td style="width: 136px; height: 29px;">`metadata`</td><td style="width: 61px; height: 29px;">string</td><td style="width: 253px; height: 29px;">dati di tracciabilità</td></tr><tr style="height: 29px;"><td style="width: 136px; height: 29px;">`accounts`</td><td style="width: 61px; height: 29px;">array</td><td style="width: 253px; height: 29px;">elenco conti/carte riferiti al consenso</td></tr></tbody></table>

ogni oggetto dell'array `accounts` ha i seguenti campi:

<table border="1" id="bkmrk-campo-tipo-descrizio" style="height: 291px;"><tbody><tr style="height: 29px;"><td class="align-center" style="width: 136px; height: 29px;">**Campo**</td><td class="align-center" style="width: 61px; height: 29px;">**Tipo**</td><td class="align-center" style="width: 229px; height: 29px;">**Descrizione**</td></tr><tr style="height: 30px;"><td style="width: 136px; height: 30px;">`iban`</td><td style="width: 61px; height: 30px;">string</td><td style="width: 229px; height: 30px;">codice iban (per i conti)</td></tr><tr style="height: 29px;"><td style="width: 136px; height: 29px;">`maskedPan`</td><td style="width: 61px; height: 29px;">string</td><td style="width: 229px; height: 29px;">numero della carta (criptato)</td></tr><tr style="height: 29px;"><td style="width: 136px; height: 29px;">`currency`</td><td style="width: 61px; height: 29px;">string</td><td style="width: 229px; height: 29px;">valuta</td></tr></tbody></table>

# Payload notifiche tspay_wire

<table border="1" id="bkmrk-campo-tipo-descrizio-1" style="height: 377px; width: 532px;"><tbody><tr style="height: 29px;"><td class="align-center" style="height: 29px; width: 164.571px;">**Campo**</td><td class="align-center" style="height: 29px; width: 97.5238px;">**Tipo**</td><td class="align-center" style="height: 29px; width: 268.19px;">**Descrizione**</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`amount`</td><td style="height: 29px; width: 97.5238px;">integer</td><td style="height: 29px; width: 268.19px;">importo lordo</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`beneName`</td><td style="height: 29px; width: 97.5238px;">string</td><td style="height: 29px; width: 268.19px;">nome beneficiario</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`createdOn`</td><td style="height: 29px; width: 97.5238px;">string</td><td style="height: 29px; width: 268.19px;">data di creazione</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`currency`</td><td style="height: 29px; width: 97.5238px;">string</td><td style="height: 29px; width: 268.19px;">valuta</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`fees`</td><td style="height: 29px; width: 97.5238px;">array</td><td style="height: 29px; width: 268.19px;">commissioni</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`iban`</td><td style="height: 29px; width: 97.5238px;">string</td><td style="height: 29px; width: 268.19px;">iban beneficiario</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`modifiedOn`</td><td style="height: 29px; width: 97.5238px;">string</td><td style="height: 29px; width: 268.19px;">data di modifica</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`netAmount`</td><td style="height: 29px; width: 97.5238px;">integer</td><td style="height: 29px; width: 268.19px;">importo netto</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`payScheduleRef`</td><td style="height: 29px; width: 97.5238px;">string</td><td style="height: 29px; width: 268.19px;">riferimento accredito</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`state`</td><td style="height: 29px; width: 97.5238px;">string</td><td style="height: 29px; width: 268.19px;">stato</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`wireDesc`</td><td style="height: 29px; width: 97.5238px;">string</td><td style="height: 29px; width: 268.19px;">descrizione accredito</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 164.571px;">`wireKey`</td><td style="height: 29px; width: 97.5238px;">string</td><td style="height: 29px; width: 268.19px;">id accredito</td></tr></tbody></table>

# Configurazione corrente NCS

Attualmente NCS è configurato per inviare le notifiche:

1. via **webhook** agli applicativi
2. vie **email** agli utenti

1\. Attualmente agli applicativi integrati, che si sono configurati su NCS, vengono inviate tutte le notifiche in arrivo da TsPay. Essendo via webhook, **l'applicativo deve esporre un endpoint su cui essere notificato**. Il payload della chiamata sarà (come già specificato [qui, in schema](https://digital-docs.ts-paas.com/books/tspay-gateway/page/flusso-notifiche)):

```JSON
{
  "itemId": "{{itemId}}",
  "entity": "{{entity}}",
  "state": "{{state}}",
  "event": "{{event}}",
  "eventTime": "{{eventTime}}",
  "payload": "{{payload}}"
}
```

2\. Oltre alle notifiche via webhook per gli applicativi, sono configurate anche le notifiche via email per i soli seguenti eventi: `tspay_consent.renewed`, `tspay_consent.in_expiration`, `tspay_consent.created`.