Bienvenido a Facturas y Respuestas.

Esperamos que encuentre la respuesta a su pregunta. Y si no, puede formularla para que los expertos de la comunidad la respondan.

Preguntar

Este blog es creado y administrado por:

Copyright - 2020

0 votos
por en Preguntas Tecnicas

Cordial Saludo,

Estoy desarrollando en lenguaje c# el consumo del web services para acuse de recibo en la DIAN resolucion 085

Necesito ayuda de como debo enviar el parametro contenfile al metodo SendEventUpdateStatus del Web Services WcfDianCustomerServicesClient

La comunicacion con el web services esta bien porque si me funcionó el metodo GetStatus

El Error que me vota la DIAN es:

MIMEType del archivo inválido (text/xml)

Comparto codigo fuente

var apiUrl = "https://vpfe.dian.gov.co/WcfDianCustomerServices.svc";

var endpointAddress = new System.ServiceModel.EndpointAddress(new Uri(apiUrl));

var securityElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
securityElement.AllowInsecureTransport = false;
securityElement.EnableUnsecuredResponse = true;

securityElement.IncludeTimestamp = false;

const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
ServicePointManager.SecurityProtocol = Tls12;

byte[] rawCertificateData = File.ReadAllBytes(StrCertifi);
X509Certificate2 certificate = new X509Certificate2();
certificate.Import(rawCertificateData, StrClave, X509KeyStorageFlags.DefaultKeySet);

var certContentBase64 = Convert.ToBase64String(certificate.Export(X509ContentType.Cert));

WcfDianCustomerServicesClient client = new WcfDianCustomerServicesClient("WSHttpBinding_IWcfDianCustomerServices", endpointAddress);

client.ClientCredentials.UserName.UserName = StrSoftwareId;
client.ClientCredentials.UserName.Password = StrPassword;
client.ClientCredentials.ClientCertificate.Certificate = certificate;

String strXML = @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""no""?>

<ApplicationResponse xmlns=""urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2"" xmlns:cac=""urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"" xmlns:cbc=""urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"" xmlns:ds=""http://www.w3.org/2000/09/xmldsig#"" xmlns:ext=""urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"" xmlns:sts=""dian:gov:co:facturaelectronica:Structures-2-1"">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>

<cbc:UBLVersionID>UBL 2.1</cbc:UBLVersionID>
<cbc:CustomizationID>1</cbc:CustomizationID>
<cbc:ProfileID>DIAN 2.1</cbc:ProfileID>
<cbc:ProfileExecutionID>2</cbc:ProfileExecutionID>

<cbc:ID>0000000000025</cbc:ID>
<cbc:UUID schemeID=""2"" schemeName=""CUDE-SHA384"">" + strcufe + @"</cbc:UUID>
<cbc:IssueDate>"+ strfechaasunto + @"</cbc:IssueDate>
<cbc:IssueTime>"+ strhoraasunto + @"</cbc:IssueTime>

<cac:SenderParty>
<cac:PartyTaxScheme>
<cbc:RegistrationName>xxxxxxx</cbc:RegistrationName>
<cbc:CompanyID schemeAgencyID=""195"" schemeAgencyName=""CO, DIAN(Direccion de Impuestos y Aduanas Nacionales)"" schemeID=""6"" schemeName=""31"">12345</cbc:CompanyID>

<cac:TaxScheme>
<cbc:ID>01</cbc:ID>
<cbc:Name>IVA</cbc:Name>
</cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:SenderParty>

</ApplicationResponse>
";

 XmlDocument doc = new XmlDocument();
 doc.LoadXml(strXML);

 XmlWriterSettings settings = new XmlWriterSettings();
 settings.Indent = true;

// Save the document to a file and auto-indent the output.
 XmlWriter writer = XmlWriter.Create(@"C:\Temp\data.xml", settings);

doc.Save(writer);
writer.Close();

try
 {
 byte[] contentfile = File.ReadAllBytes(@"C:\Temp\data.xml");
 client.Open();

 DianResponse resp = client.SendEventUpdateStatus(contentfile);
 //DianResponse resp = client.GetStatus(strcufe);

 MessageBox.Show(resp.StatusMessage);

 client.Close();

}
catch (Exception Ex)
 {
 client.Close();
 if (Ex.InnerException != null)
 {
 if (Ex.InnerException.Message != null)
 {
 MessageBox.Show(Ex.InnerException.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
 return;
 }
 else
 {
 MessageBox.Show(Ex.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
 return;
 }
 }
else
 {
 MessageBox.Show(Ex.Message, "Error del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

}

1 Respuesta

0 votos
por
debes generar un zip y darle como entrada el xml del evento y pasarlo como byte() para el parametro del servicio: client.SendEventUpdateStatus(bytesZip)
por
Buen dia ya logre enviar el ZIP por el Web Services y tengo comunicacion con la DIAN.
Ahora tengo inconcenientes en la generacion del bloque <ds:Signature
...