Transakcija

Opis

WSP WebApi ima samo jednu Post metodu Transakcija.

        
        [HttpPost]
        public TransakcijaOut ([FromBody] TransakcijaIn  transakcijaIn)                  
        
    

Ulazni podaci se šalju u telu POST zahteva. Svi podaci koje korisnik šalje pakuju se u objekat TransakcijaIn, a WSP WebAPI kao rezultat vraća objekat TransakcijaOut.

Ulazni podaci

        
        public class TransakcijaIn
        {
            public string StrKlijent;
            public int Servis;
            public int IdVrstaTransakcije;
            public int TipSerijalizacije;
            Guid IdTransakcija;
            string StrIn;
        }  
        
    

Opis ulaznih podataka

Naziv Tip Opis
StrKlijent string StrKlijent je JSON serijalizovani objekat klase Klijent, koji opisuje korisnika i uređaj sa koga se radi poziv metode.
Servis int Kao vrednost se šalje vrednost 101 (sto jedan).
IdVrstaTransakcije int IdVrstaTransakcije je identifikator vrste transakcije čije se vrednosti nalaze u enumeraciji IdVrstaTransakcije.
TipSerijalizacije int Šalje se vrednost 2 (dva).
IdTransakcija Guid IdTransakcija je jedinstveni identifikator konkretne transakcije. U pitanju guid koji generiše klijentska aplikacija. Zahvaljujući njemu moguće je ponoviti transakciju ukoliko je došlo do tehničkih problema (timeout, nedostupnost baze i slično). U slučaju pretraga ovaj podatak nije obavezan.
StrIn string StrIn je JSON serijalizovani objekat sa ulaznim podacima, koji zavisi od vrste transakcije.

Izlazni podaci

        
        
        public class  TransakcijaOut
        {
            public int Rezultat;
            public string StrOut;
            public string StrRezultat
        }
        
    

Opis izlaznih podataka

Naziv Tip Opis
Rezultat int Rezultat (int polje klase Rezultat) može da ima jednu od sledećih vrednosti:
  • 0 – uspešno
  • 1 – neuspešno iz poslovnih razloga, npr. masa veća od dozvoljene
  • 2 – nepoznato, npr. timeout
  • 3 – neuspešno iz tehničkih razloga, npr. nije uspela konekcija na neku od internih baza
StrOut string JSON serijalizovani objekat sa izlaznim podacima, zavisi od vrste transakcije.
StrRezultat string JSON serijalizovani objekat klase Rezultat, koji detaljnije opisuje rezultat transakcije.

Klasa: Klijent

    
        public class Klijent
        {
            public string Username; 
            public string Password; 
            public string Jezik;    
            public int IdTipUredjaja;
            public string NazivUredjaja;
            public string ModelUredjaja;
            public string VerzijaOS;
            public string VerzijaAplikacije;
            public string IPAdresa;
            public string Geolokacija;
            public string Referenca;
        }
    
    

Opis klase Klijent

Naziv Tip Opis
Username string Username zavisi od korisnika servisa, a definiše se prilikom registracije. Dostavlja se van osnovnog uputstva.
Password string Password zavisi od korisnika servisa, a definiše se prilikom registracije. Dostavlja se van osnovnog uputstva.
Jezik string Jezik može da bude CIR, LAT ili ENG, tj. srpska ćirilica, srpska latinica ili engleski. Jezik se odnosi na način prikaza izlaznih podataka, npr teksta statusa, poruke greške i slično.
IdTipUredjaja int Šalje se jedna od vrednosti iz enumeracije TipUredjaja.
NazivUredjaja string Naziv uređaja, max 50 karaktera; poželjan podatak, ali nije obavezan.
ModelUredjaja string Model uređaja, npr. Samsung Galaxy Tab 4, max 50 karaktera; poželjan podatak, ali nije obavezan.
VerzijaOS string Verzija OS npr. Android 5.1 ili u nekom drugom obliku, max 50 karaktera; poželjan podatak, ali nije obavezan.
VerzijaAplikacije string Verzija aplikacije, max 50 karaktera; poželjan podatak, ali nije obavezan.
IPAdresa string IP adresa, max 50 karaktera; poželjan podatak, ali nije obavezan.
Geolokacija string Geolokacija treba da bude u obliku stringa, max 50 karaktera; poželjan podatak, ali nije obavezan.
Referenca string Referenca treba da bude u obliku stringa, podatak nije obavezan.

