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}"
}