public async Task <TransactionDto> ProcessSaleAsync(TransactionDto transactionDto) { var paymentConfiguration = (await DbContext.MerchantPaymentConfigurations .Where(x => x.Acquirer == Acquirer.Cielo && x.Merchant.Id == transactionDto.MerchantId).ToListAsync()) .Single(); var request = CieloRequestBuilder.BuildRequestFromTransactionDto(transactionDto); var credential = new CieloMerchantCredential(paymentConfiguration.AcquirerMerchantId, paymentConfiguration.AcquirerMerchantKey); var cieloResponse = await CieloApiClient.PostSaleTransactionAsync(request, credential); FillTransactionDtoWithResponseData(transactionDto, cieloResponse); return(transactionDto); }
public async Task <CieloResponse> PostSaleTransactionAsync(CieloRequest request, CieloMerchantCredential credential) { var cieloSaleUrl = Configuration.GetSection("Endpoints")["CieloApiUrl"]; var httpContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("MerchantId", credential.MerchantId.ToString()); client.DefaultRequestHeaders.Add("MerchantKey", credential.MerchantKey.ToString()); var httpResponseMessage = await client.PostAsync(cieloSaleUrl + "1/sales/", httpContent); var content = await httpResponseMessage.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <CieloResponse>(content)); } }
public async Task <CieloResponse> PostSaleTransactionAsync(CieloRequest request, CieloMerchantCredential credential) { return(await Task.Run(() => { var response = new CieloResponse { ProofOfSale = "123", Tid = "123456", AuthorizationCode = "123456", PaymentId = Guid.NewGuid() }; if (request.Payment.CreditCard.Holder.Equals("Cielo Error")) { response.Status = CieloStatus.Aborted; response.ReturnCode = "70"; response.ReturnMessage = "Problemas com o Cartão de Crédito"; return response; } response.Status = CieloStatus.PaymentConfirmed; response.ReturnCode = "4"; response.ReturnMessage = "Operação realizada com sucesso"; return response; })); }