Отправка cXML-сообщения PunchOutOrderMessage обратно на веб-сайт Ariba
Я работаю над тем, чтобы сделать существующий небольшой веб-сайт совместимым с выпуском Ariba.
Я могу прочитать входящие настройки, сделать ответ, а затем перенаправить их на действительный логин обратно на сайт.
На тестере Ariba это все работает правильно и может добавлять товары в корзину.
Я пытаюсь завершить процесс и отправить сообщение PunchOutOrderMessage обратно в корзину.
В примере документации cXML он имеет следующий формат:
<input type="hidden" name="cxml-urlencoded" value="<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
.... так далее
Я настроил то же сообщение, но с правильными данными для выкладки корзины.
Я в растерянности, хотя, как заставить его отправить обратно на сайт Ariba. Выполнение punchout предоставляет URL-адрес формы POST, на который я должен отправить форму обратно.
Я попробовал следующие методы: как сделать HTTP-запрос POST для подключения к веб-серверу, но не знал, что делать с сообщением. Я только что загрузил его в виде текста:
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateRemoteCertificate);
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var content = new StringContent(strPost);
var response = await client.PostAsync(PostURL, content);
var responseString = await response.Content.ReadAsStringAsync();
Проверка ResponseString просто предоставляет полную веб-страницу от Ariba, как будто я только что зашел на сайт вручную.
Встроенный браузер просто остается открытым на сайте Punchout и никуда не денется.
У кого-нибудь был какой-либо успех, подключившись к сайту Ariba и разместив заказ?
1 ответ
Документ PunchOutOrderMessage должен быть отправлен обратно клиентской стороне Ariba, а не серверной стороне. Это можно сделать, поместив cXML в скрытое поле ввода <form>
и отправив форму с помощью JavaScript. Также убедитесь, что cXML - это HTML, экранированный в значении поля ввода.
Пример HTML/JavaScript для этого случая можно найти здесь: https://punchoutcommerce.com/guides/punchout/cxml-punchout-order-message/
Я сталкивался с этим, когда искал ответ на свой вопрос о шаге после этого, но лучше поздно, чем никогда.
Это сработало для меня (HOOK_URL - это URL, предоставленный Ariba) - сохраните код менеджера точки обслуживания:
byte[] response = Encoding.ASCII.GetBytes(output);
var request = (HttpWebRequest)WebRequest.Create(poom.HOOK_URL);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
try
{
request.GetRequestStream().Write(response, 0, response.Length);
}
catch (Exception ex)
{
LogHelpers.Write(log, ex);
}
WebResponse webresponse = null;
try
{
webresponse = request.GetResponse();
}
catch (Exception ex)
{
LogHelpers.Write(log, ex);
}
Моя проблема в том, что делать с их ответом, который представляет собой короткий скрипт (