Esempio n. 1
0
        public SendResponse SendPayment(SmsPaymentDTO smsPayment)
        {
            Task <SendResponse> task = SendPaymentAsync(smsPayment);

            task.Wait();
            return(task.Result);
        }
Esempio n. 2
0
        private async Task <SendResponse> SendPaymentAsync(SmsPaymentDTO smsPaymentDto)
        {
            //Засекаем время чтобы проверить что в ответе есть хотя бы один новый, то есть мы что-то создали, но ответ не пришел
            var now = DateTime.Now;

            try {
                //Битриксу необходимо всегда передавать имя и фамилию для физических клиентов
                var clientName = smsPaymentDto.Recepient.Trim();
                if (smsPaymentDto.RecepientType == PersonType.natural && !clientName.Contains(' '))
                {
                    smsPaymentDto.Recepient = clientName + " -";
                }

                string content = JsonConvert.SerializeObject(smsPaymentDto, new JsonSerializerSettings {
                    DateFormatString = dateFormat
                });
                logger.Info($"Передаём в битрикс данные: {content}");

                using (HttpClient httpClient = new HttpClient())
                {
                    httpClient.DefaultRequestHeaders.Accept.Clear();
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    HttpContent         httpContent  = new StringContent(content, Encoding.UTF8, "application/json");
                    HttpResponseMessage httpResponse = await httpClient.PostAsync($"{baseAddress}/vodovoz/handlernew.php", httpContent);

                    var responseContent = httpResponse.Content.ReadAsStringAsync().Result;
                    logger.Info($"Битрикс вернул http код: {httpResponse.StatusCode} Content: {responseContent}");

                    JObject obj = JObject.Parse(responseContent);

                    var externalId = Int32.Parse(obj["dealId"]?.ToString());
                    return(new SendResponse {
                        HttpStatusCode = httpResponse.StatusCode, ExternalId = externalId
                    });
                }
            }
            catch (Exception ex)
            {
                logger.Warn($"{ex}\nВозникла проблема, проверяем создался ли платеж на стороне битрикса");
                return(await TryToGetExternalId(smsPaymentDto.OrderId, now));
            }
        }
 public SendResponse SendPayment(SmsPaymentDTO smsPayment)
 {
     return(new SendResponse {
         HttpStatusCode = HttpStatusCode.OK, ExternalId = new System.Random().Next(1, 30000)
     });
 }