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