public void ItShouldCreateATransactionWithInstantBuyKey()
        {
            // Cria o cliente para retentar a transação.
            IGatewayServiceClientStone serviceClient = this.GetGatewayServiceClient();

            // Cria transação de cartão de crédito para ser retentada
            HttpResponse <CreateSaleResponse> saleResponse = serviceClient.Sale.Create(this._createCreditCardSaleRequestStone);

            Assert.AreEqual(saleResponse.HttpStatusCode, HttpStatusCode.Created);

            var instantBuyKey = saleResponse.Response.CreditCardTransactionResultCollection.Select(x => x.CreditCard.InstantBuyKey);

            // Cria requisição com instant buy key
            CreateSaleRequestStone createSale = new CreateSaleRequestStone {
                CreditCardTransactionStoneCollection = new Collection <CreditCardTransactionStone>
                {
                    new CreditCardTransactionStone
                    {
                        AmountInCents = 10000,
                        CreditCard    = new CreditCardStone
                        {
                            InstantBuyKey = instantBuyKey.FirstOrDefault()
                        }
                    }
                }
            };

            // Faz a requisição
            HttpResponse <CreateSaleResponse> httpResponse = serviceClient.Sale.Create(createSale);

            Assert.AreEqual(HttpStatusCode.Created, httpResponse.HttpStatusCode);
        }
        /// <summary>
        /// Cria uma venda, contendo transações de boleto e/ou cartão de crédito
        /// </summary>
        /// <param name="createSaleRequestStone">Dados da venda</param>
        /// <returns></returns>
        public HttpResponse <CreateSaleResponse> Create(CreateSaleRequestStone createSaleRequestStone)
        {
            // Configura MerchantKey e o header
            NameValueCollection headers = this.GetHeaders();

            headers.Add("MerchantKey", this.MerchantKey.ToString());

            // Envia requisição
            return(this.HttpUtility.SubmitRequest <CreateSaleRequestStone, CreateSaleResponse>(createSaleRequestStone,
                                                                                               string.Concat(this.HostUri, this.ResourceName), HttpVerbEnum.Post, HttpContentTypeEnum.Json, headers));
        }
Exemplo n.º 3
0
        private CreateSaleRequestStone CreateStoneSaleRequest(CreditCardTransactionStone transaction)
        {
            // Cria requisição.
            var createSaleRequest = new CreateSaleRequestStone()
            {
                // Adiciona a transação na requisição.
                CreditCardTransactionStoneCollection =
                    new Collection <CreditCardTransactionStone>(new CreditCardTransactionStone[] { transaction }),
                Order = new Order()
                {
                    OrderReference = "NumeroDoPedido"
                }
            };

            return(createSaleRequest);
        }
        /// <summary>
        /// Cria uma venda com uma coleção de transações de cartão de crédito
        /// </summary>
        /// <param name="creditCardTransactionCollection">Coleção de transações de cartão de crédito</param>
        /// <param name="orderReference">Identificação do pedido na loja</param>
        /// <returns></returns>
        public HttpResponse <CreateSaleResponse> Create(Collection <CreditCardTransactionStone> creditCardTransactionCollection, string orderReference)
        {
            CreateSaleRequestStone createSaleRequestStone =
                new CreateSaleRequestStone
            {
                CreditCardTransactionStoneCollection = creditCardTransactionCollection,
                Options = new SaleOptions()
                {
                    IsAntiFraudEnabled = false
                }
            };

            // Se não for informado o comprador nem o carrinho de compras não será possível utilizar o serviço de anti fraude.
            if (string.IsNullOrWhiteSpace(orderReference) == false)
            {
                createSaleRequestStone.Order = new Order()
                {
                    OrderReference = orderReference
                };
            }

            return(this.Create(createSaleRequestStone));
        }
        public void ItShouldCreateSaleWithAllFields()
        {
            CreateSaleRequestStone saleRequestStone = new CreateSaleRequestStone();

            // Dados da transação de cartão de crédito.
            saleRequestStone.CreditCardTransactionStoneCollection = new Collection <CreditCardTransactionStone>()
            {
                new CreditCardTransactionStone()
                {
                    AmountInCents       = 100,
                    CreditCardOperation = CreditCardOperationEnum.AuthAndCapture,
                    CreditCard          = new CreditCardStone()
                    {
                        CreditCardBrand  = CreditCardBrandEnum.Visa,
                        CreditCardNumber = "4111111111111111",
                        ExpMonth         = 10,
                        ExpYear          = 2018,
                        HolderName       = "Somebody",
                        SecurityCode     = "123"
                    },
                    // Opcional.
                    Options = new CreditCardTransactionOptions()
                    {
                        // Indica que a transação é de simulação.
                        PaymentMethodCode = 1
                    }
                }
            };

            // Dados do comprador.
            saleRequestStone.Buyer = new Buyer()
            {
                DocumentNumber    = "11111111111",
                DocumentType      = DocumentTypeEnum.CPF,
                Email             = "*****@*****.**",
                EmailType         = EmailTypeEnum.Personal,
                Gender            = GenderEnum.M,
                HomePhone         = "(21) 12345678",
                Name              = "Somebody",
                PersonType        = PersonTypeEnum.Person,
                AddressCollection = new Collection <BuyerAddress>()
                {
                    new BuyerAddress()
                    {
                        AddressType = AddressTypeEnum.Residential,
                        City        = "Rio de Janeiro",
                        Complement  = "10º floor",
                        Country     = CountryEnum.Brazil.ToString(),
                        District    = "Centro",
                        Number      = "199",
                        State       = "RJ",
                        Street      = "Rua da Quitanda",
                        ZipCode     = "20091005"
                    }
                }
            };

            // Indica que o pedido usará anti fraude.
            saleRequestStone.Options.IsAntiFraudEnabled = true;

            // Cria o cliente que enviará a transação para o gateway.
            IGatewayServiceClientStone serviceClient = this.GetGatewayServiceClient();

            // Autoriza a transação de cartão de crédito e recebe a resposta do gateway.
            HttpResponse <CreateSaleResponse> httpResponse = serviceClient.Sale.Create(saleRequestStone);

            Assert.AreEqual(HttpStatusCode.Created, httpResponse.HttpStatusCode);
        }