pagopa / pagopa-api

Tutti gli schemi XSD e WSDL che seguono release diverse dalle SANP
22 stars 15 forks source link

[RFC] Significato del campo transferType nella paVerifyPaymentNotice #142

Closed lucagargiulo closed 3 years ago

lucagargiulo commented 3 years ago

Nella response della paVerifyPaymentNotice viene restituita una lista di opzioni di pagamento: ognuna di queste contiene anche un campo transferType, opzionale, che può assumere il solo valore "POSTAL". Indica al nodo che è possibile il pagamento di quell'avviso su cc postale, e quindi se un soggetto ha richiesto il pagamento di un avviso di pagamento postale il nodo invoca la verificaBollettino impostando allCCP a true se transferType == "POSTAL" e a false in caso contrario? Se invece il soggetto ha chiesto di pagare presso un altro PSP l'indicazione è inutile? Ma se il soggetto sta pagando un avviso postale non significa già che quell'avviso può essere pagato su cc postale?

nardil commented 3 years ago

Ciao @lucagargiulo , non so se la domanda viene posta dal punto di vista del fruitore (PSP) o dell'erogatore (EC) ma nell'XSD c'e' un commento all'elemento che indica il Nodo come responsabile della compilazione del campo:

https://github.com/pagopa/pagopa-api/blob/5aaef7c6815ec33a2c89f363684eed4a2ea015ab/ec/paForNode.xsd#L236

nardil commented 3 years ago

Sul significato semantico del campo e come debba trattarlo il PSP non saprei aiutarti.

CandeAnn commented 3 years ago

ripropongo la questione lato EC: poichè il valore di TransferType compare nella response dell'EC al Nodo (paVerfifyPaymentNoticeRes) tale valore, sebbene opzionale, deve essere impostato dall'EC. L'elemento TransferType, inoltre, compare anche nella paGetPaymentReq e in questo caso è valorizzato dal Nodo, perchè è il Nodo che invoca l'EC. Io immaginavo che volesse indicare all'EC che il PSP presso cui l'utente sta pagando è POSTE (nel caso del mio EC ci sono per uno stesso incasso sia IBAN postali che IBAN bancari e quindi ho bisogno di sapere se nella response paGetPaymentRes devo indicare l'IBAN postale o quello bancario)

lucagargiulo commented 3 years ago

Grazie @nardil e @CandeAnn per la collaborazione :) @nardil, la questione riguardava il punto di vista dell'EC. Il problema è che il commento che tu citi è associato al transferType di un'opzione di pagamento restituita dall'EC, quindi è l'EC che la sta impostando, non il nodo. Suppongo che se l'EC ha un cc postale debba impostare transferType a "POSTAL" nell'opzione di pagamento (o in più opzioni). A questo punto il nodo, che sa se sta rispondendo a Poste o ad un altro PSP perchè ha ricevuto una richiesta su verificaBollettino nel primo caso e una richiesta su verifyPaymentNotice nel secondo, può indicare nella response di verificaBollettino allCCP = true. Se invece sta rispondendo alla verificaPaymentNotice di un PSP diverso da Poste ignorerà il transferType. Però se il soggetto sta pagando in posta lo sta facendo perchè ha in mano un avviso postale in quanto l'EC ha deciso che il pagamento può essere fatto anche in posta e ha censito in pagoPA un cc postale, quindi l'indicazione fornita a Poste mi sembra inutile, nel senso che se l'EC non vuole consentire il pagamento in Posta basta che non produca l'avviso postale. @CandeAnn, infatti il significato del transferType nella request della paGetPayment mi sembrava abbastanza chiaro: il nodo comunica all'EC che il pagamento è stato richiesto da un ufficio postale e quindi dovrà fornire l'IBAN di un cc postale su cui incassare.

Con i pagamenti multi ente in realtà le cose forse sono un pò più complicate. Infatti in tale caso l'EC potrebbe anche non essere Beneficiario di una parte del pagamento e in generale posso avere voci di pagamento destinate a Beneficiari diversi dall'EC. Il ragionamento fatto sopra potrebbe comunque essere corretto anche per i pagamenti multi-ente, se la paVerifyPaymentNotice deve agire sempre solo in funzione della disponibilità di un cc postale per l'EC (anche nel caso estremo in cui solo gestisca il pagamento per conto di uno o più enti senza risultare beneficiario). Cioè se il pagamento deve transitare comunque per il cc postale dell'EC. In tal caso l'IBAN da inserire nella paGetPayment presumo verrà stabilito da ogni Beneficiario tramite accordi preventivi con l'EC e non dipende dal valore di transferType ricevuto dal nodo. Ad es una Provincia dice ai suoi comuni di fare pagare la TEFA su uno specifico IBAN. Ma, vista la mia ignoranza in materie bancarie, non so se tutto ciò sia vero :)

gammam commented 3 years ago

A seguito di ulteriori approfondimenti ci sembra evidente che la definizione del campo transferType ( presente sia all’interno della paVerifyPaymentNotice che nella paGetPayment) genera confusione, pertanto si propone una diversa nomenclatura (già pubblicata all'interno del devPortal ) per il parametro all’interno della paVerifyPayment in modo che sia più “parlante” rispetto alla risposta alla verificaBollettino. Utilizzeremo quindi allCCP all’interno della paVerifyPaymentNotice.

Semantica dei campi:

allCCP : allCPP all’interno della paVerifyPaymentNotice indica la presenza all’interno dell’avviso di un bollettino postale e contemporaneamente la possibilità di accreditare le somme , per tutti i riversamenti , all’interno di conti correnti postali (CCP). Tale informazioni è indifferente per un qualsiasi PSP mentre viene mostrata esclusivamente al PSP Poste Italiane.

transferType=POSTAL : l’indicazione di tale opzione da parte del nodo verso l’EC indica la necessità di rispondere con un pagamento in cui siano presenti tutti i possibili conti correnti postali per il tributo. In particolare i conti correnti intestati all’EC primario dovranno obbligatoriamente essere uguali al conto corrente postale riportato all’interno dell’avviso. Non vi sono vincoli sugli EC secondari.