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
editado
Hola, estoy intentando enviar mi set de pruebas de la DIAN en C# para lo cual primero quiero revisar mi xml por medio de SendBillSync, el SOAP que genero es el siguiente:

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">

  <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

    <wsse:Security xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://www.w3.org/2003/05/soap-envelope">

      <wsu:Timestamp Id="id-wsu-timestamp" xmlns:wsu="http://www.w3.org/2003/05/soap-envelope">

        <wsu:Created>2020-04-27T16:43:35.888Z</wsu:Created>

        <wsu:Expires>2020-04-28T16:43:35.888Z</wsu:Expires>

      </wsu:Timestamp>

      <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binaryp" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3">MIIHhTCC...</wsse:BinarySecurityToken>

      <ds:Signature>

        <ds:SignedInfo>

          <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

          <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />

          <ds:Reference URI="#id-wsaTo">

            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />

            <ds:DigestValue>WIIZMq6Bs3JXN3FMW8TIAgmTvM8ABmeoDtQL5d69Bv4=</ds:DigestValue>

          </ds:Reference>

        </ds:SignedInfo>

        <ds:SignatureValue>r/E7mptOZU9Q0kbEnjaraqbpCiWdfx++TWP1Y5qZT9fpYYWJOi7RpLYBv2hqCKTDz4n72yxnJERLKAxGjolsfWVQx/xfvQAznBDnnrlFylczSurK+fXMw1NeMpQIMfkrMKTd1C1j5GLMse/O/F93Y6XEmgauiwUoyXW5KHsJKsUdDo0Xc1ay9Lp1lkuhCHSybEz+TSy0KQh2Hb9CuullI3bQkRa0br4p/9jkeGRDnxjUdoR9X6000ATVd6NCbtPmrccItZ7Y1ualXPfRyb5tvHpsAi6wvj6Cp362/4PE83gnadYZSI/A5/88hXq9LbZGe42u4QPPNmD9QAolgnZxrg==</ds:SignatureValue>

        <ds:KeyInfo Id="key-info-id">

          <wsse:SecurityTokenReference xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

            <wsse:Reference URI="#SecurityTest" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />

          </wsse:SecurityTokenReference>

        </ds:KeyInfo>

      </ds:Signature>

    </wsse:Security>

    <wsa:Action>http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync</wsa:Action>

    <wsa:To Id="id-wsaTo" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2003/05/soap-envelope">https://vpfe-hab.dian.gov.co/WcfDianCustomerServices.svc</wsa:To>

  </soap:Header>

  <soap:Body>

    <wcf:SendBillSync>

      <wcf:fileName>ws_f0901050848003b023380</wcf:fileName>

      <wcf:contentFile>UEsDBBQ...</wcf:contentFile>

    </wcf:SendBillSync>

  </soap:Body>

</soap:Envelope>

Me sale el error 89 "Data at the root level is invalid. Line 1 position 1" antes me salía error 500 "Ha ocurrido un error. Intente de nuevo" y llamé a la DIAN pero ahora me sale ese error. No puedo comprobar con SOAPUI porque mi certificado digital es en USB y no es exportable. He revisado el root tanto del SOAP como el de mi factura y siempre es correcto, incluso cuando lo leo desde mi programa lee sin problema y no me bota ese error. Cuando lo envío por el set de pruebas y busco el GetZipStatus me sale ex "Error al validar el batch". Muchas gracias

EDIT: Logré resolver el problema, el Error 500 es un error de estructura del XML, por lo cual revisé todos los nodos y corregí el problema. En el caso del error 89 resulta que en C# al darle guardar el documento xml como doc.Save(ruta) se guardaba con el caracter BOM, el cual no se ve pero no permite a la DIAN abrir y procesar el documento. Para corregir esto lo hice con el siguiente código:

 XmlWriterSettings settings = new XmlWriterSettings();

                settings.Encoding = new UTF8Encoding(false);

                using (XmlWriter writer = XmlWriter.Create(destino, settings))

                {

                    xmlDoc.Save(writer);

                }

1 Respuesta

0 votos
por
Creo que aparte del BOM que mencionas, tienes algun otro problema al armar el Request.

Deber ponernos el Request completo (con cabeceras), pero subelo a pastebin
...