Ошибка 500 при использовании веб-службы DIAN

Я пытаюсь воспользоваться услугой Диана для отправки электронных счетов, но я не получаю результаты, у меня есть этот формат отправки, но я не знаю, что не так или что отсутствует, так как день не предоставляет ресурсы для такой отправки

<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
            xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://wcf.dian.colombia/IWcfDianCustomerServices/SendTestSetAsync</a:Action>
    <a:MessageID>urn:uuid:14226806-c3f1-45b3-9a13-10c158c3bd8d</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <a:To s:mustUnderstand="1" u:Id="_1">https://thirdparty.com/service.svc</a:To>
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <u:Timestamp u:Id="_0">
        <u:Created>2019-11-22T15:37:11.881Z</u:Created>
        <u:Expires>2019-11-22T15:42:11.881Z</u:Expires>
      </u:Timestamp>
      <o:BinarySecurityToken u:Id="uuid-dfe0b318-1ab5-48da-9027-99c0b12890b1-1" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MIIE8jCCAtoCAQEwDQYJKoZIhvcNAQELBQAwPzELMAkGA1UEBhMCQ08xGTAXBgNVBAoMEFNFUlZJQ0FDSU5PUyBTQVMxFTATBgNVBAMMDFNFUlZJQ0FDSU5PUzAeFw0xOTExMDcxMzQ0MjdaFw0yMDExMDYxMzQ0MjdaMD8xCzAJBgNVBAYTAkNPMRkwFwYDVQQKDBBTRVJWSUNBQ0lOT1MgU0FTMRUwEwYDVQQDDAxTRVJWSUNBQ0lOT1MwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCiGna+OaFwgBvdJmPiENlo9V2zoHZ6w0Ef6CUyh1D9AYXUPSTK0R3XVtjR12ekdX34CIXl6sPTrEppovV6QwIec1Dnigs882LsH8pV/RfrGHxFc9AGeYi+4j3e63wDcFPyDLCQ+/xTB5jrSBWT2RJvf5+xNPQ3UDs5cn4shBAqHupGAedPuvVsPCIvPaIldxMKCRF0L5rBtOfwo0Fto/yY1Oo5jUbIRChtP49K1BpYd41lB81979/IKf0m9fipm/UMsJja6AN3n7BXF3hhx4qyAaymE+EhPmdru33HenAnQrbgND94rEz4GTofTTzVQrUiosbrCoEc+EN/t+uYiAHZ1ewxOGVpxRJVDTd/MWMdVf++9XOUxvxGQ3kIAkS4kvwG7K8Hzm6QqgvXY862ef8ELKnH3It4Dr2yxYL9/hPpol5qiDEonh/FHW6ReFTkdwsvZY+UY6pT8BQVjef/JN8V0dQNZvs8SsRYKnCxYcj9GJgAd064jx82up2L+2s6wN/GPJx2Uvar8B3n/CUnPblSh1aDeK40j45ngk2+FB4WYP/XLc9MF9C6zZL/NrXKDDkJW08pu4g8YHjJlN3+UqcCPg10vdBun9ftRDUI2EtgEsXkyc16Dh/+TO2ehS9qMqDwJ9DAAfYwkP7z7CheDe4sZIiaW4X8MoTpJEymlcBJlQIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQCcMxmiNOg1ZqQRh8hnH7lDHRTvB0iiblVZYQEJwS/bTUt1dUWEcgcfjWfBKYbrR2iXw9lqeSTuzeaPHMnELIbsc/HwAWH60MqklfIxPTFsBEZ11XivPc0QyNMfBFvgRNd/oNfFGe97B3mTfKf/GgSoPl0wogo48/Brm5Mt4jYZzHfErgJx4XTjBplWrJjLEahyIJwg1Y7hYqRfCKxJG8I4KHlPHfcIMy2CBMuNnONK1RtrTzE7XcaaQAUbkGWrcZKFxKVZr1SsjNftFnKWmnsM9K3ewK9Gv4dwC1tBrx+P/SxEOg06pQE1OqsHk6eQ3j7LN2YQABD0CFS2HlwqWn1jjfqqdGT253i0f+UMpcuWUUWjCIjkpVbdSW2x1zWd9D/AL8mpgV01QAb7XKBsVBPT2QkATuKShDGjyMMenOPcAhNy5Sjd++2tXrule1ol82hq/oDvM5oICjiUWCSy0Oxg1GQp46oocBPYX5HIsl5gFWF/gixvD+27G10ee/GO/EQ==</o:BinarySecurityToken>
      <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
          <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
          <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
          <Reference URI="">
            <Transforms>
              <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
            </Transforms>
            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <DigestValue>uWXmLWDM1caFTb5vDUF8RU5/Xr0=</DigestValue>
          </Reference>
        </SignedInfo>
        <SignatureValue>YM6RMVHf8DwocsQ36ebkgF3UaP8v1racbqzr5EQzUtxB8zXVhVYJTWEyKwrlGYBlIOla6hp2nfGSEt/5/ytpMAG1s/lFLFHzvI+ThmvL+Dsk3PqjOiPHTddguUyvlBBcfvWdknGwUE8HOfBvJ/2v1tYGBetv0noH42FqqMHjatIwzJiQ2gDrcY4RGova1KNHoa/YzFTNq/eM3kJkmJGI9uUt2rbUOhr7CGSYtuq5p88sW0BoXtXSikd7KmjhAtxzSdRxw7Jn+qz6s+W1xT9+qqelgiV6h3opvxCj660LeMEr6mKu+uivS3URKEPVz+z7ay5IkBxsawCwhgKUB2PcBQRcR27uBwmC3lbpnA6ouOe/pRBwaSXKvsc4U33LRL3JA6T9D9YAdSLMTXvg4uLXZtbItPrTe9lNcayA+C+IUpLbwW+jltmgy+hQ0oBtcvBpiZzZ7XCQUX/YowXovrFKO1ii4WWC4cyi0GcJ7LNM5wQm4BzjqmmeBPg=</SignatureValue>
        <KeyInfo>
          <o:SecurityTokenReference>
            <o:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#uuid-dfe0b318-1ab5-48da-9027-99c0b12890b1-1" />
          </o:SecurityTokenReference>
        </KeyInfo>
      </Signature>
    </o:Security>
  </s:Header>
  <s:Body>
      <!-- aqui en el contenido body va la accion, con un xml adjunto -->
  </s:Body>