Enum: TipUredjaja

        
        public enum TipUredjaja
        {                            
            Racunar = 1,
            Server = 2,
            Telefon = 3,
            Tablet = 4                 
        }
        
    

Enum: IdVrstaTransakcije

        
        public enum IdVrstaTransakcije
        {
            GetNaselje = 3,
            GetUlica = 4,
            ProveraAdrese = 6,
            ProveraDostupnostiUsluge = 9,
            PostarinaPosiljke = 11,
            TTKretanjaUsluge = 63,
            TTPosiljkeStatusi = 64,        
        }
        
    

Klasa: Rezultat

    
        public class Rezultat
        {
            public string Poruka; 
            public string PorukaKorisnik; 
            public string Info        
        }
    
    

Opis klase Rezultat

Naziv Tip Opis
Poruka string Poruka sadrži stvarni razlog zašto transakcija nije uspela.
PorukaKorisnik string PorukaKorisnik sadrži poruku koju treba prikazati krajnjem korisniku.
Info string Info sadrži dodatnu informaciju koja zavisi od vrste transakcije i dogovora programera eksterne aplikacije i programera koji realizuje transakciju u Poštinim internim bazama, npr. može da predstavlja neki kod koji detaljnije specificira grešku.

Primeri

Primer 1 - Rezultat = 0 - uspešno (transakcija PostarinaPosiljke)

JSON string za serijalizovani objekat klase PostarinaPosiljkeIn
           
{
"StrKlijent":"{\"Username\":\"TEST\",\"Password\":\"t3st\",\"Jezik\":\"LAT\",\"IdTipUredjaja\":11,\"NazivUredjaja\":\"BG01022W030\",\"ModelUredjaja\":\"ASUS_M11\",\"VerzijaOS\":\"Microsoft Windows NT 6.2.9200.0\",\"VerzijaAplikacije\":\"1.0.0.0\",\"IPAdresa\":\"10.200.17.21\",\"Geolokacija\":null,\"Referenca\":\"1\"}",
"Servis": 101,
"IdVrstaTranskacije": 11,
"TipSerijalizacije": 2,
"IdTransakcija": "e64b381e-7b32-4629-b227-bfaa88b8660e",
"StrIn": "{\"IdRukovanje\":\"58\", \"IdZemlja\":\"0\",\"Masa\":\"200\",\"Vrednost\":\"0\",\"Otkupnina\":\"0\",\"VrstaOtkupnogDokumenta\":\"\",\"PosebneUsluge\":\"\",\"IdPeBoxTip\":\"0\"}"
}          
JSON string za serijalizovani objekat klase PostarinaPosiljkeOut
           
{
"Rezultat": 0,
"StrOut": "{\"Iznos\":20000,\"CenovniStavovi\":[{\"Naziv\":\"Po masi:\",\"Iznos\":20000}],\"Napomene\":[\"Popusti na količinu:\\r\\n\\r\\nPrijem više od 250 pošiljaka mesečno: -2.5% na ukupnu cenu.\\r\\nPrijem više od 500 pošiljaka mesečno: -5% na ukupnu cenu.\\r\\nPrijem više od 1,000 pošiljaka mesečno: -10% na ukupnu cenu.\\r\\nPrijem više od 2,500 pošiljaka mesečno: -15% na ukupnu cenu.\\r\\nPrijem više od 10,000 pošiljaka mesečno: -20% na ukupnu cenu.\\r\\nPrijem više od 30,000 pošiljaka mesečno: -25% na ukupnu cenu.\\r\\nPrijem više od 45,000 pošiljaka mesečno: -30% na ukupnu cenu.\\r\\n\"]}",
"StrRezultat": "{\"Poruka\":null,\"PorukaKorisnik\":null,\"Info\":null}"
}         

