PARKING COLLECTOR Documento di analisi tecnica - Rev. 1.4 del 20/05/2019 - TPER
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
PARKING COLLECTOR Documento di analisi tecnica Rev. 1.4 del 20/05/2019 Di seguito viene illustrate una breve guida per lo sviluppo del web service nell’ambito del progetto per la dematerializzazione dei pagamenti della sosta tariffata.
Sommario Premessa……………………………………………………...………………………......…..…….… 3 Terminologia……………………………………………………………...………………………..…...3 Descrizione………………………………………………………………………...……..………….....3 Arrotondamenti e tariffe minime …………………………………...………..……………...4 Inizio e fine Sosta.......................................………………………...............…......... 5 Operazione di inizio sosta ......................................………….…………............... 5 Operazione di Fine sosta ....................................………….…………................... 5 Modifica e/o cessazione abbonamento……………………….………….…………………..6 Agevolazione…………….........................................………….…………..................... 6 Rendicontazione..................................................………….…………................... 7 Ambiente di sviluppo e di produzione ...................………….…………................. 8 Aspetti relativi alla privacy ………….………….………….………….………….………….…… 8 Riservatezza dei dati, criticità e periodo di conservazione .…………….……….… 8 Indirizzo URL per genarazione WSDL………………………………..………………………… 9
Premessa Il nuovo sistema di pagamento ed acquisto della sosta prevede una pluralità di fornitori di servizi di pagamento online. Di seguito sono quindi definite le regole di scambio di informazioni tra il gestore dei parcheggi ed i fornitori dei servizi di pagamento. Cuore operativo del flusso di scambio sono i messaggi relativi alle operazioni di inizio e fine sosta. L’idea base è quella di avere sui server del gestore un database delle soste e delle movimentazioni economiche giornaliere, che il gestore potrà interrogare per sapere come le soste si stanno attivando o disattivando , in un tempo minimamente differito di 30”. L’azienda fornitrice del servizio deve implementare un servizio WS che esponga in modalità incrementale l’elenco delle operazioni riguardanti le soste effettuate e ricevute dal sistema del provider per permettere al gestore di ricostruire lo stato delle attivazioni e validità delle soste e degli eventuali abbonamenti. Terminologia TERMINE DESCRIZIONE Gestore della sosta Azienda che gestisce la sosta nella città: es. AMT per Verona Provider Azienda che offer servizi smart per la sosta Servizio WS Servizio Web Service esposto dal provider Descrizione Il WS espone le informazioni di “Inizio Sosta” e “Fine Sosta” nonché gli eventuali abbonamenti. Ogni operazione inerente la sosta è accompagnata da un “progressivo operazione” univoco che consente al gestore di interrogare i sistemi dei provider di sosta in modo incrementale; il servizio prevede infatti di restituire al massimo le X operazioni avvenute a partire dal progressivo fornito o a partire dalla data e ora desiderata. Ogni operazione è identificata anche da un “identificativo sosta” univoco nell’ambito dell’operazione di sosta (uguale per inizio e fine); le operazioni relative agli abbonamenti sono identificate da un “identificativo abbonamento” Il gestore quindi memorizzerà l’ultimo “progressivo operazione” restituito dal servizio WS e lo utilizzerà per interrogare e ricevere solo le operazioni effettuate successivamente utilizzando i parametri illustrati in Tabella 1.
Tabella 1 Campo Tipo/Lunghezza Descrizione codiceOperatore String*15 Utente e password devono essere forniti dal provider password String*15 Utente e password devono essere forniti dal provider dataInizio Date Se dataInizioSpecified= true viene inviata la data ed ora da cui è necessario ricevere i risultati fino al momento attuale progressivo Integer Progressivo operazione Per inviare i dati al gestore il WS espone il metodo “GetOperazioniSosta” che restituisce il tipo “OperazioniSostaResult ” composta dalle seguenti proprietà e metodi: Tabella 2 Campo Tipo Descrizione ElencoOperazioni Array[Object] InizioSosta[] , FineSosta[] , NuovoAbbonamento[],ModificaAbbonamento[],CessazioneA bbonamento[] DescrizioneEsito String Descrizione dell’errore o in caso di successo: Elaborazione terminata con successo Esito String Il gestore dopo aver letto l’esito dell’operazione (Esito, Descrizione esito) verifica tutti gli elementi contenuti in “ElencoOperazioni” ed effettua le registrazioni. Arrotondamenti e tariffe minime L'arrotondamento dell'importo pagato dall'utente è arrotondato al centesimo di Euro per quanto riguarda l'importo complessivo del pagamento di tutto il periodo di sosta di una singola transazione. Per il calcolo, se si ipotizza l'importo di 1,00 €/ora, occorre arrivare alla sesta cifra decimale (€ 0.016667 al minuto). L'importo minimo del pagamento per le tariffe frazionabili al minuto è di un minuto di sosta. Ad ogni sosta è associato ad un “Codice di Zona tariffaria” che corrisponde alle tariffe. L’algoritmo di calcolo deve tener conto della maggiore economicità per l’utente che effettua il pagamento, per cui effettuando una sosta di 1 ora e 12 min. ed applicando una tariffa di 1€/h il pagamento aspettato sarà di € 1,20.
Inizio e fine Sosta Le operazioni relative alla sosta si dividono in due momenti: 1) Inizio Sosta 2) Fine Sosta I due momenti sono riconducibili attraverso l’ “Identificativo sosta”. Il servizio server prima di comunicare un “Fine Sosta” deve aver inviato un “Inizio sosta”. Il campo “ProgressivoOperazione” deve essere incrementale senza salti di numerazione. Operazione di inizio sosta public string*10 Targa public Int32 ProgressivoOperazione (Identificativo univoco del record) public string*100 IdentificativoSosta (Identificativo univoco della sosta) public DateTime DataOraInizio public string*100 CodiceZonaTariffaria public string*255 DescrizioneZonaTariffaria Operazione di Fine sosta public string*10 Targa public Int32 ProgressivoOperazione (Identificativo univoco del record) public string*100 IdentificativoSosta (Identificativo univoco della sosta) public DateTime DataOra Di seguito alcuni esempi di ricevimento dati relativi alla sosta. In data 2014-04-26 alle ore 17:57:00 il gestore interroga il server pe ricevere i dati relativi alla sosta inviando l’ultimo “ProgressivoOperazione” e ricevendo le seguenti informazioni: Tabella 3 CodiceZona DataOra Descrizione IdentificativoSosta ProgressivoOperazione Targa Tariffaria Inizio ZonaTariffari 42 2014-04-26 ZONA 01 - € 34122 5425677 AA111AA 17:57:00.000 1,00/h 08:00 19:00 Lun- Sab Alle ore 18:00 il gestore effettua un’altra interrogazione per la ricezione dei dati; in questo caso il server invia la chiusura della sosta (fineSosta Tabella 4) relativo alla targa indicata in Tabella 3, riconducibili attraverso l’identificativo sosta. Tabella 4 DataOra Identificativo ProgressivoOpera Targa Sosta zione 2014-04- 34122 7845219 AA111AA 26 18:01
Nuovo abbonamento Le operazioni relative ai nuovi abbonamenti riguardano esclusivamente l’attivazione di un nuovo abbonamento a tariffa agevolata con la relativa targa associata. Per modifiche degli abbonamenti in corso di validità o per cessazioni anticipate vedere il prossimo paragrafo. Operazione Nuovo Abbonamento Dati comuni public string*10 Targa public Int32 ProgressivoOperazione (Identificativo univoco del record) Dati specifici public string*100 IdentificativoAbbonamento (Identificativo univoco) public DateTime DataInizioValidita public DateTime DataFineValidita public DateTime DataOraEmissione public string*100 CodiceZonaTariffaria public string*255 DescrizioneZonaTariffaria public string*255 DescrizioneTipoAbbonamento public string*255 Categorie (eventuale uso futuro) Modifica e/o cessazione abbonamento Le operazioni permettono di aggiornare il ParkingCollector su eventuali modifiche o cessazioni anticipate di precedenti abbonamenti passati tramite la classe NuovoAbbonamento. La creazione di un’istanza dell’oggetto ModificaAbbonamento richiede tutte le informazioni già utilizzate per creare l’oggetto NuovoAbbonamento oltre all’informazione DataOraModifica; in questo modo è possibile aggiornare il ParkingCollector a fronte di qualunque modifica intervenuta sull’abbonamento (non solo sul cambio targa). La proprietà IdentificativoAbbonamento della classe ModificaAbbonamento dovrà naturalmente essere lo stesso dell’abbonamento di cui si vuole notificare la modifica, mentre la proprietà progressivoOperazione potrà essere valorizzato con valore univoco sequenziale come per tutte le altre operazioni oppure potrà essere valorizzato con il medesimo progressivoOperazione passato durante il primo invio dell’abbonamento in questione. Operazione Modifica Abbonamento Dati comuni public string*10 Targa public Int32 ProgressivoOperazione (Identificativo univoco del record) Dati specifici public string*100 IdentificativoAbbonamento (Identificativo univoco) public DateTime DataInizioValidita public DateTime DataFineValidita public DateTime DataOraEmissione public string*100 CodiceZonaTariffaria public string*255 DescrizioneZonaTariffaria public string*255 DescrizioneTipoAbbonamento public string*255 Categorie
La creazione di un’istanza dell’oggetto CessazioneAbbonamento richiede solo il campo IdentificativoAbbonamento e il campo DataOraCessazione; la proprietà IdentificativoAbbonamento della classe CessazioneAbbonamento dovrà naturalmente essere lo stesso dell’abbonamento di cui si vuole notificare la cessazione anticipata. Operazione Cessazione Abbonamento Dati comuni public string*10 Targa public Int32 ProgressivoOperazione (Identificativo univoco del record) Dati specifici public string*100 IdentificativoAbbonamento (Identificativo univoco) public DateTime DataOraCesssazione
Rendicontazione Il gestore utilizza il metodo “GetMovimentiGiorno” per interrogare il server e ricevere le operazioni di sosta relative al giorno indicato. L’interrogazione a regime viene effettuata una volta al giorno con lo scopo di ricevere la rendicontazione giornaliera. Le informazioni si riferiscono alla giornata indicata nel campo “DataOraEmissione” per la “tariffa agevolata” e per la “Sosta” nel campo DataOraFine. I parametri che il gestore invia al server utilizzando il metodo “GetMovimentiGiorno” sono: Tabella 5 Campo Tipo/Lunghezza Descrizione/note codiceOperatore String*15 Utente e password devono essere forniti dal provider password String*15 Utente e password devono essere forniti dal provider dataOra Date Data del giorno da elaborare Il metodo “GetMovimentiGiorno” restituisce il tipo “RendicontoImportiResult” composta dalle seguenti proprietà e metodi: Tabella 6 Campo Tipo Descrizione Movimenti Array[Object] MovimentoSosta[] , Movimento Abbo[] DescrizioneEsito String Descrizione dell’errore o in caso di successo: Elaborazione terminata con successo Esito String Restituisce false quando lato server sono stati I Movimenti si riferiscono alle operazioni di sosta ed acquisto di sosta a “tariffa agevolata”. Per la sosta vengono popolate le seguenti informazioni: Tabella 7 Campo Tipo Esempio Descrizione CodiceMovimento String*20] 2001/20170 Codice interno Azienda fornitrice. CodiceZonaTariffaria String*100 107 DataMovimento DateTime 2014-04-12 23:00:50.287 DataInizio DateTime 2014-04-12 18:12:00.000 DataFine DateTime 2014-04-12 23:00:00.000 DescrizioneZonaTariffari String*255 ZONA 02 - € 1,00/h a 08:00 23:00 Lun-Sab ImportoMovimento Real 4,00 IdentificativoSosta String*100 177817 TipoMovimento String*50 SOSTA Targa String*10 XX523XS
Per l’acquisto di sosta a “tariffa agevolata” vengono popolate le seguenti informazioni: Tabella 7 Campo Tipo Esempio Descrizione CodiceMovimento String*20 2001/20141 CodiceZonaTariffaria String*100 110 DataOraEmizzione DateTime 2014-04-12 17:24:07.287 DataInizioValidita DateTime 2014-04-01 00:00:00.000 DataFineValidita DateTime 2014-04-30 23:59:59.999 DescrizioneZonaTariffaria String*255 AGEVOLAZIONI ROMA ImportoMovimento Real 70,00 IdentificativoAbbonamento String*100 177737 TipoMovimento String*50 ABBONAMENTO Targa String*10 XX523XS DataOraEmissione DateTime 2014-04-12 17:24:07.000 DescrizioneTipoAbbonament String*255 Abbonamenti mensili o Ambiente di sviluppo e di produzione La fornitrice del servizio mette a disposizione del gesture un ambiente di test per le verifiche propedeutiche alla messa in produzione del servizio. Questo ambiente è speculare all’ambiente di produzione, per cui il fornitore deve fornire le interfacce utente necessarie per generare, lato utente, le operazioni di sosta e l’attivazione delle agevolazioni tariffarie oltre ai ws precedentemente descritti. Il file wsdl fonito per l’ambiente di “test” deve differire da quello rilasciato per l’ambiente di produzione nel solo “Binding”. Ultimate le verifiche il gesture comunica le anomalie riscontrate alla fornitrice o emette il nulla osta per l’attivazione del servizio in produzione. Aspetti relativi alla privacy Per il trattamento dei dati personali e relativamente al dato “TARGA” l’azienda fornitrice del servizio deve riferirsi al “CODICE IN MATERIA DI PROTEZIONE DEI DATI PERSONALI” “Decreto legislativo 30 giugno 2003, n. 196” e relativi provvedimenti. Riservatezza dei dati, criticità e periodo di conservazione I dati devono essere conservati per un periodo minimo di 5 anni.
URL per ricarvare il WSDL del servizio Di seguito l’url da cui ricavare il WSDL del servizio ParkingCollector, al rilascio di nuove feature l’url non cambierà, Bastarà rigenerare il WSDL. http://demo.brav.it/ParkingCollector/WS/ParkingCollectorWS.svc?singleWsdl Si ricorda che lo schema WSDL deve essere utilizzato per l’implementazione della componente server del servizio. Per la tecnologia .NET è possible utilizzare il commando wsdl.exe ( https://msdn.microsoft.com/it-it/library/7h3ystb6%28v=vs.90%29.aspx ) specificando il parametro /server che permette di generare le classi per l’implementazione del server del servizio.
Puoi anche leggere