PARKING COLLECTOR Documento di analisi tecnica - Rev. 1.4 del 20/05/2019 - TPER

Pagina creata da Martina D'Agostino
 
CONTINUA A LEGGERE
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