public XmlDocument PosaljiRacun(Schema.RacunType racun, string certificateSubject, DateTime datumVrijeme) { XmlDocument racunOdgovor = null; Schema.RacunZahtjev zahtjev = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun, datumVrijeme); XmlDocument zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev); PosaljiZahtjev(certificateSubject, ref racunOdgovor, zahtjevXml); return(racunOdgovor); }
public XmlDocument PosaljiRacun(Schema.RacunType racun, string certificateSubject, StoreLocation storeLocation, StoreName storeName) { XmlDocument racunOdgovor = null; Schema.RacunZahtjev zahtjev = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun); XmlDocument zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev); PosaljiZahtjev(certificateSubject, storeLocation, storeName, ref racunOdgovor, zahtjevXml); return(racunOdgovor); }
public XmlDocument PosaljiRacun(Schema.RacunType racun, X509Certificate2 certifikat) { XmlDocument racunOdgovor = null; Schema.RacunZahtjev zahtjev = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun); XmlDocument zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev); PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(zahtjevXml, certifikat); PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref zahtjevXml); racunOdgovor = SendSoapMessage(zahtjevXml); return(racunOdgovor); }
public static Schema.RacunZahtjev KreirajRacunZahtjev(Schema.RacunType racun, DateTime datumVrijeme) { Schema.RacunZahtjev zahtjev = new Schema.RacunZahtjev() { Id = "signXmlId", Racun = racun }; Schema.ZaglavljeType zaglavlje = new Schema.ZaglavljeType() { DatumVrijeme = Razno.FormatirajDatumVrijeme(datumVrijeme), IdPoruke = Guid.NewGuid().ToString() }; zahtjev.Zaglavlje = zaglavlje; return(zahtjev); }
public static Schema.RacunZahtjev KreirajRacunZahtjev(string ID, Schema.RacunType racun) { Schema.RacunZahtjev zahtjev = new Schema.RacunZahtjev() { Id = ID, Racun = racun }; Schema.ZaglavljeType zaglavlje = new Schema.ZaglavljeType() { DatumVrijeme = Razno.DohvatiFormatiranoTrenutnoDatumVrijeme(), IdPoruke = Guid.NewGuid().ToString() }; zahtjev.Zaglavlje = zaglavlje; return(zahtjev); }
private void SnimiDokumentUDatoteku(string oib) { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(oib); Schema.RacunZahtjev zahtjev = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun); XmlDocument zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev); PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(zahtjevXml, PopratneFunkcije.Potpisivanje.DohvatiCertifikat("FISKAL 1")); PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref zahtjevXml); Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.SnimiXmlDokumentDatoteka(zahtjevXml, @"D:\Users\Nino\Desktop\Zahtjev.xml"); XmlDocument doc = cis.PosaljiSoapPoruku(zahtjevXml); Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.SnimiXmlDokumentDatoteka(doc, @"D:\Users\Nino\Desktop\Odgovor.xml"); }
/// <summary> /// Koristi se za serijalizaciju XML-a zahtjeva.</summary> /// <param name="racunZahtjev">Objekt tipa Schema.RacunZahtjev koji sadrži RacunZahtjev.</param> /// <example> /// Schema.RacunZahtjev zahtjev = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun); /// XmlDocument zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev); /// </example> /// <returns> /// Vraća XmlDocument koji sadrži XML zahtjeva. U slučaju greške vraća null.</returns> public static XmlDocument SerijalizirajRacunZahtjev(Schema.RacunZahtjev racunZahtjev) { string xml = ""; try { xml = racunZahtjev.Serialize(); xml = xml.Replace("<tns:Pdv />", ""); xml = xml.Replace("<tns:Pnp />", ""); xml = xml.Replace("<tns:OstaliPor />", ""); xml = xml.Replace("<tns:Naknade />", ""); //xml = xml.Replace(@"Id=""signXmlId""", @"Id=""racunId"" xsi:schemaLocation=""http://www.apis-it.hr/fin/2012/types/f73 ../schema/FiskalizacijaSchema.xsd"""); } catch (Exception ex) { Trace.WriteLine(String.Format("Greška kod serijalizacije zahtjeva za račun: {0}", ex.Message)); throw; } XmlDocument doc = UcitajXml(xml); return(doc); }
private void CertifikatDatoteka(string oib) { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(oib); X509Certificate2 cert = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(@"D:\Users\Nino\Desktop\Fiskalizacija\MojCert.pfx", "PASSWORD"); if (cert != null) { // varijanta 1 XmlDocument odgovor = cis.PosaljiRacun(racun, cert); // varijanta 2 Schema.RacunZahtjev zahtjev = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun); XmlDocument zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev); PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(zahtjevXml, cert); PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref zahtjevXml); XmlDocument doc = cis.PosaljiSoapPoruku(zahtjevXml); } }
private void btnStartTest_Click(object sender, EventArgs e) { txtLog.Text = ""; if (CheckCertificate()) { if (CheckOib()) { if (CheckSsl()) { Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(certifikat); if (racun != null) { progressBar1.Maximum = iterations * 3; btnStartTest.Enabled = false; stopWatch.Reset(); RefreshLog("ECHO test počinje..."); stopWatch.Start(); Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); for (int i = 0; i < iterations; i++) { cis.Echo(); Application.DoEvents(); progressBar1.PerformStep(); } stopWatch.Stop(); echo = stopWatch.Elapsed.TotalSeconds; RefreshLog(String.Format("ECHO test završen. Vrijeme: {0:n4}. Prosjek: {1:n4}", echo, echo / iterations)); RefreshLog(""); RefreshLog("Račun test počinje..."); RefreshLog("Kreiranje i potpisivanje računa..."); SortedList <int, XmlDocument> sl = new SortedList <int, XmlDocument>(); stopWatch.Reset(); stopWatch.Start(); for (int i = 0; i < iterations; i++) { Schema.RacunZahtjev zahtjev = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun); XmlDocument zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev); PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(zahtjevXml, certifikat); PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref zahtjevXml); sl.Add(i, zahtjevXml); Application.DoEvents(); progressBar1.PerformStep(); } stopWatch.Stop(); potpis = stopWatch.Elapsed.TotalSeconds; RefreshLog(String.Format("Kreiranje i potpisivanje završeno. Vrijeme: {0:n4}. Prosjek: {1:n4}", potpis, potpis / iterations)); RefreshLog(""); RefreshLog("Slanje računa..."); stopWatch.Reset(); stopWatch.Start(); foreach (XmlDocument item in sl.Values) { cis.PosaljiSoapPoruku(item); Application.DoEvents(); progressBar1.PerformStep(); } stopWatch.Stop(); slanje = stopWatch.Elapsed.TotalSeconds; RefreshLog(String.Format("Slanje računa završeno. Vrijeme: {0:n4}. Prosjek: {1:n4}", slanje, slanje / iterations)); RefreshLog(""); RefreshLog(String.Format("Račun test završen. Vrijeme: {0:n4}. Prosjek: {1:n4}", potpis + slanje, (potpis + slanje) / iterations)); btnStartTest.Enabled = true; testFinished = true; } else { MessageBox.Show("Greška kod kreiranja test računa."); } } else { MessageBox.Show("Nije moguće uspostaviti SSL vezu prema CIS-u. Provjerite da li su potrebni certifikati uredno instalirani."); DialogResult dire = MessageBox.Show("Želite li provjeriti status CIS-a?", "Status CIS-a", MessageBoxButtons.YesNo); if (dire == DialogResult.Yes) { MessageBox.Show(Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.DohvatiStatusCisServisa().ToString()); } } } else { MessageBox.Show("Greška kod dohvata OIB-a iz certifikata."); } } }