Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        private static string GetMessageFromAcquirer(CreateSaleResponse gatewayResponse)
        {
            var str = from transacao in gatewayResponse.CreditCardTransactionResultCollection
                      select transacao.AcquirerMessage;

            return(string.Join(", ", str));
        }
Esempio n. 3
0
        private static string GetErrorMessage(CreateSaleResponse gatewayResponse)
        {
            var str = from errorItem in gatewayResponse.ErrorReport.ErrorItemCollection
                      select errorItem.Description;

            return(string.Join(", ", str));
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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");
            }
        }
Esempio n. 6
0
 private static string GetMessage(bool errorWasValidation, CreateSaleResponse gatewayResponse)
 {
     return(errorWasValidation ? GetErrorMessage(gatewayResponse) : GetMessageFromAcquirer(gatewayResponse));
 }