private IICType GetIICandIICSignature(RegisterInvoiceRequest invoiceRequest, X509Certificate2 certificate, string issuerTIN) { IICType iicType = null; if (invoiceRequest.Signature != null) { throw new Exception("Invoice already signed"); } if (invoiceRequest != null && invoiceRequest.Invoice.IIC == null && invoiceRequest.Invoice.IICSignature == null) { InvoiceType invoice = invoiceRequest.Invoice; IICGenerator iicTypeGenerator = new IICGenerator(certificate); IICConfig iicConfig = new IICConfig() { IssuerTIN = issuerTIN, DateTimeCreated = invoice.IssueDateTime.ToString(Fiscalization.DATE_FORMAT_LONG), InvoiceNumber = invoice.InvNum, BusinUnitCode = invoice.BusinUnitCode, TCRCode = invoice.TCRCode, SoftCode = invoice.SoftCode, TotalPrice = invoice.TotPrice.ToString() }; iicType = iicTypeGenerator.Generate(iicConfig); } return(iicType); }
public Task <RegisterInvoiceResponse> RegisterInvoiceAsync(RegisterInvoiceRequest request) { return(Task.Factory.FromAsync(BeginregisterInvoice, EndregisterInvoice, request, null)); }
public async Task <bool> CreateInvoiceAsync() { try { var request = new RegisterInvoiceRequest { RegisterInvoiceElem = new RegisterInvoiceType { TaxRegistrationNumber = "247609161", InvoiceNo = "FT 1/1", InvoiceDate = DateTime.Now, InvoiceType = InvoiceType.FT, InvoiceStatus = InvoiceStatus.N, Item = "227940032", //Final Customer: 999999990 Line = new RegisterInvoiceTypeLine[] { new RegisterInvoiceTypeLine { TaxExemptionReason = "M10", Tax = new Tax { TaxType = "IVA", TaxCountryRegion = "PT", TaxPercentage = 23 }, Item = 1 } }, DocumentTotals = new RegisterInvoiceTypeDocumentTotals { TaxPayable = 0, NetTotal = 1, GrossTotal = 1 } } }; //Certificado: string certificatePath = @"C:\projects\nsfw\Certificados\Teste\TesteWebServices.pfx"; string certificatePass = "******"; X509Certificate2 cert = new X509Certificate2(certificatePath, certificatePass, X509KeyStorageFlags.Exportable); var binding = new BasicHttpsBinding(); binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; var endpoint = new EndpointAddress(new Uri("https://servicos.portaldasfinancas.gov.pt:700/fews/faturas")); //PROD: https://servicos.portaldasfinancas.gov.pt:400/fews/faturas var channelFactory = new ChannelFactory <faturas>(binding, endpoint); channelFactory.Credentials.ClientCertificate.Certificate = cert; var serviceClient = channelFactory.CreateChannel(); var result = await serviceClient.RegisterInvoiceAsync(request); channelFactory.Close(); } catch (WebException webExeption) { if (webExeption.Status == WebExceptionStatus.ProtocolError) { WebResponse resp = webExeption.Response; StreamReader sr = new StreamReader(resp.GetResponseStream()); var msg = sr.ReadToEnd(); System.Diagnostics.Debug.WriteLine($">>>>>>>>>>>>> {msg} <<<<<<<<<<<<<<<<<<<"); } else { System.Diagnostics.Debug.WriteLine($">>>>>>>>>>>>> {webExeption.Message} <<<<<<<<<<<<<<<<<<<"); } throw; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine($">>>>>>>>>>>>> {ex.Message} <<<<<<<<<<<<<<<<< "); throw; } return(true); }