private AvangardResponse GetTicket(Order order) { var result = new AvangardResponse(); string sum = (Math.Round(order.Sum) * 100).ToString(); var requestXmlString = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>" + "<NEW_ORDER>" + "<SHOP_ID>{0}</SHOP_ID>" + "<SHOP_PASSWD>{1}</SHOP_PASSWD>" + "<AMOUNT>{2}</AMOUNT>" + "<ORDER_NUMBER>{3}</ORDER_NUMBER>" + "<ORDER_DESCRIPTION>{4}</ORDER_DESCRIPTION>" + "<LANGUAGE>{5}</LANGUAGE>" + "<BACK_URL>{6}</BACK_URL>" + "<CLIENT_NAME>{7}</CLIENT_NAME>" + "<CLIENT_ADDRESS>{8}</CLIENT_ADDRESS>" + "<CLIENT_EMAIL>{9}</CLIENT_EMAIL>" + "<CLIENT_PHONE>{10}</CLIENT_PHONE>" + "<CLIENT_IP>{11}</CLIENT_IP>" + "</NEW_ORDER >"; //System.Net.HttpWebRequest adds the header 'HTTP header "Expect: 100-Continue"' to every request unless you explicitly ask it not to by setting this static property to false: ServicePointManager.Expect100Continue = false; var postData = string.Format(requestXmlString, ShopId, ShopPassword, sum, order.OrderID.ToString(), Translit(GetOrderDescription(order.Number)), CultureInfo.CurrentCulture.TwoLetterISOLanguageName, this.SuccessUrl, Translit(order.OrderCustomer.FirstName + " " + order.OrderCustomer.LastName), Translit(order.BillingContact.Country + "," + order.BillingContact.City + "," + order.BillingContact.Address), order.OrderCustomer.Email, order.OrderCustomer.MobilePhone, order.OrderCustomer.CustomerIP ); LogToFile("заказ " + order.OrderID.ToString() + ", отправл¤ем данные " + postData); WebRequest request = WebRequest.Create("https://www.avangard.ru/iacq/h2h/reg?xml=" + HttpUtility.UrlEncode(postData)); request.Method = "GET"; using (var reader = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.GetEncoding("windows-1251"))) { var responseFromServer = reader.ReadToEnd(); using (var xmlReader = XmlReader.Create(new StringReader(responseFromServer))) { while (xmlReader.Read()) { if (xmlReader.NodeType == XmlNodeType.Element) { switch (xmlReader.Name) { case "id": int id; if (xmlReader.Read() && int.TryParse(xmlReader.Value, out id)) { result.Id = id; } break; case "ticket": if (xmlReader.Read()) { result.Ticket = xmlReader.Value; } break; case "ok_code": if (xmlReader.Read()) { result.OkCode = xmlReader.Value; } break; case "failure_code": if (xmlReader.Read()) { result.FailureCode = xmlReader.Value; } break; case "response_code": int responseCode; if (xmlReader.Read() && int.TryParse(xmlReader.Value, out responseCode)) { result.ResponseCode = responseCode; } break; case "response_message": if (xmlReader.Read()) { result.ResponseMessage = xmlReader.Value; } break; } } } } reader.Close(); } return(result); }
private AvangardResponse GetTicket(Order order) { var result = new AvangardResponse(); string sum = (Math.Round(order.Sum) * 100).ToString(); var requestXmlString = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>" + "<NEW_ORDER>" + "<SHOP_ID>{0}</SHOP_ID>" + "<SHOP_PASSWD>{1}</SHOP_PASSWD>" + "<AMOUNT>{2}</AMOUNT>" + "<ORDER_NUMBER>{3}</ORDER_NUMBER>" + "<ORDER_DESCRIPTION>{4}</ORDER_DESCRIPTION>" + "<LANGUAGE>{5}</LANGUAGE>" + "<BACK_URL>{6}</BACK_URL>" + "<CLIENT_NAME>{7}</CLIENT_NAME>" + "<CLIENT_ADDRESS>{8}</CLIENT_ADDRESS>" + "<CLIENT_EMAIL>{9}</CLIENT_EMAIL>" + "<CLIENT_PHONE>{10}</CLIENT_PHONE>" + "<CLIENT_IP>{11}</CLIENT_IP>" + "</NEW_ORDER >"; //System.Net.HttpWebRequest adds the header 'HTTP header "Expect: 100-Continue"' to every request unless you explicitly ask it not to by setting this static property to false: ServicePointManager.Expect100Continue = false; var postData = string.Format(requestXmlString, ShopId, ShopPassword, sum, order.OrderID.ToString(), Translit(GetOrderDescription(order.Number)), CultureInfo.CurrentCulture.TwoLetterISOLanguageName, this.SuccessUrl, Translit(order.OrderCustomer.FirstName + " " + order.OrderCustomer.LastName), Translit(order.BillingContact.Country + "," + order.BillingContact.City + "," + order.BillingContact.Address), order.OrderCustomer.Email, order.OrderCustomer.MobilePhone, order.OrderCustomer.CustomerIP ); WebRequest request = WebRequest.Create("https://www.avangard.ru/iacq/h2h/reg?xml=" + HttpUtility.UrlEncode(postData)); request.Method = "GET"; using (var reader = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.GetEncoding("windows-1251"))) { var responseFromServer = reader.ReadToEnd(); using (var xmlReader = XmlReader.Create(new StringReader(responseFromServer))) { while (xmlReader.Read()) { if (xmlReader.NodeType == XmlNodeType.Element) { switch (xmlReader.Name) { case "id": int id; if (xmlReader.Read() && int.TryParse(xmlReader.Value, out id)) { result.Id = id; } break; case "ticket": if (xmlReader.Read()) { result.Ticket = xmlReader.Value; } break; case "ok_code": if (xmlReader.Read()) { result.OkCode = xmlReader.Value; } break; case "failure_code": if (xmlReader.Read()) { result.FailureCode = xmlReader.Value; } break; case "response_code": int responseCode; if (xmlReader.Read() && int.TryParse(xmlReader.Value, out responseCode)) { result.ResponseCode = responseCode; } break; case "response_message": if (xmlReader.Read()) { result.ResponseMessage = xmlReader.Value; } break; } } } } reader.Close(); } return result; }