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"); } }