Exemple #1
0
        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);
        }
Exemple #2
0
        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;
        }