Primer 2 - Rezultat = 1 - neuspešno iz poslovnih razloga - nije poslat podatak o jeziku u okviru podataka o klijentu (transakcija PostarinaPosiljke)

JSON string za serijalizovani objekat klase PostarinaPosiljkeIn
           
{
"StrKlijent":"{\"Username\":\"TEST\",\"Password\":\"t3st\",\"Jezik\":\"\",\"IdTipUredjaja\":1,\"NazivUredjaja\":\"BG01022W030\",\"ModelUredjaja\":\"ASUS_M11\",\"VerzijaOS\":\"Microsoft Windows NT 6.2.9200.0\",\"VerzijaAplikacije\":\"1.0.0.0\",\"IPAdresa\":\"10.200.17.21\",\"Geolokacija\":null,\"Referenca\":\"1\"}",
"Servis": 101,
"IdVrstaTranskacije": 11,
"TipSerijalizacije": 2,
"IdTransakcija": "e64b381e-7b32-4629-b227-bfaa88b8660e",
"StrIn": "{\"IdRukovanje\":\"58\", \"IdZemlja\":\"0\",\"Masa\":\"200\",\"Vrednost\":\"0\",\"Otkupnina\":\"0\",\"VrstaOtkupnogDokumenta\":\"\",\"PosebneUsluge\":\"\",\"IdPeBoxTip\":\"0\"}"
}          
JSON string za serijalizovani objekat klase PostarinaPosiljkeOut
           
{
"Rezultat": 1,
"StrOut": null,
"StrRezultat": "{\"Poruka\":\"Column 'PREVOD_' does not belong to table Prevodi.\",\"PorukaKorisnik\":\"Column 'PREVOD_' does not belong to table Prevodi.\",\"Info\":null}"
}         

Primer 3 - Rezultat = 3 - neuspešno iz tehničkih razloga - nije poslat podatak IdTipUredjaja u okviru podataka o klijentu (transakcija PostarinaPosiljke)

JSON string za serijalizovani objekat klase PostarinaPosiljkeIn
           
{
"StrKlijent":"{\"Username\":\"TEST\",\"Password\":\"t3st\",\"Jezik\":\"LAT\",\"IdTipUredjaja\":,\"NazivUredjaja\":\"BG01022W030\",\"ModelUredjaja\":\"ASUS_M11\",\"VerzijaOS\":\"Microsoft Windows NT 6.2.9200.0\",\"VerzijaAplikacije\":\"1.0.0.0\",\"IPAdresa\":\"10.200.17.21\",\"Geolokacija\":null,\"Referenca\":\"1\"}",
"Servis": 101,
"IdVrstaTranskacije": 11,
"TipSerijalizacije": 2,
"IdTransakcija": "e64b381e-7b32-4629-b227-bfaa88b8660e",
"StrIn": "{\"IdRukovanje\":\"58\", \"IdZemlja\":\"0\",\"Masa\":\"200\",\"Vrednost\":\"0\",\"Otkupnina\":\"0\",\"VrstaOtkupnogDokumenta\":\"\",\"PosebneUsluge\":\"\",\"IdPeBoxTip\":\"0\"}"
}          
JSON string za serijalizovani objekat klase PostarinaPosiljkeOut
           
{
"Rezultat": 3,
"StrOut": null,
"StrRezultat": "{\"Poruka\":\"Unexpected character encountered while parsing value: ,. Path 'IdTipUredjaja', line 1, position 68.\",\"PorukaKorisnik\":\"Unexpected character encountered while parsing value: ,. Path 'IdTipUredjaja', line 1, position 68.\",\"Info\":null}"
}