link-it / govpay

Porta di accesso al sistema pagoPA
GNU General Public License v3.0
44 stars 22 forks source link

SANP 3.4.0: Archivio centralizzato avvisi #573

Open nardil opened 1 year ago

nardil commented 1 year ago

Necessità: pagoPA richiede la pubblicazione degli avvisi sull'archivio centralizzato (https://docs.pagopa.it/circolare-pagopa/dettaglio-interventi/archivio-centralizzato-avvisi) come archivio di fallback qualora i servizi dell'Ente non siano disponibili.

Note: Il servizio verra' specificato nelle SANP 3.4.0 non ancora pubblicate.

Presumibilmente saranno predisposte delle api per caricare gli estremi dell'avviso con cui i PSP possano effettuare la riscossione in caso di indisponibilità dei servizi dell'Ente. L'implementazione dovrà essere trasparente nei casi di caricamento nell'APA.

Nota: chiarire l'eventualità di pagamento di un importo non aggiornato.

pintorig commented 1 year ago

Il servizio verra' implementato utilizzando l'openapi aggiornato alla versione SANP 3.5.0.

nardil commented 1 year ago

Con ogni probabilità sara' necessario prevedere nella configurazione dell'intermediario la URL di erogazione del servizio. E' stato richiesto a pagoPA un chiarimento in merito per individuare le URL reali di UAT ed Esercizio

https://github.com/pagopa/pagopa-api/issues/909

pintorig commented 1 year ago

Scelte implementative:

pintorig commented 1 year ago

E' stata fatta una richiesta di chiarimento a https://github.com/pagopa/pagopa-api/issues/909 con le seguenti richieste (per ognuna e' indicata l'attuale implementazione in GovPay):

  1. Nel caso di pagamento multibeneficiario NON bisogna inviare l'avviso di pagamento, e' corretto? Pagamento multibeneficiario NON viene inviato l'avviso di pagamento.
  2. In caso di aggiornamento di un avviso il servizio risponde sempre 201 Created? Mi aspetto sempre 201 Created.
  3. Cosa succede se aggiorno un avviso modificando un campo che non sia l'importo o la data scadenza? La richiesta viene rifiutata, accettata senza modificare i dati "non modificabili" o accettata aggiornando l'avviso anche nei dati "non modificabili"? La richiesta di aggiornamento di un avviso viene fatta se si riscontra la modifica di data scadenza o importo, in tal caso tutti i campi vengono inviati con eventuali i valori modificati.
  4. L'EC deve comunicare obbligatoriamente la chiusura della posizione al momento della ricezione della Ricevuta di pagamento? Vengono chiuse le posizioni inviando una richiesta con importo = 0 al momento della ricezione della ricevuta.
pintorig commented 11 months ago

Con il rilascio delle SANP 3.6.0 sono stati definiti tutti i punti per la gestione degli avvisi da inviare ad ACA:

Ogni EC, al momento delle creazione di una nuova posizione debitoria, deve effettuare il censimento della stessa sull’ACA tramite la paCreatePosition; grazie alla proprietà di idempotenza, per mezzo della stessa API è possibile aggiornare la posizione.

Fase di censimento

La richiesta di creazione di una nuova posizione giunge all’ACA per mezzo della paCreatePosition, fornendo in input i seguenti dati:

ACA effettua una verifica semantica e integra le informazioni della posizione:

Posizioni multibeneficiario

Anche le posizioni debitorie multibeneficiario devono essere inviate all'ACA, con le accortezze di seguito descritte:

pintorig commented 11 months ago

Fase di aggiornamento

E’ obbligatorio effettuare un aggiornamento della posizione debitoria richiamando la summenzionata API paCreatePosition nei seguenti casi:

La chiamata deve essere fatta contestualmente alla modifica effettuata sull'archivio dell'EC.

Ogni volta che viene eseguito un aggiornamento della posizione debitoria, la piattaforma aggiorna in automatico anche l’informazione dell'IBAN di accredito recuperandolo dal backoffice pagoPA.

Fase di annullamento

E' obbligatorio nel caso di posizione annullata o sostituita con una nuova effettuare l’annullamento della posizione debitoria richiamando la summenzionata API paCreatePosition.

La chiamata deve essere fatta contestualmente alla modifica effettuata sull'archivio dell'EC.

L’annullamento può essere effettuato esclusivamente impostando il valore del campo amount a zero.

Fase di chiusura

Nel caso di posizione debitoria pagata dal debitore tramite canali diversi dalla piattafroma pagoPA è necessario richiamare la summenzionata API paCreatePosition per effettuare la chiusura della stessa.

La chiusura può essere effettuata esclusivamente impostando il valore del campo amount a zero.

Come indicato nella Issue pagopa/pagopa-api#909: Lo stato della posizione viene aggiornata in automatico solo in caso di pagamento. In questa fase la piattaforma riesce ad intercettare l'esito del pagamento e in caso di esito positivo chiude in autonomia la posizione.

pintorig commented 11 months ago

@nardil Si e' deciso di introdurre in parallelo all'ACA anche il supporto ai servizi GPD.

In entrambi i casi e' previsto l'invio della posizione debitoria agli archivi centralizzati. L'invio della posizione verso ACA e' automatico e contestuale al caricamento della posizione su GovPay. L'invio della posizione verso GPD esclude l'invio automatico verso ACA.

Per richiedere l'invio verso GPD e' necessario indicarlo esplicitamente al momento del caricamento di una pendenza.

Per la gestione degli invii e' necessario aggiungere alla tabella versamenti la colonna inviatoGPD di tipo boolean che indica se la pendenza e' stato spedito all'ACA o al GPD. Il valore da impostare per tutte le pendenze gia' presenti in archivio e' false (invio ACA). Al momento del caricamento di una pendenza viene assegnato il valore false a meno che non venga richiesto l'invio GPD. Aggiungere la colonna di tipo datetime dataInvioGPD che si utilizza per decidere quali pendenze inviare. Le pendenze per cui dataUltimoAggiornamento > dataInvioGPD dovranno essere inviate.

pintorig commented 9 months ago

@nardil Revisione 02/02/2024

E' stato deciso al momento di non implementare il supporto al GPD.

Le modifiche da realizzare nel progetto GovPay sono le seguenti:

nardil commented 7 months ago

Allineare il batch di alimentazione ACA alle SANP 3.7.0.

L'ultima versione prevede di fornire all'ACA anche un conto di accredito su cui riversare i fondi riscossi. Questo implica che in caso di multi-beneficiario ne vada individuato uno tra quelli indicati. Come policy interna, verra' selezionato il primo iban tra quelli dell'EC.

OpenPoint: In caso tutti gli importi siano attestati a beneficiari diversi dall'EC, quale conto scegliere?