public MundiPaggClient() { // var key = new Guid("5e62ba71-73d4-4ca0-8c03-26d1f78d6c71"); // const string link = "https://sandbox.mundipaggone.com"; // Creates the client that will send the transaction. _serviceClient = new GatewayServiceClient(); }
internal static CreditCardData GetCreditCardByToken(CustomerPaymentTokenizer tokenizer) { try { Log.Info($"Create Search for instant buy key {tokenizer.Token}"); var serviceClient = new GatewayServiceClient(merchantKey, hostUri); Guid instantBuyKey = Guid.Parse(tokenizer.Token); Log.Info($"Make request for instant buy key {tokenizer.Token}"); var httpResponse = serviceClient.CreditCard.GetInstantBuyData(instantBuyKey); if (httpResponse.HttpStatusCode == HttpStatusCode.OK && httpResponse.Response.CreditCardDataCollection.Any() == true) { return(httpResponse.Response.CreditCardDataCollection.FirstOrDefault()); } return(default(CreditCardData)); } catch (System.Exception ex) { Log.Error($"Request Error for instant buy key {tokenizer.Token}", ex); throw ex; } finally { Log.Info($"End Request for instant buy key {tokenizer.Token}"); } }
public static void Initialize(TestContext context) { serviceClient = new GatewayServiceClient( merchantKey, new Uri(hostUri) ); }
/// <summary> /// Obtém os dados de uma transação já existente. /// </summary> public void GetTransaction() { try { Guid merchantKey = Guid.Parse("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); Guid orderKey = Guid.Parse("219d7581-78e2-4aa9-b708-b7c585780bfc"); // Cria o cliente para consultar o pedido no gateway. IGatewayServiceClient client = new GatewayServiceClient(merchantKey, _endpoint); // Consulta o pedido. var httpResponse = client.Sale.QueryOrder(orderKey); if (httpResponse.HttpStatusCode == HttpStatusCode.OK) { foreach (var sale in httpResponse.Response.SaleDataCollection) { Console.WriteLine("Número do pedido: {0}", sale.OrderData.OrderReference); } } } catch (Exception) { throw; } }
public string CartaoDeCredito(Pedido pedido) { string retorno = string.Empty; try { // Cria a transação. var transaction = new CreditCardTransaction() { AmountInCents = 10000, CreditCard = new CreditCard() { //CreditCardBrand = CreditCardBrandEnum.Visa, CreditCardBrand = ((CreditCardBrandEnum)(pedido.Cliente.CartaoDeCredito.Bandeira)), CreditCardNumber = pedido.Cliente.CartaoDeCredito.Numero, ExpMonth = int.Parse(pedido.Cliente.CartaoDeCredito.Validade.Split('/')[0]), ExpYear = int.Parse(pedido.Cliente.CartaoDeCredito.Validade.Split('/')[1]), HolderName = pedido.Cliente.CartaoDeCredito.Nome, SecurityCode = pedido.Cliente.CartaoDeCredito.CodigoSeguranca }, InstallmentCount = 1 }; // Cria requisição. var createSaleRequest = new CreateSaleRequest() { // Adiciona a transação na requisição. CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transaction }), Order = new Order() { OrderReference = pedido.Id.ToString() } }; // Coloque a sua MerchantKey aqui. Guid merchantKey = pedido.TokenLoja; // Cria o client que enviará a transação. var serviceClient = new GatewayServiceClient(merchantKey, new Uri("https://transaction.stone.com.br")); // Autoriza a transação e recebe a resposta do gateway. var httpResponse = serviceClient.Sale.Create(createSaleRequest); Console.WriteLine("Código retorno: {0}", httpResponse.HttpStatusCode); Console.WriteLine("Chave do pedido: {0}", httpResponse.Response.OrderResult.OrderKey); if (httpResponse.Response.CreditCardTransactionResultCollection != null) { //retorno = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus.ToString(); retorno = CreditCardTransactionStatusEnum.AuthorizedPendingCapture.ToString(); } } catch (Exception ex) { retorno = CreditCardTransactionStatusEnum.WithError.ToString(); } return(retorno); }
public async Task <IActionResult> Pay() { StringBuilder console = new StringBuilder(); // Cria a transação. var transaction = new CreditCardTransaction() { AmountInCents = 10000, CreditCard = new CreditCard() { CreditCardBrand = CreditCardBrandEnum.Visa, CreditCardNumber = "4111111111111111", ExpMonth = 10, ExpYear = 22, HolderName = "LUKE SKYWALKER", SecurityCode = "123" }, InstallmentCount = 1 }; // Cria requisição. var createSaleRequest = new CreateSaleRequest() { // Adiciona a transação na requisição. CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transaction }), Order = new Order() { OrderReference = "NumeroDoPedido" } }; // Coloque a sua MerchantKey aqui. Guid merchantKey = Guid.Parse("0d96500c-fe5e-4454-bd3a-d2a6b83e81a3"); // Cria o client que enviará a transação. var serviceClient = new GatewayServiceClient(merchantKey, new Uri("https://sandbox.mundipaggone.com")); // Autoriza a transação e recebe a resposta do gateway. var httpResponse = await serviceClient.CreateSale(createSaleRequest); console.AppendLine(string.Format("Código retorno: {0}", httpResponse.HttpStatusCode)); console.AppendLine(string.Format("Chave do pedido: {0}", httpResponse.Response.OrderResult.OrderKey)); if (httpResponse.Response.CreditCardTransactionResultCollection != null) { console.AppendLine(string.Format("Status transação: {0}", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus)); } ViewBag.Result = console.ToString(); return(View()); }
private DataContracts.LocalDb.Transaction StonePayment(PaymentRequest pPaymentRequest, Acquirer pAcquirer) { //Create transaction. var transaction = new CreditCardTransaction() { AmountInCents = 10000, CreditCard = new CreditCard() { CreditCardBrand = CreditCardBrandEnum.Mastercard, CreditCardNumber = pPaymentRequest.CreditCardNumber, ExpMonth = Convert.ToInt32(pPaymentRequest.ExpMonth), ExpYear = Convert.ToInt32(pPaymentRequest.ExpYear), HolderName = pPaymentRequest.HolderName, SecurityCode = pPaymentRequest.SecurityCode }, InstallmentCount = 1, Options = new CreditCardTransactionOptions { PaymentMethodCode = 1 } }; //Create request. var createSaleRequest = new CreateSaleRequest() { // Adiciona a transação na requisição. CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transaction }), Order = new StonePaymentGateway.DataContracts.Order() { OrderReference = "Simulador" } }; Guid merchantKey = Guid.Parse(pAcquirer.MerchanteKey); var serviceClient = new GatewayServiceClient(merchantKey, new Uri("https://transaction.stone.com.br")); var httpResponse = serviceClient.Sale.Create(createSaleRequest); var result = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault(); var transactionDb = new DataContracts.LocalDb.Transaction(); transactionDb.Authorization = result.AuthorizationCode; transactionDb.AuthAmountInCents = result.AuthorizedAmountInCents.ToString(); transactionDb.CardExpiration = pPaymentRequest.ExpYear + pPaymentRequest.ExpMonth; transactionDb.CardNumber = pPaymentRequest.CreditCardNumber; transactionDb.Date = (DateTime)result.CapturedDate; transactionDb.MerchanteKey = pAcquirer.MerchanteKey; transactionDb.Message = result.AcquirerMessage; transactionDb.CardName = pPaymentRequest.HolderName; transactionDb.CardSecurityCode = pPaymentRequest.SecurityCode; return(transactionDb); }
/// <summary>Snippet for PostResource</summary> public void PostResourceRequestObject() { // Snippet: PostResource(HttpBody, CallSettings) // Create client GatewayServiceClient gatewayServiceClient = GatewayServiceClient.Create(); // Initialize request argument(s) HttpBody request = new HttpBody { ContentType = "", Data = ByteString.Empty, Extensions = { new Any(), }, }; // Make the request HttpBody response = gatewayServiceClient.PostResource(request); // End snippet }
/// <summary>Snippet for PostResourceAsync</summary> public async Task PostResourceRequestObjectAsync() { // Snippet: PostResourceAsync(HttpBody, CallSettings) // Additional: PostResourceAsync(HttpBody, CancellationToken) // Create client GatewayServiceClient gatewayServiceClient = await GatewayServiceClient.CreateAsync(); // Initialize request argument(s) HttpBody request = new HttpBody { ContentType = "", Data = ByteString.Empty, Extensions = { new Any(), }, }; // Make the request HttpBody response = await gatewayServiceClient.PostResourceAsync(request); // End snippet }
/// <summary> /// Cria e envia uma transação de cartão de crédito. /// </summary> /// <param name="transactionModel">Transação no modelo genérico de entrada no sistema.</param> public HttpResponse <CreateSaleResponse> CreateCreditCardTransaction(TransactionModel transactionModel) { try { // Cria a transação. var transaction = TransformTransactionClassToStone(transactionModel); // Cria requisição. var createSaleRequest = new CreateSaleRequest() { // Adiciona a transação na requisição. CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transaction }), Order = new Order() { OrderReference = transactionModel.TransactionIDText } }; // Coloque a sua MerchantKey aqui. Guid merchantKey = Guid.Parse("f2a1f485-cfd4-49f5-8862-0ebc438ae923"); // Cria o client que enviará a transação. var serviceClient = new GatewayServiceClient(merchantKey, _endpoint); // Autoriza a transação e recebe a resposta do gateway. var httpResponse = serviceClient.Sale.Create(createSaleRequest); //Console.WriteLine("Código retorno: {0}", httpResponse.HttpStatusCode); //Console.WriteLine("Chave do pedido: {0}", httpResponse.Response.OrderResult.OrderKey); if (httpResponse.Response.CreditCardTransactionResultCollection != null) { Console.WriteLine("Status transação: {0}", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus); } return(httpResponse); } catch (Exception) { throw; } }
static void Main(string[] args) { Guid merchantKey = Guid.Parse(ConfigurationManager.AppSettings["merchantKey"]); var client = new GatewayServiceClient(merchantKey, new Uri("https://transaction.stone.com.br")); #region help with brands /* | Bandeira | Comeca com | Máximo de número | Máximo de número cvc | | ---------- | ------------------------------------------- | ---------------- | -------------------- | | Visa | 4 | 13,16 | 3 | | Mastercard | 5 | 16 | 3 | | Diners | 301,305,36,38 | 14,16 | 3 | | Elo | 636368,438935,504175,451416,509048,509067, | | 3(?) | | 509049,509069,509050,509074,509068,509040, | | 509045,509051,509046,509066,509047,509042, | | 509052,509043,509064,509040 | | | | 36297, 5067,4576,4011 | 16 | 3 | Amex | 34,37 | 15 | 4 | | Discover | 6011,622,64,65 | 16 | 4 | | Aura | 50 | 16 | 3 | | jcb | 35 | 16 | 3 | | Hipercard | 38,60 | 13,16,19 | 3 | */ #endregion var begin = 7; Console.SetCursorPosition(1, 1); Console.WriteLine("choice a option:"); Console.SetCursorPosition(1, 2); Console.WriteLine("1 - to create a InstanBuyKey"); Console.SetCursorPosition(1, 3); Console.WriteLine("2 - to find a credit card"); Console.SetCursorPosition(1, 4); Console.WriteLine("3 - to create a transaction fake"); Console.SetCursorPosition(1, 5); Console.WriteLine("4 - to cancel a transaction"); Console.SetCursorPosition(1, begin); var readKey = Console.Read(); var serializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver(), Formatting = Formatting.Indented }; switch (readKey) { case 49: //key 1 var createInstantBuyDataRequest = new CreateInstantBuyDataRequest() { CreditCardBrand = CreditCardBrandEnum.Mastercard, CreditCardNumber = "1111222233334444", ExpMonth = 01, ExpYear = 20, HolderName = "John White".ToUpper(), IsOneDollarAuthEnabled = false, SecurityCode = "123" }; var createCreditCardResponse = client.CreditCard.CreateCreditCard(createInstantBuyDataRequest); if (createCreditCardResponse.HttpStatusCode == HttpStatusCode.Created && createCreditCardResponse.Response.Success == true) { Console.SetCursorPosition(1, begin); Console.Write(new string(' ', Console.WindowWidth)); Console.SetCursorPosition(1, begin); Console.WriteLine("InstantBuy Key: {0}", createCreditCardResponse.Response.InstantBuyKey); } break; case 50: //key 2 var instantBuyKey = Guid.Parse(ConfigurationManager.AppSettings["instantBuyKey"]); var getCreditCardResponse = client.CreditCard.GetCreditCard(instantBuyKey); var result = getCreditCardResponse.RawResponse; var obj = JsonConvert.DeserializeObject(result); var json = JsonConvert.SerializeObject(obj, serializerSettings); // Console.SetCursorPosition(1, begin); Console.Write(new string(' ', Console.WindowWidth)); Console.SetCursorPosition(1, begin); Console.WriteLine(json); break; case 51: //key 3 var value = 86.21100000000001; var transaction = new CreditCardTransaction() { AmountInCents = (long)(value * 100), InstallmentCount = 1, //this param is simulation payment Options = new CreditCardTransactionOptions { PaymentMethodCode = 1 }, CreditCardOperation = CreditCardOperationEnum.AuthAndCapture, CreditCard = new CreditCard() { InstantBuyKey = Guid.Parse(ConfigurationManager.AppSettings["instantBuyKey"]) } }; var createSaleRequest = new CreateSaleRequest() { CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transaction }), Order = new Order { OrderReference = Guid.NewGuid().ToString() } }; var serviceClient = new GatewayServiceClient(); var httpResponse = serviceClient.Sale.Create(createSaleRequest); var jsonResponse = JsonConvert.SerializeObject(httpResponse, serializerSettings); // Console.SetCursorPosition(1, begin); Console.Write(new string(' ', Console.WindowWidth)); Console.SetCursorPosition(1, begin); Console.WriteLine(jsonResponse); break; case 52: //key 4 var orderKey = Guid.Parse("094c775d-ea43-429f-97b9-4474c3fdqwe"); var saleManageResponse = client.Sale.Manage(ManageOperationEnum.Cancel, orderKey); if (saleManageResponse.HttpStatusCode == HttpStatusCode.OK && saleManageResponse.Response.CreditCardTransactionResultCollection.Any() && saleManageResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) { var respManage = client.Sale.Manage(ManageOperationEnum.Cancel, orderKey).RawResponse; var objRespManage = JsonConvert.DeserializeObject(respManage); var jsonRespManage = JsonConvert.SerializeObject(objRespManage, serializerSettings); Console.SetCursorPosition(1, begin); Console.Write(new string(' ', Console.WindowWidth)); Console.SetCursorPosition(1, begin); Console.WriteLine(jsonRespManage); } break; default: Console.WriteLine("Not found key!"); break; } // Console.ReadKey(); }
public AbstractMundipaggConsumer() : base() { this.serviceClient = new GatewayServiceClient(MERCHANT_KEY, new Uri(HOST_URI)); }
internal static bool ProcessPayment(CustomerTicket ticket, CustomerPayment payment, out Guid instantBuy) { var amountTransaction = (long)(ticket.Quantity * ticket.Event.Price); var expiration = payment.Expiration.Split('/'); var expMonth = Convert.ToInt32(expiration.FirstOrDefault()); var expYear = Convert.ToInt32(expiration.LastOrDefault()); instantBuy = Guid.Empty; try { Log.Info($"Create transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}"); // Cria a transação. var transaction = new CreditCardTransaction() { AmountInCents = amountTransaction, CreditCard = new CreditCard() { CreditCardBrand = ConvertCreditCardBrand(payment), CreditCardNumber = payment.CreditCardNumber, ExpMonth = expMonth, ExpYear = expYear, HolderName = payment.HolderName, SecurityCode = payment.SecurityCode }, }; // Cria requisição. var createSaleRequest = new CreateSaleRequest() { // Adiciona a transação na requisição. CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transaction }), }; Log.Info($"Make request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}"); var serviceClient = new GatewayServiceClient(merchantKey, hostUri); // Autoriza a transação e recebe a resposta do gateway. var httpResponse = serviceClient.Sale.Create(createSaleRequest); Log.Info($"Request Status for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer} with status {httpResponse.HttpStatusCode}"); if (httpResponse.Response.CreditCardTransactionResultCollection != null) { var transactionStatus = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus; Log.Info($"Transaction Status for ticket {ticket.Id} with status {transactionStatus.ToString()}"); if (transactionStatus == CreditCardTransactionStatusEnum.NotAuthorized) { ticket.Status = Enum.StatusEnum.NotAuthorized; } if (transactionStatus == CreditCardTransactionStatusEnum.Captured) { ticket.Status = Enum.StatusEnum.Authorized; } if (payment.KeepSave) { instantBuy = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCard.InstantBuyKey; } return(true); } return(false); } catch (System.Exception ex) { Log.Error($"Request Error for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}", ex); throw ex; } finally { Log.Info($"End Request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}"); } }
public CheckoutResult VerifyPartner(Partner partner) { var result = new CheckoutResult(); var checkoutMapper = new CheckoutMapper(); var configurationUtility = new ConfigurationUtility(); // MerchantKey Guid merchantKey = configurationUtility.MundiPaggMerchantKey; if (merchantKey == null) { result.Message = Resources.Resources.InvalidMerchantKey; result.Valid = false; return(result); } // Cria o client que enviará a transação. var serviceClient = new GatewayServiceClient(merchantKey, configurationUtility.MundiPaggApiUrl); try { // Autoriza a transação e recebe a resposta do gateway. var httpResponse = serviceClient.Sale.Create(checkoutMapper.MapSaleRequest(partner)); if (httpResponse.Response.CreditCardTransactionResultCollection != null) { if (httpResponse.Response.CreditCardTransactionResultCollection[0].Success) { result.Valid = true; return(result); } else { result.Message = @Resources.Resources.InvalidTransaction; result.Valid = false; return(result); } } else { for (var i = 0; i < httpResponse.Response.ErrorReport.ErrorItemCollection.Count; i++) { result.Message += httpResponse.Response.ErrorReport.ErrorItemCollection[i].Description + ' '; } result.Valid = false; return(result); } } catch (Exception ex) { #region Exception Log //var customData = new Dictionary<string, object>(); //customData.Add("MerchantKey", merchantKey); //customData.Add("Exception", ex); //RollbarDotNet.Rollbar.Report("VerifyPartner Exception!", RollbarDotNet.ErrorLevel.Critical, customData); #endregion result.Message = @Resources.Resources.ExceptionError; result.Valid = false; } return(result); }
private void MainTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { MainTimer.Stop(); // Recupera a última mensagem da fila. var queue = new MessageQueue(_queue_name); var message = queue.Receive().Body.ToString(); // Deserializa o conteúdo da mensagem. var jsonSerializerSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }; var dt = JsonConvert.DeserializeObject <ItemSoldViewModel>(message, jsonSerializerSettings); // Envia a mensagem para a MundiPagg. if (dt != null) { var transaction = new CreditCardTransaction() { AmountInCents = (long)(dt.Value * 100), CreditCard = new CreditCard() { CreditCardNumber = dt.CardNumber1 + dt.CardNumber2 + dt.CardNumber3 + dt.CardNumber4, CreditCardBrand = CreditCardBrandEnum.Visa, ExpMonth = dt.ExpMonth, ExpYear = dt.ExpYear, SecurityCode = dt.SecurityCode, HolderName = dt.HolderName } }; var ok = true; try { var serviceClient = new GatewayServiceClient(); var httpResponse = serviceClient.Sale.Create(transaction); var createSaleResponse = httpResponse.Response; if (httpResponse.HttpStatusCode == HttpStatusCode.Created) { foreach (var creditCardTransaction in createSaleResponse.CreditCardTransactionResultCollection) { //SendEmailOK(); } } else { if (createSaleResponse.ErrorReport != null) { foreach (ErrorItem errorItem in createSaleResponse.ErrorReport.ErrorItemCollection) { ok = false; } } } } catch { ok = false; } if (!ok) { //SendEmailError(); } } MainTimer.Start(); }
internal static bool ProcessPayment(CustomerTicket ticket, Guid instantBuy, string securityCode) { var amountTransaction = (long)(ticket.Quantity * ticket.Event.Price); try { Log.Info($"Create transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}"); // Cria a transação. var transaction = new CreditCardTransaction() { AmountInCents = amountTransaction, CreditCard = new CreditCard() { InstantBuyKey = instantBuy, SecurityCode = securityCode }, }; // Cria requisição. var createSaleRequest = new CreateSaleRequest() { // Adiciona a transação na requisição. CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transaction }), }; Log.Info($"Make request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}"); var serviceClient = new GatewayServiceClient(merchantKey, hostUri); // Autoriza a transação e recebe a resposta do gateway. var httpResponse = serviceClient.Sale.Create(createSaleRequest); Log.Info($"Request Status for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer} with status {httpResponse.HttpStatusCode}"); if (httpResponse.Response.CreditCardTransactionResultCollection != null) { var transactionStatus = httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus; Log.Info($"Transaction Status for ticket {ticket.Id} with status {transactionStatus.ToString()}"); if (transactionStatus == CreditCardTransactionStatusEnum.NotAuthorized) { ticket.Status = Enum.StatusEnum.NotAuthorized; } if (transactionStatus == CreditCardTransactionStatusEnum.Captured) { ticket.Status = Enum.StatusEnum.Authorized; } return(true); } return(false); } catch (System.Exception ex) { Log.Error($"Request Error for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}", ex); throw ex; } finally { Log.Info($"End Request for transaction for ticket {ticket.Id} and for customer {ticket.IdCustomer}"); } }
public PaymentResult PayWithCreditCard(BillingWithCreditCardBase billingData) { Contract.Requires(billingData != null); Contract.Ensures(Contract.Result <PaymentResult>() != null); ValidatorHelper.ThrowesIfHasDataAnnotationError(nameof(billingData), billingData); Log.Information("Iniciada cobrança no Cartao de Credito"); var mundpaggCreditCardTransaction = Mapper.Map <CreditCardTransaction>(billingData); mundpaggCreditCardTransaction.CreditCard.BillingAddress = Mapper.Map <BillingAddress>((billingData as BillingWithNewCreditCard)?.BillingAddress); var requestData = new CreateSaleRequest() { CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new[] { mundpaggCreditCardTransaction }), Order = new Order() { OrderReference = billingData.Id.ToString() } }; Log.Debug("Dados Cartao de Credito. {dadosDaCobranca}", billingData); try { Log.Debug("Criando Client do Gateway de Pagamentos"); var client = new GatewayServiceClient(); Log.Debug("Enviando dados de Cobrança para o Gateway"); var response = client.Sale.Create(requestData); Log.Debug("Enviando dados de Cobrança para o Gateway - Finaliazado"); var orderGenerated = response.HttpStatusCode == HttpStatusCode.Created; var succeful = orderGenerated && (response.Response?.CreditCardTransactionResultCollection.All(t => t.Success) ?? false); var orderId = response.Response?.OrderResult?.OrderKey.ToString(); var message = GetMessage(errorWasValidation: orderGenerated == false, gatewayResponse: response.Response); //TODO var rawData = response.RawResponse; var savedCc = response.Response?.CreditCardTransactionResultCollection?.SingleOrDefault()?.CreditCard; var savedCreditCard = savedCc == null ? null : new SavedCreditCard(savedCc.InstantBuyKey.ToString(), Mapper.Map <CreditCardBrand>(savedCc.CreditCardBrand), savedCc.MaskedCreditCardNumber); var result = new PaymentResult(succeful, orderId, message, rawData, savedCreditCard); Log.Debug("Resultado da Cobranca, {ResultadoDoPagamento}", result); if (result.PaymentBilledSuccessful) { Log.Information("Cobrança no Cartao de Credito realizada com Sucesso."); } else { Log.Error("Erro durante a cobrança de cartão de credito. Cobrança não realizada. {mensagem}", message); } return(result); } catch (Exception ex) { Log.Error(ex, "Erro GRAVE INTERNO durante a cobrança de cartão de credito. Cobrança não realizada. {Exception}", ex); return(new PaymentResult(false, null, "ERRO Interno do Sistema", ex.Message, null)); } }