/// <summary> /// Create EET xml /// </summary> /// <param name="data">body data</param> /// <param name="header">header data</param> /// <param name="control">control data - pkp and bkp</param> /// <param name="certificatePath">path to certificate</param> /// <param name="serviceNamespace">service namespace</param> /// <returns></returns> public string CreateXml(IEETData data, IEETHeader header, EETControl control, string serviceNamespace) { var trzba = new Trzba(Converters.HeaderConverter.Convert(header), Converters.DataConverter.Convert(data), Converters.ControlConverter.Convert(control)); XmlDocument doc = new XmlDocument(); MemoryStream ms = new MemoryStream(); new XmlSerializer(typeof(Trzba)).Serialize(ms, trzba); ms.Position = 0; using (StreamReader rd = new StreamReader(ms)) { doc.LoadXml(rd.ReadToEnd()); } XmlNode node = doc.SelectSingleNode("//*[local-name()='Trzba']"); XmlAttribute xa = doc.CreateAttribute("xmlns"); xa.Value = serviceNamespace; node.Attributes.Append(xa); var xmlRequest = node.OuterXml; return(SignMessage(xmlRequest, signatureManager.GetCertificate())); }
public IEETResponse SendRequest(IEETHeader header, IEETData data, string certificatePath = null, string certificatePassword = null) { certificatePath = certificatePath ?? ConfigurationManager.AppSettings["eet.net.certificatePath"]; certificatePassword = certificatePassword ?? ConfigurationManager.AppSettings["eet.net.certificatePass"]; var signatureManager = new EETSignature(certificatePath, certificatePassword); var xmlCreator = new XmlCreator(signatureManager); var request = new WebRequestProvider(); var serviceInfo = ServiceInfo.GetServiceInfo(); var pkp = signatureManager.CreatePKP(data); var bkp = signatureManager.CreateBKP(pkp); var control = new EETControl { PKP = new PkpElement { Text = new string[] { pkp } }, BKP = new BkpElement { Text = new string[] { bkp } } }; EETResponse eetResponse; try { var xml = xmlCreator.CreateXml(data, header, control, serviceInfo.ServiceNamespace); var response = request.CallWebService(ConfigurationManager.AppSettings["eet.net.url"], serviceInfo.Action, xml); eetResponse = new EETResponse { Response = response, Request = xml, BKP = bkp, PKP = pkp }; var confirm = response.XmlDeserializeFromString <EETResponseModel>(); if (confirm == null) { eetResponse.Message = "Nevalidní zpráva ze serveru"; eetResponse.HasError = true; } else { eetResponse.ResponseModel = confirm; if (confirm.Body.Odpoved.Chyba == null) { eetResponse.HasError = false; eetResponse.Fik = confirm.Body.Odpoved.Potvrzeni.fik; eetResponse.EETDate = confirm.Body.Odpoved.Hlavicka.dat_prij; eetResponse.Message = string.Format("FIK {0}, BKP {1}, PKP {2}", eetResponse.Fik, eetResponse.BKP, eetResponse.PKP); } else { eetResponse.HasError = true; eetResponse.Message = string.Format("{0} ({1})", confirm.Body.Odpoved.Chyba.Value, confirm.Body.Odpoved.Chyba.kod); } if (confirm.Body.Odpoved.Varovani != null) { eetResponse.Warning = string.Format("{0} ({1})", confirm.Body.Odpoved.Varovani.Value, confirm.Body.Odpoved.Varovani.kod_varov); } } } catch (WebException ex) { Trace.WriteLine(ex.ToString()); eetResponse = new EETResponse(); eetResponse.HasError = true; eetResponse.Message = "Nepodařilo se připojit k serveru"; } catch (Exception ex) { eetResponse = new EETResponse(); eetResponse.HasError = true; eetResponse.Message = "Chyba při zpracování odpovědi. " + ex.Message; } return(eetResponse); }