public CreateSaleResponse MakeCreditCardTransaction(CreateSaleRequest createSaleRequest) { var client = new RestClient("http://localhost:50976"); var request = new RestRequest("/v1/api/Acquiries/Stone/CreditCard", Method.POST); var json = JsonConvert.SerializeObject(createSaleRequest); request.AddParameter("text/json", json, ParameterType.RequestBody); IRestResponse response = client.Execute(request); CreateSaleResponse createSaleResponse = null; if (response.StatusCode == System.Net.HttpStatusCode.OK) { try { createSaleResponse = JsonConvert.DeserializeObject <CreateSaleResponse>(response.Content); } catch (Exception ex) { } } else { } return(createSaleResponse); }
private static string GetMessageFromAcquirer(CreateSaleResponse gatewayResponse) { var str = from transacao in gatewayResponse.CreditCardTransactionResultCollection select transacao.AcquirerMessage; return(string.Join(", ", str)); }
private static string GetErrorMessage(CreateSaleResponse gatewayResponse) { var str = from errorItem in gatewayResponse.ErrorReport.ErrorItemCollection select errorItem.Description; return(string.Join(", ", str)); }
public CreateSaleResponse ValidatePaymentSuccessfully() { var createSaleResponse = new CreateSaleResponse(); createSaleResponse.InternalTime = 268; createSaleResponse.MerchantKey = new Guid("f2a1f485-cfd4-49f5-8862-0ebc438ae923"); createSaleResponse.RequestKey = new Guid("35729062-b579-4aea-af2d-f98f91b6df27"); var creditCardTransactionResult = new CreditCardTransactionResult(); creditCardTransactionResult.AcquirerMessage = "Mock|Transação de simulação autorizada com sucesso"; creditCardTransactionResult.AcquirerName = "Mock"; creditCardTransactionResult.AcquirerReturnCode = "0"; creditCardTransactionResult.AmountInCents = 10000; creditCardTransactionResult.AuthorizationCode = "487095"; creditCardTransactionResult.AuthorizedAmountInCents = 10000; creditCardTransactionResult.CapturedAmountInCents = 10000; creditCardTransactionResult.CapturedDate = DateTime.Now; creditCardTransactionResult.CreditCard = new CreditCardData(); creditCardTransactionResult.CreditCard.CreditCardBrand = CreditCardBrandEnum.Visa; creditCardTransactionResult.CreditCard.InstantBuyKey = new Guid("b7f8e013-7245-4b23-a7b9-8d9890adb46a"); creditCardTransactionResult.CreditCard.IsExpiredCreditCard = false; creditCardTransactionResult.CreditCard.MaskedCreditCardNumber = "411111****1111"; creditCardTransactionResult.CreditCardOperation = CreditCardOperationEnum.AuthAndCapture; creditCardTransactionResult.CreditCardTransactionStatus = CreditCardTransactionStatusEnum.Captured; creditCardTransactionResult.ExternalTime = 0; creditCardTransactionResult.PaymentMethodName = "Mock"; creditCardTransactionResult.Success = true; creditCardTransactionResult.TransactionIdentifier = "153830"; creditCardTransactionResult.TransactionKey = new Guid("7729f941-3d30-4ccc-af14-b54c8a60fe47"); creditCardTransactionResult.TransactionKeyToAcquirer = "6a13137f8e784748"; creditCardTransactionResult.TransactionReference = "ef21a347-d151-4894-911c-833eb01b3c0f"; creditCardTransactionResult.UniqueSequentialNumber = "240396"; createSaleResponse.CreditCardTransactionResultCollection = new Collection <CreditCardTransactionResult>(); createSaleResponse.CreditCardTransactionResultCollection.Add(creditCardTransactionResult); createSaleResponse.OrderResult = new OrderResult(); createSaleResponse.OrderResult.CreateDate = DateTime.Now; createSaleResponse.OrderResult.OrderKey = new Guid("c5f5ea13-1bb1-4737-9f9f-28cf56350e0f"); createSaleResponse.OrderResult.OrderReference = "NumeroDoPedido"; return(createSaleResponse); }
public static async Task <CreateSaleResponse> EnviarTransacao(CartaoCredito cartaoCredito) { var model = new CreateSaleResponse(); try { var transacao = new CreditCardTransaction() { AmountInCents = Convert.ToInt64(cartaoCredito.ValorVenda.ToString("N2").Replace(",", "")), CreditCard = new CreditCard() { CreditCardBrand = cartaoCredito.CreditCardBrand, CreditCardNumber = cartaoCredito.Numero, ExpMonth = cartaoCredito.Validade.Substring(0, 2).DefaultInt(), ExpYear = cartaoCredito.Validade.Substring(5, 2).DefaultInt(), HolderName = cartaoCredito.Titular, //O nome do portador deve conter mais de um caracter SecurityCode = cartaoCredito.CVV }, InstallmentCount = cartaoCredito.NumeroParcelas, Options = new CreditCardTransactionOptions() { //0 - PRODUÇÃO //1 - HOMOLOGAÇÃO (TESTE) PaymentMethodCode = 1, CurrencyIso = CurrencyIsoEnum.BRL, SoftDescriptorText = "Obraki" //Texto da fatura do cartão }, CreditCardOperation = CreditCardOperationEnum.AuthAndCapture //Autorização e Captura Instantânea }; var saleRequest = new CreateSaleRequest() { CreditCardTransactionCollection = new Collection <CreditCardTransaction>(new CreditCardTransaction[] { transacao }), Order = new Order() { //Um dos campos que não é obrigatório, mas que é de extrema importância é o OrderReference. //Aconselhamos que sempre envie essa informação, pois assim, facilitara a sua gestão! OrderReference = cartaoCredito.OrderReference.ToString() } }; var data = JsonConvert.SerializeObject(saleRequest); //HttpContent content = new StringContent(data, Encoding.UTF8, "application/json"); //content.Headers.Add("Keep-Alive", "true"); var request = (HttpWebRequest)WebRequest.Create(new Uri($"{Utils.STONE_BASE_URL}/Sale")); request.ContentType = Utils.CONTENT_TYPE; request.Accept = Utils.CONTENT_TYPE; request.Method = "POST"; request.Headers["MerchantKey"] = Utils.STONE_MERCHANT_KEY; using (var writer = new StreamWriter(await request.GetRequestStreamAsync())) { writer.Write(data); writer.Flush(); writer.Dispose(); } using (var response = await request.GetResponseAsync()) { using (var stream = response.GetResponseStream()) { var streamReader = new StreamReader(stream); var result = streamReader.ReadToEnd(); if (!string.IsNullOrEmpty(result)) { model = JsonConvert.DeserializeObject <CreateSaleResponse>(result); } else { model.ErrorReport = new ErrorReport() { ErrorItemCollection = new Collection <ErrorItem>() { new ErrorItem() { ErrorCode = 999, Description = TransactionResult.Message("c999") } } }; } } } return(model); } catch (WebException ex) { using (WebResponse response = ex.Response) { HttpWebResponse httpResponse = (HttpWebResponse)response; model.ErrorReport = new ErrorReport() { ErrorItemCollection = new Collection <ErrorItem>() { new ErrorItem() { ErrorCode = ((int)httpResponse.StatusCode), Description = TransactionResult.Message(((int)httpResponse.StatusCode).ToString()) } } }; } return(model); //await Application.Current.MainPage.DisplayAlert("Informação", ex.Message, "OK"); } }
private static string GetMessage(bool errorWasValidation, CreateSaleResponse gatewayResponse) { return(errorWasValidation ? GetErrorMessage(gatewayResponse) : GetMessageFromAcquirer(gatewayResponse)); }