public SendResponse SendPayment(SmsPaymentDTO smsPayment) { Task <SendResponse> task = SendPaymentAsync(smsPayment); task.Wait(); return(task.Result); }
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) }); }