</s:Envelope>

Кто-нибудь может мне помочь? Это мой код для отправки

        public string SendFacturaElectronicaSOAP1()
    {
        HttpClientHandler handler = new HttpClientHandler();
        HttpClient Client = new HttpClient(handler);
        Uri uri = new Uri("https://vpfe-hab.dian.gov.co/WcfDianCustomerServices.svc");
        string rutaCer = $@"{Application.StartupPath}\Certificado.p12";
        X509Certificate2 MontCertificat2 = new X509Certificate2(Tools.ConvertirCertificadoEnBytes(rutaCer), "Certificado123.");
        System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
        var envelope = BuildEnvelope(MontCertificat2);
        string res = string.Empty;

        using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, uri))
        {
            request.Content = new StringContent(envelope, Encoding.UTF8, "application/soap+xml");
            using (HttpResponseMessage response = Client.SendAsync(request).Result)
            {
                res = $"Resultado: {response.ToString()}";
                if (response.IsSuccessStatusCode)
                {
                    response.Content.ReadAsStringAsync().ContinueWith(task =>
                    {
                        string thirdparty_envelope = task.Result;
                        XElement thirdparty_root = XElement.Parse(thirdparty_envelope);
                        // etc
                    }, TaskContinuationOptions.ExecuteSynchronously);
                }
            }
        }

        return res;
    }

