MAES.Fiskal2
1.1.47
dotnet add package MAES.Fiskal2 --version 1.1.47
NuGet\Install-Package MAES.Fiskal2 -Version 1.1.47
<PackageReference Include="MAES.Fiskal2" Version="1.1.47" />
<PackageVersion Include="MAES.Fiskal2" Version="1.1.47" />
<PackageReference Include="MAES.Fiskal2" />
paket add MAES.Fiskal2 --version 1.1.47
#r "nuget: MAES.Fiskal2, 1.1.47"
#:package MAES.Fiskal2@1.1.47
#addin nuget:?package=MAES.Fiskal2&version=1.1.47
#tool nuget:?package=MAES.Fiskal2&version=1.1.47
MAES.Fiskal2
MAES.Fiskal2 je C# biblioteka za rad s hrvatskim fiskalnim posrednicima. Omogućuje zajednički sloj za slanje, dohvat i obradu ulaznih i izlaznih e-računa preko različitih posrednika.
Što projekt radi
Biblioteka definira baznu klasu Posrednik i konkretne implementacije za najčešće hrvatske fiskalne posrednike.
Podržane operacije uključuju:
- dohvat ulaznih i izlaznih e-računa
- dohvat UBL/XML i PDF sadržaja računa
- evidentiranje UBL dokumenta
- evidentiranje uplate za izlazni račun
- odbijanje ulaznog računa
Osim toga, postoje i modeli ERacun, UlazniERacun i IzlazniERacun koji sadrže osnovne podatke o računu i pružaju jednostavne pomoćne metode za rad s njima.
Trenutno podržani posrednici
U Posrednici/ direktoriju nalaze se konkretne implementacije
| Značajka / posrednik | Super |
EPoslovanje |
Fina |
MER |
|---|---|---|---|---|
| Dohvat ulaznih računa | ✅ | ✅ | ❌ | ✅ |
| Dohvat izlaznih računa | ✅ | ✅ | ❌ | ✅ |
| Dohvat UBL sadržaja | ✅ | ✅ | ❌ | ✅ |
| Dohvat PDF sadržaja | ✅ | ✅ | ❌ | ❌ |
| Evidentiranje UBL dokumenta | ✅ | ✅ | ⚠️ | ✅ |
| Evidentiranje uplate | ✅ | ✅ | ❌ | ✅ |
| Odbijanje računa | ✅ | ✅ | ❌ | ✅ |
✅ Implementirano ⚠️ Nije testirano/Ne prolazi testove 🚧 WIP ❌ Posrednik ne podržava
Instalacija
Instalirajte paket iz NuGeta:
dotnet add package MAES.Fiskal2
Ili dodajte referencu direktno u .csproj:
<ItemGroup>
<PackageReference Include="MAES.Fiskal2" Version="*" />
</ItemGroup>
Inicijalizacija posrednika
using MAES.Fiskal2.Posrednici;
var super = new Super
{
IsDev = true,
BusinessGuid = "...",
Username = "...",
Password = "..."
};
var ePoslovanje = new EPoslovanje
{
IsDev = true,
ApiKey = "..."
};
var fina = new Fina
{
Certificate = ...
};
var mer = new MER
{
IsDev = true,
Username = "...",
Password = "...",
CompanyId = "...",
SoftwareId = "..."
};
Primjer korištenja posrednika
// dohvat ulaznih računa u razdoblju zadnjih mj. dana
var ulazniRacuni = posrednik.UlazniListAsync(DateTime.Now.AddMonths(-1), DateTime.Now);
if(ulazniRacuni.FirstOrDefault() is UlazniERacun ulazni)
{
// dohvat ubl stringa i pdf byteova
string ubl = await ulazni.DohvatiUBLAsync();
byte[] pdf = await ulazni.DohvatiPdfAsync();
// odbija ulazni račun
await ulazni.OdbijAsync(RazlogOdbijanja.Ostalo, "Račun odbijen radi necega");
}
// dohvat izlaznih računa u razdoblju zadnjih mj. dana
var izlazniRacuni = posrednik.IzlazniListAsync(DateTime.Now.AddMonths(-1), DateTime.Now);
if(izlazniRacuni.FirstOrDefault() is IzlazniERacun izlazni)
{
// dohvat ubl stringa i pdf byteova
string ubl = await izlazni.DohvatiUBLAsync();
byte[] pdf = await izlazni.DohvatiPdfAsync();
// evidentira uplatu za izlazni račun
await izlazni.EvidentirajUplatuAsync(DateTime.Now, 100, ERacunNacinPlacanja.TransakcijskimRacunom);
}
// evidentiranje računa
posrednik.EvidentirajUBLAsync(ubl);
Neki posrednici nemaju podržane sve metode, neki nemaju sve fieldove u modelima tipa UlazniERacun i sl. Mora se voditi računa o tome...
Dostupne metode
Svaka metoda ima na kraju CancellationToken kojeg je poželjno postaviti, ali se može izostaviti
Abstraktna klasa Posrednik nudi sljedeće metode:
Dohvat ulaznih e-računa
Task<IEnumerable<UlazniERacun>> UlazniListAsync(DateTime from, DateTime to)Dohvaća popis ulaznih računa u vremenskom rasponu
Task<string> UlazniUBLAsync(string id)Dohvaća XML/UBL sadržaj ulaznog računa
Task<byte[]> UlazniPdfAsync(string id)Dohvaća PDF sadržaj ulaznog računa
Dohvat izlaznih e-računa
Task<IEnumerable<IzlazniERacun>> IzlazniListAsync(DateTime from, DateTime to)Dohvaća popis izlaznih računa u vremenskom rasponu
Task<string> IzlazniUBLAsync(string id)Dohvaća XML/UBL sadržaj izlaznog računa
Task<byte[]> IzlazniPdfAsync(string id)Dohvaća PDF sadržaj izlaznog računa
Operacije na računima
Task EvidentirajUBLAsync(string ubl)Evidentira UBL dokument
Task EvidentirajUplatuAsync(string id, DateTime datum, double iznos, NacinPlacanja nacinPlacanja)Evidentira uplatu za izlazni račun
Task OdbijRacunAsync(string id, RazlogOdbijana razlog, string opis)Odbija ulazni eRačun
UlazniERacun i IzlazniERacun imaju na sebi metode koje su vezane za taj specifičan e-račun (tipa izlazni ima izlazni.EvidentirajUplatuAsync, i sl.)
Modeli i enum-ovi
ERacun– zajednička baza za sve računeUlazniERacun– ulazni račun s dodatnim statusom i metodama za odbijanjeIzlazniERacun– izlazni račun s dodatnim statusom i metodom za evidentiranje uplateERacunNacinPlacanja– načini plaćanjaUlazniERacunStatus/IzlazniERacunStatus– statusi računaRazlogOdbijanja– razlozi odbijanja ulaznog računa
Dodatne informacije
Spremanje posrednika u listu
Budući da sve konkretne implementacije nasljeđuju Posrednik, možete ih spremati u običan List<Posrednik>:
using MAES.Fiskal2;
using MAES.Fiskal2.Posrednici;
var posrednici = new List<Posrednik>
{
new Super
{
IsDev = true,
BusinessGuid = "BUSINESS_GUID",
Username = "USERNAME",
Password = "PASSWORD"
},
new EPoslovanje
{
IsDev = true,
ApiKey = "API_KEY"
}
};
foreach (var posrednik in posrednici)
{
Console.WriteLine(posrednik.GetType().Name);
}
Ovo je korisno ako želite voditi više konfiguracija posrednika u jednoj strukturi i pozivati iste metode nad njima kroz baznu klasu.
Serializacija u JSON
Biblioteka koristi System.Text.Json i baza Posrednik je označena sa JsonPolymorphic/JsonDerivedType, što znači da možete lako spremiti i učitati različite tipove posrednika u JSON.
using System.Text.Json;
using MAES.Fiskal2;
using MAES.Fiskal2.Posrednici;
var options = new JsonSerializerOptions
{
WriteIndented = true
};
var posrednici = new List<Posrednik>
{
new Super
{
IsDev = true,
BusinessGuid = "BUSINESS_GUID",
Username = "USERNAME",
Password = "PASSWORD"
}
};
string json = JsonSerializer.Serialize(posrednici, options);
File.WriteAllText("posrednici.json", json);
var loaded = JsonSerializer.Deserialize<List<Posrednik>>(json, options);
U izlaznom JSON-u bit će prisutan polje $type, pa se prilikom deserijalizacije zna točno koji konkretni tip posrednika treba vratiti.
Dodatne napomene
IsDevodređuje koristi li se razvojno ili produkcijsko okruženje.- Sve glavne metode podržavaju
CancellationTokenkao zadnji parametar. - Za
Finaje potreban X.509 certifikat, a podrška za dohvat računa i PDF-a nije dostupna. - Ako koristite
ERacunobjekte, možete direktno pozivatiDohvatiUBLAsync()iDohvatiPdfAsync()bez da svaki put ručno prolazite kroz posrednika.
Izgradnja i pakiranje
dotnet build MAES.Fiskal2.csproj --configuration Release
dotnet pack MAES.Fiskal2.csproj --configuration Release
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.ServiceModel.Duplex (>= 4.8.1)
- System.ServiceModel.Http (>= 4.8.1)
- System.ServiceModel.Primitives (>= 4.8.1)
- System.Text.Json (>= 10.0.10)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.47 | 124 | 7/19/2026 |
| 1.0.46 | 107 | 7/19/2026 |
| 1.0.45 | 104 | 7/19/2026 |
| 1.0.44 | 101 | 7/18/2026 |
| 1.0.43 | 112 | 7/16/2026 |
| 1.0.42 | 110 | 7/15/2026 |
| 1.0.41 | 102 | 7/15/2026 |
| 1.0.40 | 101 | 7/15/2026 |
| 1.0.39 | 97 | 7/15/2026 |
| 1.0.38 | 104 | 7/15/2026 |
| 1.0.37 | 101 | 7/15/2026 |
| 1.0.36 | 126 | 6/12/2026 |
| 0.4.35 | 108 | 6/12/2026 |
| 0.4.34 | 108 | 6/12/2026 |
| 0.4.33 | 108 | 6/10/2026 |
| 0.4.30 | 124 | 5/30/2026 |
| 0.3.13 | 121 | 5/27/2026 |
| 0.2.10 | 102 | 5/23/2026 |
| 0.2.9 | 112 | 5/23/2026 |
| 0.2.8 | 110 | 5/23/2026 |