J'expérimente avec Google Checkout et j'ai un problème pour poster sur le serveur de paiement. Voici mon code:POSTing xml to Google Checkout
XNamespace ns = XNamespace.Get("http://checkout.google.com/schema/2");
XDocument cart = new XDocument();
XElement rootElement = new XElement(ns + "checkout-shopping-cart",
new XElement("shopping-cart",
new XElement("items",
new XElement("item",
new XElement("item-name", "doodad"),
new XElement("item-description", "Description for the doodad"),
new XElement("unit-price", 9.99, new XAttribute("currency", "GBP")),
new XElement("quantity", 1)
)
)
)
);
cart.Add(rootElement);
string authKey = "111222333444:NOTAREALKEY";
authKey = EncodeToBase64(authKey);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://checkout.google.com/cws/v2/Merchant/111222333444/merchantCheckout");
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(cart.ToString());
request.ContentType = "application/xml; charset=UTF-8";
request.ContentLength = byteArray.Length;
request.Headers.Add("Authorization: Basic " + authKey);
request.Accept = "application/xml; charset=UTF-8";
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Exception here!
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseText = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
Quand j'appelle GetResponse(), je reçois un (400) Bad Request
.
Toute aide à cet égard serait grandement appréciée.
Aha! Merci, l'erreur dans la réponse de WebException m'a effectivement orienté dans la bonne direction. (Bien que cela puisse aussi bien dire 'Dave, vous êtes un idiot!'). J'utilisais un identifiant de marchand sandbox, mais l'URL live. Merci beaucoup pour l'aide. – DavidGouge