private async Task <SapTaskResult> SendIncomingPaymentToSap(SapServiceConfig serviceSetting, string sapSystem, SapSaleOrderInvoiceResponse response, string transferReference, SapLoginCookies cookies) { var billingMapper = GetMapper(sapSystem); var incomingPaymentRequest = billingMapper.MapSapIncomingPayment(response.DocEntry, response.CardCode, response.DocTotal, response.DocDate, transferReference); var message = new HttpRequestMessage { RequestUri = new Uri($"{serviceSetting.BaseServerUrl}{serviceSetting.BillingConfig.IncomingPaymentsEndpoint}"), Content = new StringContent(JsonConvert.SerializeObject(incomingPaymentRequest), Encoding.UTF8, "application/json"), Method = HttpMethod.Post }; message.Headers.Add("Cookie", cookies.B1Session); message.Headers.Add("Cookie", cookies.RouteId); var client = _httpClientFactory.CreateClient(); var sapResponse = await client.SendAsync(message); if (!sapResponse.IsSuccessStatusCode) { _logger.LogError($"Incoming Payment could'n create to SAP because exists an error: '{sapResponse.Content.ReadAsStringAsync()}'."); } return(new SapTaskResult { IsSuccessful = sapResponse.IsSuccessStatusCode, SapResponseContent = await sapResponse.Content.ReadAsStringAsync(), TaskName = "Creating Billing Request" }); }
public SapTaskHandler( SapConfig sapConfig, ILogger <SapTaskHandler> logger, IHttpClientFactory httpClientFactory, IDateTimeProvider dateTimeProvider, SapServiceConfig sapServiceConfig, IBusinessPartnerMapper businessPartnerMapper) { _sapConfig = sapConfig; _logger = logger; _httpClientFactory = httpClientFactory; _dateTimeProvider = dateTimeProvider; _sapServiceConfig = sapServiceConfig; _businessPartnerMapper = businessPartnerMapper; }