Метод BuilEnvelope

        private string BuildEnvelope(X509Certificate2 certificate)
    {
        string envelope = null;
        // note - lots of bits here specific to my thirdparty
        string cert_id = string.Format("uuid-{0}-1", Guid.NewGuid().ToString());
        using (var stream = new MemoryStream())
        {
            Encoding utf8 = new UTF8Encoding(false); // omit BOM
            using (var writer = new XmlTextWriter(stream, utf8))
            {
                // timestamp
                DateTime dt = DateTime.UtcNow;
                string now = dt.ToString("o").Substring(0, 23) + "Z";
                string plus5 = dt.AddMinutes(5).ToString("o").Substring(0, 23) + "Z";

                // soap envelope
                // <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                writer.WriteStartDocument();
                writer.WriteStartElement("s", "Envelope", "http://www.w3.org/2003/05/soap-envelope");
                writer.WriteAttributeString("xmlns", "a", null, "http://www.w3.org/2005/08/addressing");
                writer.WriteAttributeString("xmlns", "u", null, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");

                writer.WriteStartElement("s", "Header", null);

                /////////////////
                //  saml guts  //
                /////////////////

                //<a:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</a:Action>
                writer.WriteStartElement("a", "Action", null);
                writer.WriteAttributeString("s", "mustUnderstand", null, "1");
                writer.WriteString("http://wcf.dian.colombia/IWcfDianCustomerServices/SendTestSetAsync");
                writer.WriteEndElement(); //Action

                //<a:MessageID>urn:uuid:0cc426dd-35bf-4c8b-a737-7e2ae94bd44d</a:MessageID>
                string msg_id = string.Format("urn:uuid:{0}", Guid.NewGuid().ToString());
                writer.WriteStartElement("a", "MessageID", null);
                writer.WriteString(msg_id);
                writer.WriteEndElement(); //MessageID

                //<a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo>
                writer.WriteStartElement("a", "ReplyTo", null);
                writer.WriteStartElement("a", "Address", null);
                writer.WriteString("http://www.w3.org/2005/08/addressing/anonymous");
                writer.WriteEndElement(); //Address
                writer.WriteEndElement(); //ReplyTo

                writer.WriteStartElement("a", "To", "http://www.w3.org/2005/08/addressing");
                writer.WriteAttributeString("s", "mustUnderstand", null, "1");
                writer.WriteAttributeString("u", "Id", null, "_1");
                writer.WriteString("https://thirdparty.com/service.svc");
                writer.WriteEndElement(); //To

                //<o:Security xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" s:mustUnderstand="1">
                writer.WriteStartElement("o", "Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
                writer.WriteAttributeString("s", "mustUnderstand", null, "1");

                //<u:Timestamp u:Id="_0">
                writer.WriteStartElement("u", "Timestamp", null);
                writer.WriteAttributeString("u", "Id", null, "_0");

                //<u:Created>2018-02-08T15:03:13.115Z</u:Created>
                writer.WriteElementString("u", "Created", null, now);

                //<u:Expires>2018-02-08T15:08:13.115Z</u:Expires>
                writer.WriteElementString("u", "Expires", null, plus5);

                writer.WriteEndElement(); //Timestamp

                writer.WriteStartElement("o", "BinarySecurityToken", null);
                writer.WriteAttributeString("u", "Id", null, cert_id);
                writer.WriteAttributeString("ValueType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3");
                writer.WriteAttributeString("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary");
                byte[] rawData = certificate.GetRawCertData();
                writer.WriteBase64(rawData, 0, rawData.Length);
                writer.WriteEndElement(); //BinarySecurityToken

                writer.WriteEndElement(); //Security
                writer.WriteEndElement(); //Header

                //<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                writer.WriteStartElement("s", "Body", "http://www.w3.org/2003/05/soap-envelope");
                writer.WriteAttributeString("xmlns", "xsd", null, "http://www.w3.org/2001/XMLSchema");
                writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");

                // your 3rd-party soap payload goes here
                //writer.WriteStartElement("Signature", "http://docs.oasis-open.org/ws-sx/ws-trust/200512");
                //writer.WriteAttributeString("xmlns", "ds", null, "http://www.w3.org/2000/09/xmldsig#");
                //writer.WriteAttributeString("", "Id", null, "Signature-1");

                // ...                
                //writer.WriteEndElement(); // 
                writer.WriteEndElement(); // Body

                writer.WriteEndElement(); //Envelope
            }

            // signing 
            var signable = Encoding.UTF8.GetString(stream.ToArray());
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(signable);
            XmlDocument newDoc =  SignXmlFile(signable, "Signature", certificate, cert_id);

            envelope = newDoc.OuterXml;
        }

        return envelope;
    }

Поставщик веб-услуг не отвечает на электронные письма или телефоны, поэтому пользоваться такими услугами очень сложно. Сообщение об ошибке, которое я мог видеть с Fiddler: «Произошла ошибка при проверке безопасности для сообщения. Уточняю, данные Запроса на безопасность не являются настоящими для данной публикации, они являются доказательством. Я новичок в этом сервисе SOAP wsdl, я немного растерялся в некоторых понятиях, тег Body оставлен с комментариями, потому что я не знаю, как его прикрепить с помощью файла xml.zip, сжатого в base64

0
задан 22.11.2019, 21:19
1 ответ

Хороший Error 500, consumiendo SOAP DIAN

dГ - в, перемещает то же самое меня, но используйте SOAPUI, чтобы тратить услугу и результат он был успешным, так что я скопировал xml, произведенный SOAPUI и попробовал производить это той же формы в c#, я этого достиг, но однако у меня продолжает выходить ошибка 500. Восток - xml, произведенный моим кодом c#, что igualito в того, которого производит SOAPUI, Помогает пожалуйста

0
ответ дан 01.12.2019, 10:57
  • 1
    Bienvenid@ в Стакк Оверфлов в españ ol! Пожалуйста, не используй зону ответов, чтобы задавать вопрос. Если у тебя есть вопрос, и ты не находишь ответ, [он открывает твой собственный вопрос] ( es.stackoverflow.com/help/how-to-ask ). Tambié n, воспользуйся возможностью и сделай поездку , чтобы понимать лучше có mo мы функционируем и шага получать твою первую медаль. Adicionalmente, не добавляй задержания экрана текста, существуют несколько причин , из-за которых мы хотим предотвратить это. – porloscerros Ψ 27.11.2019, 22:01

Теги

Похожие вопросы