{"_id":"5978f16bb8da85001f5081d9","category":"5978f16bb8da85001f5081ce","parentDoc":null,"user":"555fb063336c041700a9b861","project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["55dca3b34f535537007da1c4","561f1140cfc3610d00567173","5631621e9c25801700dac349","565d48bdb311ea0d00a3845b"],"next":{"pages":[],"description":""},"createdAt":"2015-05-22T22:41:13.898Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[]},"auth":"required","params":[],"url":""},"isReference":true,"order":0,"body":"[block:api-header]\n{\n  \"title\": \"O que é o e-Stone?\"\n}\n[/block]\nO cliente é nossa missão de vida! \n\nPensando em você, desenvolvedor, construímos essa integração de serviços online com o foco em uma API simples para que você tenha o melhor processo de integração e comece a transacionar rapidamente.\n\nDentre suas funcionalidades destacam-se:\n\n* **Pré-autorização**\n\n* **Captura via API**\n\n* **Captura parcial via API**\n\n* **Cancelamento/estorno via API**\n\n* **Cancelamento/estorno parcial via API**\n\n* **Retentativa automática**\n\n* **Retentativa posterior ( Retry order )**\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Comunicação(Endpoint)\"\n}\n[/block]\n\nNossa API está de cara nova, agora ela é RESTful!\n\nPara acessar nosso Simulador basta fazer uma requisição HTTP com o valor da MerchantKey preenchido no campo *MerchantKey* do cabeçalho ( header ) da requisição. Além disso, é necessário inserir nos campos *Content-type* e *Accept* o texto *application/json* para especificar que o formato é JSON tanto para a requisição enviada quanto para a resposta recebida.\n\n* `MerchantKey: 87328324-8DA6-459E-9948-5431F5A183FA`\n\n* `Content-type: application/json`\n\n* `Accept: application/json`\n\nURL: https://transaction.stone.com.br\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Integrando com segurança\"\n}\n[/block]\nPara  te proporcionar a melhor experiência de integração, é preciso liberar nossos servidores no seu ambiente de forma segura. Nós recomendamos fortemente que você libere os seguintes IP's:\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"- 208.74.28.168\\n\\n- 209.134.53.73\\n\\n- 208.93.65.183 \\n\\n- 23.101.169.64\\n\\n- 104.209.129.203\",\n  \"title\": \"IP's Stone\"\n}\n[/block]\nA integridade e segurança das suas informações são muito importantes para a Stone! Visando manter a segurança de ambas as partes na troca de informações com a nossa API, seguimos o padrão de segurança PCI e aceitamos os seguintes Protocolos de Segurança, Códigos Hash e Suites de Criptografia:\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Protocolos aceitos\",\n  \"body\": \"- TLS 1.1\\n\\n- TLS 1.2\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Hashs Codes\",\n  \"body\": \"- SHA256\\n\\n- SHA384\\n\\n- SHA512\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Cipher Suites\",\n  \"body\": \"Com criptografia igual ou superior a 128 bits\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Integrando com a Stone\"\n}\n[/block]\nPara que você possa conhecer melhor nossa plataforma de maneira mais amigável antes de fazer transações reais, segmentamos o processo de adoção da nossa plataforma em duas partes : \n\n* HOMOLOGAÇÃO\n\n* PRODUÇÃO \n\n**O que é Homologação ?**\n\nÉ o período no qual o cliente utilizará do nosso endpoint ( Simulador ) para realizar transações de **TESTE**  para se adequar e familiarizar com a nossa API.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Nessa fase ainda não é necessário ser cliente cadastrado para enviar requisições para o endpoint do Simulador.\"\n}\n[/block]\n**O que é Produção ?**\n\nÉ o período seguinte à homologação no qual o cliente já precisará ser cadastrado e poderá começar a efetuar transações **REAIS** utilizando nosso endpoint. \n\n\n\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"Em ambos os casos será necessário ter em mãos credenciais de acesso para enviar requisições para nossos endpoints. A obtenção das credenciais para cada caso é descrita logo abaixo\",\n  \"title\": \"Credenciais de Acesso\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Adquirindo suas Credenciais de Acesso\"\n}\n[/block]\nAs credencias de acesso para nossos ambientes de homologação e produção são chamadas de **MerchantKey**. A seguir explicaremos como obtê-las.\n\n## **HOMOLOGAÇÃO**\n\nAs MerchantKeys de Homologação são:\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"MerchantKey com Antifraude Desabilitado\",\n  \"body\": \"**f2a1f485-cfd4-49f5-8862-0ebc438ae923**\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"MerchantKey com Antifraude Habilitado\",\n  \"body\": \"**7b379c45-57d6-4508-ae56-29bb0b3c9741**\"\n}\n[/block]\n## **PRODUÇÃO**\n\nUma vez que a etapa de homologação for concluída você precisará de uma credencial de **PRODUÇÃO** que será encaminhada após o seu cadastro com a Stone.\n\nPara solicitar seu cadastro encaminhe um e-mail para o nosso time comercial **[ecommerce@stone.com.br](mailto:ecommerce@stone.com.br)** lhe auxiliar no processo de credenciamento.\n\nCaso já seja cadastrado e ainda não possua sua MerchantKey de produção, entre em contato conosco pelo email **[ecommerce@stone.com.br](mailto:ecommerce@stone.com.br)** para obtê-la\n\n\n\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Enviando requisições para a nossa API\"\n}\n[/block]\nA principal forma de comunicação com a nossa solução são as requisições enviadas para a nossa API. Por isso, ressaltamos que alguns critérios mínimos devem ser respeitados para que as transações possam ser criadas com sucesso. **É muito importante** que esses critérios sejam **respeitados**, caso contrário, não será possível criar as transações.\n\nCriamos a seção [Enviando requisições válidas](doc:erros) especialmente para facilitar a configuração do seu código e evitar esse tipo de erro!\n\n\n\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Bibliotecas de integração\"\n}\n[/block]\nQueremos facilitar sua a experiência de integração e, para isso, desenvolvemos bibliotecas em diversas linguagens para tornar sua integração mais fácil e orgânica.\n\nAtualmente as bibliotecas disponíveis são:\n\n* [.NET](https://repo.stone.com.br/estone/stone-ecommerce-dotnet-master.zip)\n\n* [Java](https://repo.stone.com.br/estone/stone-ecommerce-java-master.zip)\n\n* [PHP](https://repo.stone.com.br/estone/stone-ecommerce-php-master.zip)\n\n* [Ruby](https://repo.stone.com.br/estone/stone-ecommerce-ruby-master.zip)\n\n* [Python](https://repo.stone.com.br/estone/stone-ecommerce-python-master.zip)","excerpt":"Integrar agora ficou fácil!","slug":"bem-vindo","type":"basic","title":"Bem vindo ao e-Stone!","__v":0,"childrenPages":[]}

Bem vindo ao e-Stone!

Integrar agora ficou fácil!

O que é o e-Stone?

O cliente é nossa missão de vida!

Pensando em você, desenvolvedor, construímos essa integração de serviços online com o foco em uma API simples para que você tenha o melhor processo de integração e comece a transacionar rapidamente.

Dentre suas funcionalidades destacam-se:

  • Pré-autorização

  • Captura via API

  • Captura parcial via API

  • Cancelamento/estorno via API

  • Cancelamento/estorno parcial via API

  • Retentativa automática

  • Retentativa posterior ( Retry order )

Comunicação(Endpoint)

Nossa API está de cara nova, agora ela é RESTful!

Para acessar nosso Simulador basta fazer uma requisição HTTP com o valor da MerchantKey preenchido no campo MerchantKey do cabeçalho ( header ) da requisição. Além disso, é necessário inserir nos campos Content-type e Accept o texto application/json para especificar que o formato é JSON tanto para a requisição enviada quanto para a resposta recebida.

  • MerchantKey: 87328324-8DA6-459E-9948-5431F5A183FA

  • Content-type: application/json

  • Accept: application/json

URL: https://transaction.stone.com.br

Integrando com segurança

Para te proporcionar a melhor experiência de integração, é preciso liberar nossos servidores no seu ambiente de forma segura. Nós recomendamos fortemente que você libere os seguintes IP's:

IP's Stone

  • 208.74.28.168

  • 209.134.53.73

  • 208.93.65.183

  • 23.101.169.64

  • 104.209.129.203

A integridade e segurança das suas informações são muito importantes para a Stone! Visando manter a segurança de ambas as partes na troca de informações com a nossa API, seguimos o padrão de segurança PCI e aceitamos os seguintes Protocolos de Segurança, Códigos Hash e Suites de Criptografia:

Protocolos aceitos

  • TLS 1.1

  • TLS 1.2

Hashs Codes

  • SHA256

  • SHA384

  • SHA512

Cipher Suites

Com criptografia igual ou superior a 128 bits

Integrando com a Stone

Para que você possa conhecer melhor nossa plataforma de maneira mais amigável antes de fazer transações reais, segmentamos o processo de adoção da nossa plataforma em duas partes :

  • HOMOLOGAÇÃO

  • PRODUÇÃO

O que é Homologação ?

É o período no qual o cliente utilizará do nosso endpoint ( Simulador ) para realizar transações de TESTE para se adequar e familiarizar com a nossa API.

Nessa fase ainda não é necessário ser cliente cadastrado para enviar requisições para o endpoint do Simulador.

O que é Produção ?

É o período seguinte à homologação no qual o cliente já precisará ser cadastrado e poderá começar a efetuar transações REAIS utilizando nosso endpoint.

Credenciais de Acesso

Em ambos os casos será necessário ter em mãos credenciais de acesso para enviar requisições para nossos endpoints. A obtenção das credenciais para cada caso é descrita logo abaixo

Adquirindo suas Credenciais de Acesso

As credencias de acesso para nossos ambientes de homologação e produção são chamadas de MerchantKey. A seguir explicaremos como obtê-las.

HOMOLOGAÇÃO

As MerchantKeys de Homologação são:

MerchantKey com Antifraude Desabilitado

f2a1f485-cfd4-49f5-8862-0ebc438ae923

MerchantKey com Antifraude Habilitado

7b379c45-57d6-4508-ae56-29bb0b3c9741

PRODUÇÃO

Uma vez que a etapa de homologação for concluída você precisará de uma credencial de PRODUÇÃO que será encaminhada após o seu cadastro com a Stone.

Para solicitar seu cadastro encaminhe um e-mail para o nosso time comercial ecommerce@stone.com.br lhe auxiliar no processo de credenciamento.

Caso já seja cadastrado e ainda não possua sua MerchantKey de produção, entre em contato conosco pelo email ecommerce@stone.com.br para obtê-la

Enviando requisições para a nossa API

A principal forma de comunicação com a nossa solução são as requisições enviadas para a nossa API. Por isso, ressaltamos que alguns critérios mínimos devem ser respeitados para que as transações possam ser criadas com sucesso. É muito importante que esses critérios sejam respeitados, caso contrário, não será possível criar as transações.

Criamos a seção Enviando requisições válidas especialmente para facilitar a configuração do seu código e evitar esse tipo de erro!

Bibliotecas de integração

Queremos facilitar sua a experiência de integração e, para isso, desenvolvemos bibliotecas em diversas linguagens para tornar sua integração mais fácil e orgânica.

Atualmente as bibliotecas disponíveis são:

{"_id":"5978f16bb8da85001f5081da","category":"5978f16bb8da85001f5081ce","parentDoc":null,"user":"55831751870ff41900de479e","project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-07-28T19:35:18.242Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":1,"body":"Com a MerchantKey em mãos você já está pronto para enviar transações utilizando o cartão de crédito. Visando te auxiliar de forma mais prática e intuitiva criamos um exemplo de transação com o cartão de crédito. Assim, podemos explicar como funciona o processo de envio de requisições, formatação do código e informações a serem enviadas para a gente.\n\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Preparando uma requisição\"\n}\n[/block]\nAntes de enviar a transação de cartão de crédito para o nosso endpoint, é necessário preparar o JSON com informações básicas necessárias. \n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Tipos de informações no campos das requisições\",\n  \"body\": \"No JSON que deve ser enviado na requisição há dois tipos de campos: **obrigatórios** e **não obrigatórios**. \\n\\n Entretanto, gostaríamos de reforçar que, mesmo sendo possível enviar a requisição com os campos **não obrigatórios** em branco, é recomendável preencher alguns deles para facilitar a gestão e pesquisa das suas transações no nosso sistema.\"\n}\n[/block]\nInserimos diversos recursos na próxima seção para te auxiliar a preparar a sua requisição corretamente. Nela você poderá encontrar uma tabela com os campos e suas descrições, além de códigos de exemplo para serem usados como base ao montar sua requisição.\n\nApesar de alguns campos não estarem preenchidos nos códigos, é possível informá-los e isso só enriquece a sua experiência com a nossa solução!  Listamos todos os campos que vocês podem enviar na seção [Fazendo transações de cartão de crédito](doc:realizando-transacoes).\n\n**``IMPORTANTE``**: Os campos **obrigatórios** são os campos marcados como **``required``** nessa seção.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Simulador vs Ambiente de Produção\"\n}\n[/block]\nApesar da url : [https://transaction.stone.com.br](https://transaction.stone.com.br)  ser **dedicada** para nosso ambiente de produção, para que você conseguida efetuar transações de teste nós disponibilizamos um ``Simulador`` dentro do nosso ambiente de produção. Para isso, é ``necessário`` enviar na requisição o campo ``Options`` com a opção ``PaymentMethodCode = 1`` para que a transação seja tratada como teste !\n\n[block:callout]\n{\n  \"type\": \"danger\",\n  \"title\": \"Requisições para o Simulador\",\n  \"body\": \"**Exemplo em JSON do campo a ser adicionado para transação no Simulador**\\n\\n\\\"Options\\\": {\\n                \\\"PaymentMethodCode\\\": 1\\n                 }\"\n}\n[/block]\n\nCaso o campo ``Options`` não seja inserido, a transação **ocorrerá no ambiente de produção** já que o padrão ( default ) é o ``PaymentMethodCode = 0``.","excerpt":"Transações de cartão crédito","slug":"criando-transacoes","type":"basic","title":"Como criar transações","__v":0,"childrenPages":[]}

Como criar transações

Transações de cartão crédito

Com a MerchantKey em mãos você já está pronto para enviar transações utilizando o cartão de crédito. Visando te auxiliar de forma mais prática e intuitiva criamos um exemplo de transação com o cartão de crédito. Assim, podemos explicar como funciona o processo de envio de requisições, formatação do código e informações a serem enviadas para a gente.

Preparando uma requisição

Antes de enviar a transação de cartão de crédito para o nosso endpoint, é necessário preparar o JSON com informações básicas necessárias.

Tipos de informações no campos das requisições

No JSON que deve ser enviado na requisição há dois tipos de campos: obrigatórios e não obrigatórios.

Entretanto, gostaríamos de reforçar que, mesmo sendo possível enviar a requisição com os campos não obrigatórios em branco, é recomendável preencher alguns deles para facilitar a gestão e pesquisa das suas transações no nosso sistema.

Inserimos diversos recursos na próxima seção para te auxiliar a preparar a sua requisição corretamente. Nela você poderá encontrar uma tabela com os campos e suas descrições, além de códigos de exemplo para serem usados como base ao montar sua requisição.

Apesar de alguns campos não estarem preenchidos nos códigos, é possível informá-los e isso só enriquece a sua experiência com a nossa solução! Listamos todos os campos que vocês podem enviar na seção Fazendo transações de cartão de crédito.

IMPORTANTE: Os campos obrigatórios são os campos marcados como required nessa seção.

Simulador vs Ambiente de Produção

Apesar da url : https://transaction.stone.com.br ser dedicada para nosso ambiente de produção, para que você conseguida efetuar transações de teste nós disponibilizamos um Simulador dentro do nosso ambiente de produção. Para isso, é necessário enviar na requisição o campo Options com a opção PaymentMethodCode = 1 para que a transação seja tratada como teste !

Requisições para o Simulador

Exemplo em JSON do campo a ser adicionado para transação no Simulador

"Options": {
"PaymentMethodCode": 1
}

Caso o campo Options não seja inserido, a transação ocorrerá no ambiente de produção já que o padrão ( default ) é o PaymentMethodCode = 0.

{"_id":"5978f16bb8da85001f5081db","category":"5978f16bb8da85001f5081ce","parentDoc":null,"user":"55831751870ff41900de479e","project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["55f70357a7ceef0d00251c1c","560047121503430d007cc816","56058dbc7c8e580d0001b08b","56097f988aedf50d0004d121","560c18dbbf971337006e0bdd","560cb0be052c8e0d0014dc5b","564616d60c30fb2100ba3805","5661b77855e4450d00e62bf2","566b0cf6f625510d000e56f7","56bc9028752c130d008d1908","58a244be3dfce00f00e37483"],"next":{"pages":[],"description":""},"createdAt":"2015-07-28T23:07:40.651Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[]},"method":"post","results":{"codes":[{"language":"json","code":"{\n  \"ErrorReport\": null,\n  \"InternalTime\": 137,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"857a5a07-ff3c-46e3-946e-452e25f149eb\",\n  \"BoletoTransactionResultCollection\": [],\n  \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n  \"CreditCardTransactionResultCollection\": [\n    {\n      \"AcquirerMessage\": \"Simulator|Transação de simulação autorizada com sucesso\",\n      \"AcquirerName\": \"Simulator\",\n      \"AcquirerReturnCode\": \"0\",\n      \"AffiliationCode\": \"000000000\",\n      \"AmountInCents\": 10000,\n      \"AuthorizationCode\": \"168147\",\n      \"AuthorizedAmountInCents\": 10000,\n      \"CapturedAmountInCents\": 10000,\n      \"CapturedDate\": \"2015-12-04T19:51:11\",\n      \"CreditCard\": {\n        \"CreditCardBrand\": \"Visa\",\n        \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n        \"IsExpiredCreditCard\": false,\n        \"MaskedCreditCardNumber\": \"411111****1111\"\n      },\n      \"CreditCardOperation\": \"AuthAndCapture\",\n      \"CreditCardTransactionStatus\": \"Captured\",\n      \"DueDate\": null,\n      \"ExternalTime\": 0,\n      \"PaymentMethodName\": \"Simulator\",\n      \"RefundedAmountInCents\": null,\n      \"Success\": true,\n      \"TransactionIdentifier\": \"246844\",\n      \"TransactionKey\": \"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\",\n      \"TransactionKeyToAcquirer\": \"20ba05207d0944f8\",\n      \"TransactionReference\": \"1c65eaf7-df3c-4c7f-af63-f90fb6200996\",\n      \"UniqueSequentialNumber\": \"636606\",\n      \"VoidedAmountInCents\": null\n    }\n  ],\n  \"OrderResult\": {\n    \"CreateDate\": \"2015-12-04T19:51:11\",\n    \"OrderKey\": \"219d7581-78e2-4aa9-b708-b7c585780bfc\",\n    \"OrderReference\": \"NúmeroDoPedido\"\n  }\n}","status":201},{"code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"A bandeira Invalida atualmente não é suportada.\",\n        \"ErrorCode\": 400,\n        \"ErrorField\": \"CreditCardBrand\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 0,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"86765577-3600-40b5-b801-0aab23228566\",\n  \"BoletoTransactionResultCollection\": null,\n  \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n  \"CreditCardTransactionResultCollection\": null,\n  \"OrderResult\": null\n}","language":"json","status":400}]},"settings":"561f139acfc3610d00567176","auth":"required","params":[{"_id":"55b80b3caea7c8190058bb73","ref":"","in":"body","required":true,"desc":"Valor da transação em centavos. R$ 100,00 = 10000","default":"","type":"int","name":"CreditCardTransactionCollection[AmountInCents]"},{"_id":"55b80b3caea7c8190058bb72","ref":"","in":"body","required":true,"desc":"Bandeira do cartão do cliente","default":"","type":"string","name":"CreditCardTransactionCollection[CreditCard[CreditCardBrand]]"},{"_id":"55b80b3caea7c8190058bb71","ref":"","in":"body","required":true,"desc":"Número do cartão do cliente. Informar apenas números.","default":"","type":"string","name":"CreditCardTransactionCollection[CreditCard[CreditCardNumber]]"},{"_id":"55b80b3caea7c8190058bb70","ref":"","in":"body","required":true,"desc":"Mês de expiração do cartão","default":"","type":"int","name":"CreditCardTransactionCollection[CreditCard[ExpMonth]]"},{"_id":"55b80b3caea7c8190058bb6f","ref":"","in":"body","required":true,"desc":"Ano de expiração do cartão","default":"","type":"int","name":"CreditCardTransactionCollection[CreditCard[ExpYear]]"},{"_id":"55b80b3caea7c8190058bb6e","ref":"","in":"body","required":false,"desc":"Código de segurança do cartão","default":"","type":"int","name":"CreditCardTransactionCollection[CreditCard[SecurityCode]]"},{"_id":"55b80b3caea7c8190058bb6d","ref":"","in":"body","required":true,"desc":"Nome do portador do cartão","default":"","type":"string","name":"CreditCardTransactionCollection[CreditCard[HolderName]]"},{"_id":"55b80b3caea7c8190058bb6b","ref":"","in":"body","required":false,"desc":"Número de Parcelas","default":"","type":"int","name":"CreditCardTransactionCollection[InstallmentCount]"},{"_id":"55b80b3caea7c8190058bb69","ref":"","in":"body","required":false,"desc":"Identificador do pedido na sua base","default":"","type":"string","name":"Order[OrderReference]"}],"url":"/Sale"},"isReference":true,"order":2,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Cria a transação.\\nvar transaction = new CreditCardTransaction() {\\n    AmountInCents = 10000,\\n    CreditCard = new CreditCard() {\\n        CreditCardBrand = CreditCardBrandEnum.Visa,\\n        CreditCardNumber = \\\"4111111111111111\\\",\\n        ExpMonth = 10,\\n        ExpYear = 22,\\n        HolderName = \\\"LUKE SKYWALKER\\\",\\n        SecurityCode = \\\"123\\\"\\n    },\\n    InstallmentCount = 1\\n};\\n\\n// Cria requisição.\\nvar createSaleRequest = new CreateSaleRequest() {\\n    // Adiciona a transação na requisição.\\n    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { transaction }),\\n    Order = new Order() {\\n        OrderReference = \\\"NumeroDoPedido\\\"\\n    }\\n};\\n\\n// Coloque a sua MerchantKey aqui.\\nGuid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n// Cria o client que enviará a transação.\\nvar serviceClient = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Autoriza a transação e recebe a resposta do gateway.\\nvar httpResponse = serviceClient.Sale.Create(createSaleRequest);\\n\\nConsole.WriteLine(\\\"Código retorno: {0}\\\", httpResponse.HttpStatusCode);\\nConsole.WriteLine(\\\"Chave do pedido: {0}\\\", httpResponse.Response.OrderResult.OrderKey);\\nif (httpResponse.Response.CreditCardTransactionResultCollection != null) {\\n    Console.WriteLine(\\\"Status transação: {0}\\\", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\t\\n\\n    // Define a url utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\"); \\n    // Define a chave da loja\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria objeto requisição\\n    $createSaleRequest = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequest();\\n\\n    // Define dados da transação\\n    $createSaleRequest->addCreditCardTransaction()\\n        ->setAmountInCents(10000)\\n        ->setPaymentMethodCode(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\PaymentMethodEnum::SIMULATOR)\\n        ->setCreditCardOperation(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CreditCardOperationEnum::AUTH_AND_CAPTURE)\\n        ->getCreditCard()\\n\\t\\t\\t\\t->setCreditCardBrand(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CreditCardBrandEnum::VISA)\\n\\t\\t\\t\\t->setCreditCardNumber(\\\"4111111111111111\\\")\\n\\t\\t\\t\\t->setExpMonth(10)\\n\\t\\t\\t\\t->setExpYear(2022)\\n\\t\\t\\t\\t->setHolderName(\\\"LUKE SKYWALKER\\\")\\n\\t\\t\\t\\t->setSecurityCode(\\\"123\\\");\\n\\n    //Define dados do pedido\\n    $createSaleRequest->getOrder()\\n    ->setOrderReference('NumeroDopedido');\\n\\n    // Cria um objeto ApiClient\\n    $apiClient = new \\\\Gateway\\\\ApiClient();\\n\\n    // Faz a chamada para criação\\n    $response = $apiClient->createSale($createSaleRequest);\\n\\n    // Mapeia resposta\\n    $httpStatusCode = $response->isSuccess() ? 201 : 401;\\n    \\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\CreditCardError $error)\\n{\\n    $httpStatusCode = 400;\\n    $response = array(\\\"message\\\" => $error->getMessage());\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (\\\\Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally\\n{\\n    // Devolve resposta\\n    http_response_code($httpStatusCode);\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\\n?>\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# create credit card transaction object\\ncreditCardTransaction = Gateway::CreditCardTransaction.new\\n\\n# 100 reais in cents \\ncreditCardTransaction.AmountInCents = 10000\\ncreditCardTransaction.CreditCard.CreditCardBrand = 'Visa'\\ncreditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'\\ncreditCardTransaction.CreditCard.ExpMonth = 10\\ncreditCardTransaction.CreditCard.ExpYear = 22\\ncreditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'\\ncreditCardTransaction.CreditCard.SecurityCode = '123'\\ncreditCardTransaction.InstallmentCount = 1\\n\\n# creates request object for transaction creation\\ncreateSaleRequest = Gateway::CreateSaleRequest.new\\ncreateSaleRequest.CreditCardTransactionCollection << creditCardTransaction\\ncreateSaleRequest.Order.OrderReference = 'NumeroDoPedido'\\n\\n# make the request and returns a response hash\\nresponse = gateway.CreateSale(createSaleRequest)\\n\\n# prints the response\\nputs response\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# coding=utf-8\\n\\nfrom uuid import UUID\\nfrom data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\n\\n#Coleta os dados do cartão.\\ncreditcard_data = creditcard(creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2018,\\n                             security_code='123', holder_name='LUKE SKYWALKER')\\n\\n#Cria a transação.\\ntransaction_collection = [creditcard_transaction(10000, creditcard_data)]\\n\\n#Cria o numero do pedido\\noptions_request = order(order_reference='NumeroDoPedido')\\n\\n#Cria a request.\\nrequest = create_sale_request(creditcard_transaction_collection=transaction_collection, order=options_request)\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br\\\" \\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\nhttp_response = service_client.sale.create_with_request(request)\\n\\njson_response = http_response.json()\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja\\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria um cartão de crédito e define endereço de cobrança\\nCreditCard creditCard = new CreditCard();\\ncreditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);\\ncreditCard.setCreditCardNumber(\\\"4111111111111111\\\");\\ncreditCard.setExpMonth(10);\\ncreditCard.setExpYear(22);\\ncreditCard.setHolderName(\\\"LUKE SKYWALKER\\\");\\ncreditCard.setSecurityCode(\\\"123\\\");\\n\\n// Cria a transação de cartão de crédito e define cartão criado anteriormente\\nCreditCardTransaction creditCardTransaction = new CreditCardTransaction();\\ncreditCardTransaction.setAmountInCents(10000L);\\ncreditCardTransaction.setCreditCard(creditCard);\\ncreditCardTransaction.setInstallmentCount(1);\\n\\n// Cria o objeto order para adicionar o Order Reference\\nOrder order = new Order();\\norder.setOrderReference(\\\"NumeroDoPedido\\\");\\n\\n// Cria o Sale Request para enviar o objeto de request\\nCreateSaleRequest createSaleRequest = new CreateSaleRequest();\\ncreateSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());\\ncreateSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);\\ncreateSaleRequest.setOrder(order);\\n\\n// Cria o cliente que vai enviar a transação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\"); \\n\\n// Submete a transação e retorna a resposta do gateway\\nHttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse = serviceClient.getSale().Create(createSaleRequest);\",\n      \"language\": \"java\",\n      \"name\": null\n    },\n    {\n      \"code\": \"{\\n    \\\"CreditCardTransactionCollection\\\": [\\n        {\\n            \\\"AmountInCents\\\": 10000,\\n            \\\"CreditCard\\\": {\\n                \\\"CreditCardBrand\\\": \\\"Visa\\\",\\n                \\\"CreditCardNumber\\\": \\\"4111111111111111\\\",\\n                \\\"ExpMonth\\\": 10,\\n                \\\"ExpYear\\\": 22,\\n                \\\"HolderName\\\": \\\"LUKE SKYWALKER\\\",\\n                \\\"SecurityCode\\\": \\\"123\\\"\\n            },\\n            \\\"InstallmentCount\\\": 1\\n        }\\n    ],\\n    \\\"Order\\\": {\\n        \\\"OrderReference\\\": \\\"NumeroDoPedido\\\"\\n    }\\n}\\n\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nUm 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!\n\nPara facilitar, caso seu cliente passe a usar um sistema antifraude, detalhamos [Antifraude Stone](doc:antifraude) as informações do seu cliente que você pode adicionar na sua requisição.\n\n\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Pedido vs. Transação\",\n  \"body\": \"Apesar de serem termos semelhantes, saber a diferença entre pedido e transação é muito importante!\\n\\n Cada pedido pode ter uma ou mais transações e esse número pode variar com a forma de pagamento escolhida. Por exemplo, um pedido pode ter seu valor total dividido em três cartões diferentes, formando um total de três transações.\\n\\nO OrderReference (número de referência do pedido) **é o mesmo para as três transações**, mas há **três** TransactionReference (número de cada transação dentro do pedido) diferentes (um para cada transação/cartão).\"\n}\n[/block]\nSeguindo os exemplos acima, já fica mais fácil entender como enviar uma transação para o nosso Simulador, não é?\n\nAgora já é possível enviar transações para a gente! \n\nPorém, gostaríamos de lembrar que, alguns campos são **essenciais** para realizar uma transação e, caso não nos envie esses campos preenchidos, serão utilizados valores padrão. \n\nAlguns desses campos são: \n\n* O número de parcelas ``InstallmentCount`` - ``Padrão: 1``\n\n* Tipo de operação ``CreditCardOperation`` ([pré-autorização](doc:pre-autorizacao) ``AuthOnly`` ou autorização e captura instantânea) - ``Padrão: AuthAndCapture`` (Autorização e Captura Instantânea).\n[block:callout]\n{\n  \"type\": \"success\",\n  \"title\": \"Retentativa Automática\",\n  \"body\": \"Nossa equipe quer te ajudar a aumentar sua conversão e, para isso, oferecemos a **retentativa automática**. Ou seja, nós tentamos autorizar novamente suas transações em tempo real, caso a transação não seja autorizada na primeira tentativa.\"\n}\n[/block]\nQuando você enviar sua requisição, você deve esperar dois tipos de status da transação na resposta recebida: \n\n* `Captured` - se a transação for autorizada e capturada.\n \n*  `NotAuthorized` - se a transação não for autorizada. \n\nLembre-se que, por padrão, a transação é processada com autorização e captura automáticos (ou seja, com o campo **CreditCardOperation = AuthAndCapture**).\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Adaptando suas requisições\"\n}\n[/block]\nO examplo acima é referente ao request de uma transação básica (o mínimo de informações a serem enviadas para concluir uma venda ou cobrança). Você pode encontrar informações sobre como detalhar os demais campos que podem ser enviados na nossa seção [referências](doc:referencias).","excerpt":"Como enviar requisições de transação com cartão de crédito","slug":"realizando-transacoes","type":"post","title":"Transações com cartão de crédito","__v":0,"childrenPages":[]}

postTransações com cartão de crédito

Como enviar requisições de transação com cartão de crédito

Body Params

CreditCardTransactionCollection[AmountInCents]:
required
integer
Valor da transação em centavos. R$ 100,00 = 10000
CreditCardTransactionCollection[CreditCard[CreditCardBrand]:
required
string
Bandeira do cartão do cliente
CreditCardTransactionCollection[CreditCard[CreditCardNumber]:
required
string
Número do cartão do cliente. Informar apenas números.
CreditCardTransactionCollection[CreditCard[ExpMonth]:
required
integer
Mês de expiração do cartão
CreditCardTransactionCollection[CreditCard[ExpYear]:
required
integer
Ano de expiração do cartão
CreditCardTransactionCollection[CreditCard[SecurityCode]:
integer
Código de segurança do cartão
CreditCardTransactionCollection[CreditCard[HolderName]:
required
string
Nome do portador do cartão
CreditCardTransactionCollection[InstallmentCount]:
integer
Número de Parcelas
Order[OrderReference]:
string
Identificador do pedido na sua base
// 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("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

// 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) {
    Console.WriteLine("Status transação: {0}", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');	

    // Define a url utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br"); 
    // Define a chave da loja
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria objeto requisição
    $createSaleRequest = new \Gateway\One\DataContract\Request\CreateSaleRequest();

    // Define dados da transação
    $createSaleRequest->addCreditCardTransaction()
        ->setAmountInCents(10000)
        ->setPaymentMethodCode(\Gateway\One\DataContract\Enum\PaymentMethodEnum::SIMULATOR)
        ->setCreditCardOperation(\Gateway\One\DataContract\Enum\CreditCardOperationEnum::AUTH_AND_CAPTURE)
        ->getCreditCard()
				->setCreditCardBrand(\Gateway\One\DataContract\Enum\CreditCardBrandEnum::VISA)
				->setCreditCardNumber("4111111111111111")
				->setExpMonth(10)
				->setExpYear(2022)
				->setHolderName("LUKE SKYWALKER")
				->setSecurityCode("123");

    //Define dados do pedido
    $createSaleRequest->getOrder()
    ->setOrderReference('NumeroDopedido');

    // Cria um objeto ApiClient
    $apiClient = new \Gateway\ApiClient();

    // Faz a chamada para criação
    $response = $apiClient->createSale($createSaleRequest);

    // Mapeia resposta
    $httpStatusCode = $response->isSuccess() ? 201 : 401;
    
}
catch (\Gateway\One\DataContract\Report\CreditCardError $error)
{
    $httpStatusCode = 400;
    $response = array("message" => $error->getMessage());
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (\Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    // Devolve resposta
    http_response_code($httpStatusCode);
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
?>
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# create credit card transaction object
creditCardTransaction = Gateway::CreditCardTransaction.new

# 100 reais in cents 
creditCardTransaction.AmountInCents = 10000
creditCardTransaction.CreditCard.CreditCardBrand = 'Visa'
creditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'
creditCardTransaction.CreditCard.ExpMonth = 10
creditCardTransaction.CreditCard.ExpYear = 22
creditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'
creditCardTransaction.CreditCard.SecurityCode = '123'
creditCardTransaction.InstallmentCount = 1

# creates request object for transaction creation
createSaleRequest = Gateway::CreateSaleRequest.new
createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
createSaleRequest.Order.OrderReference = 'NumeroDoPedido'

# make the request and returns a response hash
response = gateway.CreateSale(createSaleRequest)

# prints the response
puts response
# coding=utf-8

from uuid import UUID
from data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order
from stoneEcommercePython  import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum

#Coleta os dados do cartão.
creditcard_data = creditcard(creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2018,
                             security_code='123', holder_name='LUKE SKYWALKER')

#Cria a transação.
transaction_collection = [creditcard_transaction(10000, creditcard_data)]

#Cria o numero do pedido
options_request = order(order_reference='NumeroDoPedido')

#Cria a request.
request = create_sale_request(creditcard_transaction_collection=transaction_collection, order=options_request)

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br" 

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

http_response = service_client.sale.create_with_request(request)

json_response = http_response.json()
// Define loja
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria um cartão de crédito e define endereço de cobrança
CreditCard creditCard = new CreditCard();
creditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);
creditCard.setCreditCardNumber("4111111111111111");
creditCard.setExpMonth(10);
creditCard.setExpYear(22);
creditCard.setHolderName("LUKE SKYWALKER");
creditCard.setSecurityCode("123");

// Cria a transação de cartão de crédito e define cartão criado anteriormente
CreditCardTransaction creditCardTransaction = new CreditCardTransaction();
creditCardTransaction.setAmountInCents(10000L);
creditCardTransaction.setCreditCard(creditCard);
creditCardTransaction.setInstallmentCount(1);

// Cria o objeto order para adicionar o Order Reference
Order order = new Order();
order.setOrderReference("NumeroDoPedido");

// Cria o Sale Request para enviar o objeto de request
CreateSaleRequest createSaleRequest = new CreateSaleRequest();
createSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());
createSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);
createSaleRequest.setOrder(order);

// Cria o cliente que vai enviar a transação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br"); 

// Submete a transação e retorna a resposta do gateway
HttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse = serviceClient.getSale().Create(createSaleRequest);
{
    "CreditCardTransactionCollection": [
        {
            "AmountInCents": 10000,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "CreditCardNumber": "4111111111111111",
                "ExpMonth": 10,
                "ExpYear": 22,
                "HolderName": "LUKE SKYWALKER",
                "SecurityCode": "123"
            },
            "InstallmentCount": 1
        }
    ],
    "Order": {
        "OrderReference": "NumeroDoPedido"
    }
}

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!

Para facilitar, caso seu cliente passe a usar um sistema antifraude, detalhamos Antifraude Stone as informações do seu cliente que você pode adicionar na sua requisição.

Pedido vs. Transação

Apesar de serem termos semelhantes, saber a diferença entre pedido e transação é muito importante!

Cada pedido pode ter uma ou mais transações e esse número pode variar com a forma de pagamento escolhida. Por exemplo, um pedido pode ter seu valor total dividido em três cartões diferentes, formando um total de três transações.

O OrderReference (número de referência do pedido) é o mesmo para as três transações, mas há três TransactionReference (número de cada transação dentro do pedido) diferentes (um para cada transação/cartão).

Seguindo os exemplos acima, já fica mais fácil entender como enviar uma transação para o nosso Simulador, não é?

Agora já é possível enviar transações para a gente!

Porém, gostaríamos de lembrar que, alguns campos são essenciais para realizar uma transação e, caso não nos envie esses campos preenchidos, serão utilizados valores padrão.

Alguns desses campos são:

  • O número de parcelas InstallmentCount - Padrão: 1

  • Tipo de operação CreditCardOperation (pré-autorização AuthOnly ou autorização e captura instantânea) - Padrão: AuthAndCapture (Autorização e Captura Instantânea).

Retentativa Automática

Nossa equipe quer te ajudar a aumentar sua conversão e, para isso, oferecemos a retentativa automática. Ou seja, nós tentamos autorizar novamente suas transações em tempo real, caso a transação não seja autorizada na primeira tentativa.

Quando você enviar sua requisição, você deve esperar dois tipos de status da transação na resposta recebida:

  • Captured - se a transação for autorizada e capturada.

  • NotAuthorized - se a transação não for autorizada.

Lembre-se que, por padrão, a transação é processada com autorização e captura automáticos (ou seja, com o campo CreditCardOperation = AuthAndCapture).

Adaptando suas requisições

O examplo acima é referente ao request de uma transação básica (o mínimo de informações a serem enviadas para concluir uma venda ou cobrança). Você pode encontrar informações sobre como detalhar os demais campos que podem ser enviados na nossa seção referências.

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
  "ErrorReport": null,
  "InternalTime": 137,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "857a5a07-ff3c-46e3-946e-452e25f149eb",
  "BoletoTransactionResultCollection": [],
  "BuyerKey": "00000000-0000-0000-0000-000000000000",
  "CreditCardTransactionResultCollection": [
    {
      "AcquirerMessage": "Simulator|Transação de simulação autorizada com sucesso",
      "AcquirerName": "Simulator",
      "AcquirerReturnCode": "0",
      "AffiliationCode": "000000000",
      "AmountInCents": 10000,
      "AuthorizationCode": "168147",
      "AuthorizedAmountInCents": 10000,
      "CapturedAmountInCents": 10000,
      "CapturedDate": "2015-12-04T19:51:11",
      "CreditCard": {
        "CreditCardBrand": "Visa",
        "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
        "IsExpiredCreditCard": false,
        "MaskedCreditCardNumber": "411111****1111"
      },
      "CreditCardOperation": "AuthAndCapture",
      "CreditCardTransactionStatus": "Captured",
      "DueDate": null,
      "ExternalTime": 0,
      "PaymentMethodName": "Simulator",
      "RefundedAmountInCents": null,
      "Success": true,
      "TransactionIdentifier": "246844",
      "TransactionKey": "20ba0520-7d09-44f8-8fbc-e4329e2b18d5",
      "TransactionKeyToAcquirer": "20ba05207d0944f8",
      "TransactionReference": "1c65eaf7-df3c-4c7f-af63-f90fb6200996",
      "UniqueSequentialNumber": "636606",
      "VoidedAmountInCents": null
    }
  ],
  "OrderResult": {
    "CreateDate": "2015-12-04T19:51:11",
    "OrderKey": "219d7581-78e2-4aa9-b708-b7c585780bfc",
    "OrderReference": "NúmeroDoPedido"
  }
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "A bandeira Invalida atualmente não é suportada.",
        "ErrorCode": 400,
        "ErrorField": "CreditCardBrand",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 0,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "86765577-3600-40b5-b801-0aab23228566",
  "BoletoTransactionResultCollection": null,
  "BuyerKey": "00000000-0000-0000-0000-000000000000",
  "CreditCardTransactionResultCollection": null,
  "OrderResult": null
}


{"_id":"5978f16bb8da85001f5081dc","category":"5978f16bb8da85001f5081ce","parentDoc":null,"user":"57ea79f61780cd170064f273","project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-10-20T17:29:39.236Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":3,"body":"Para evitar que fraudes ocorram em transações via boleto a FEBRABAN (Federação Brasileira de Bancos) decidiu modernizar sua plataforma de geração de boletos e tornar obrigatório o registro dos mesmos.\n\nTodos os boletos emitidos para a Stone serão registrados.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Fluxo do Registro de Boletos\"\n}\n[/block]\nNós enviamos um arquivo ao banco informando os boletos que foram gerados e os dados dos compradores para que o registro dos mesmos possa ser concluído no sistema do banco. O nome desse arquivo é \"**remessa**\" e será veiculado pela **Stone**.\n\nO prazo máximo para que um boleto seja registrado é de 24h depois do pagamento do mesmo. Enquanto o boleto não é registrado o dinheiro fica retido no banco. O valor referente ao boleto só é liberado pelo banco quando a registro do boleto é concluído.\n\nNosso time envia aos bancos de 4h em 4h um arquivo que os informa quais boletos foram gerados nesse intervalo de tempo.\n\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Liquidação de Boletos\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Taxas e Prazos para pagamento dos boletos\",\n  \"body\": \"O produto de **boleto** possuí uma taxa de emissão **fixa** que deve ser negociada com a Stone. Esse valor será debitado normalmente no processo de \\\"**Liquidação**\\\" cujo prazo para ocorrência é de **dois a trinta dias**!\"\n}\n[/block]","excerpt":"Saiba mais sobre o registro de boletos","slug":"registro-de-boletos","type":"basic","title":"Registro de Boletos","__v":0,"childrenPages":[]}

Registro de Boletos

Saiba mais sobre o registro de boletos

Para evitar que fraudes ocorram em transações via boleto a FEBRABAN (Federação Brasileira de Bancos) decidiu modernizar sua plataforma de geração de boletos e tornar obrigatório o registro dos mesmos.

Todos os boletos emitidos para a Stone serão registrados.

Fluxo do Registro de Boletos

Nós enviamos um arquivo ao banco informando os boletos que foram gerados e os dados dos compradores para que o registro dos mesmos possa ser concluído no sistema do banco. O nome desse arquivo é "remessa" e será veiculado pela Stone.

O prazo máximo para que um boleto seja registrado é de 24h depois do pagamento do mesmo. Enquanto o boleto não é registrado o dinheiro fica retido no banco. O valor referente ao boleto só é liberado pelo banco quando a registro do boleto é concluído.

Nosso time envia aos bancos de 4h em 4h um arquivo que os informa quais boletos foram gerados nesse intervalo de tempo.

Liquidação de Boletos

Taxas e Prazos para pagamento dos boletos

O produto de boleto possuí uma taxa de emissão fixa que deve ser negociada com a Stone. Esse valor será debitado normalmente no processo de "Liquidação" cujo prazo para ocorrência é de dois a trinta dias!

{"_id":"5978f16bb8da85001f5081dd","category":"5978f16bb8da85001f5081ce","parentDoc":null,"user":"55831751870ff41900de479e","project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["55f70125a7ceef0d00251c17","560049880c703d1900953057","5605908ad895120d00a40b31","5609843aa7b2590d0089ebfc","560c181cb3e65b2300a120b9","560cb0e3ac2859170013fabf","5619211388fdee0d00fb9c4e","56461701da14e70d0027cde0","566215738036b40d0073883c","5665b79e3889610d0008a286","5669907fc3de130d004417a9","566b1cfc47ebaf1900fe6661","56bc9097e0b1580d00b5d0ea"],"next":{"pages":[],"description":""},"createdAt":"2015-07-28T23:10:13.019Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[]},"method":"post","results":{"codes":[{"status":201,"name":"","code":"{\n  \"ErrorReport\": null,\n  \"InternalTime\": 81,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"302f50f0-a653d-43f3-bf3a-5812ddfe6a5c\",\n  \"BoletoTransactionResultCollection\": [\n    {\n      \"AcquirerReturnCode\": null,\n      \"AcquirerReturnMessage\": null,\n      \"AmountInCents\": 29800,\n      \"Barcode\": \"34191.09065 20674.712938 83456.900009 6 69240000029800\",\n      \"BoletoTransactionStatus\": \"Generated\",\n      \"BoletoUrl\": \"https://transaction.stone.com.br/Boleto/ViewBoleto.aspx?5b85dda5-d1bb-4bcd-a5f3-0db4ced8d45e\",\n      \"DocumentNumber\": \"315273\",\n      \"NossoNumero\": \"06206847\",\n      \"Success\": true,\n      \"TransactionKey\": \"5b85dda5-d1bb-4bcd-a3f3-0db3ced3d79e\",\n      \"TransactionReference\": \"57dc301e62687\"\n    }\n  ],\n  \"BuyerKey\": \"53870539-ed33-4743-a593-add77bd0630c\",\n  \"CreditCardTransactionResultCollection\": [],\n  \"OrderResult\": {\n    \"CreateDate\": \"2016-09-16T17:47:28\",\n    \"OrderKey\": \"20cfa51f-3333-4136-93b3-220cd433fae2\",\n    \"OrderReference\": \"656500b8\"\n  }\n}","language":"json"},{"language":"json","status":400,"name":"","code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"O valor do boleto deve ser maior que zero\",\n        \"ErrorCode\": 400,\n        \"ErrorField\": \"BoletoTransaction.AmountInCents\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 1,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"02fe6110-8197-447d-9f9f-a252707f63d8\",\n  \"BoletoTransactionResultCollection\": null,\n  \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n  \"CreditCardTransactionResultCollection\": null,\n  \"OrderResult\": null\n}"}]},"settings":"561f139acfc3610d00567176","auth":"required","params":[{"_id":"55b80b3caea7c8190058bb73","ref":"","in":"body","required":true,"desc":"Valor do boleto em centavos. R$ 1,00 = 100","default":"","type":"int","name":"BoletoTransactionCollection[AmountInCents]"},{"_id":"55b80b3caea7c8190058bb72","ref":"","in":"body","required":false,"desc":"**033** (fixo)","default":"","type":"string","name":"BoletoTransactionCollection[BankNumber]"},{"_id":"55b80b3caea7c8190058bb71","ref":"","in":"body","required":false,"desc":"Número do documento no boleto","default":"","type":"string","name":"BoletoTransactionCollection[DocumentNumber]"},{"_id":"55b80b3caea7c8190058bb6a","ref":"","in":"body","required":false,"desc":"Instruções que serão impressas no boleto. Esse campo é utilizado para instruir o caixa do banco ao receber o pagamento do boleto. Podem ser registradas por exemplo cobranças de multa e juros","default":"","type":"string","name":"BoletoTransactionCollection[Instructions]"},{"_id":"55b80b3caea7c8190058bb69","ref":"","in":"body","required":false,"desc":"Identificador do pedido na sua base","default":"","type":"datetime","name":"BoletoTransactionCollection[Options[TransactionDateInMerchant]]"},{"_id":"55b80b3caea7c8190058bb68","ref":"","in":"body","required":false,"desc":"Dias para o vencimento do boleto","default":"","type":"int","name":"BoletoTransactionCollectionOptions[DaysToAddInBoletoExpirationDate]]"},{"_id":"55b8ecb884034a0d00e731a5","ref":"","in":"body","required":false,"desc":"Identificador do pedido na sua base","default":"","type":"string","name":"Order[OrderReference]"},{"_id":"58079b61ad246319004d8849","ref":"","in":"body","required":true,"desc":"Tipo de endereço - Residencial","default":"","type":"string","name":"AddressCollection[AddressType]"},{"_id":"58079b61ad246319004d8848","ref":"","in":"body","required":false,"desc":"Complemento do endereço","default":"","type":"string","name":"AddressCollection[Complement]"},{"_id":"58079b61ad246319004d8847","ref":"","in":"body","required":true,"desc":"Cidade do comprador","default":"","type":"string","name":"AddressCollection[City]"},{"_id":"58079b61ad246319004d8846","ref":"","in":"body","required":true,"desc":"País do comprador","default":"","type":"string","name":"AddressCollection[Country]"},{"_id":"58079b61ad246319004d8845","ref":"","in":"body","required":true,"desc":"Bairro do comprador","default":"","type":"string","name":"AddressCollection[District]"},{"_id":"58079b61ad246319004d8844","ref":"","in":"body","required":true,"desc":"Número da residência do comprador","default":"","type":"string","name":"AddressCollection[Number]"},{"_id":"58079b61ad246319004d8843","ref":"","in":"body","required":true,"desc":"Estado do comprador","default":"","type":"string","name":"AddressCollection[State]"},{"_id":"58079b61ad246319004d8842","ref":"","in":"body","required":true,"desc":"Rua do comprador","default":"","type":"string","name":"AddressCollection[Street]"},{"_id":"58079b61ad246319004d8841","ref":"","in":"body","required":true,"desc":"CEP do comprador","default":"","type":"string","name":"AddressCollection[ZipCode]"},{"_id":"58079b61ad246319004d8840","ref":"","in":"body","required":true,"desc":"CPF ou CNPJ do comprador","default":"","type":"string","name":"Buyer[DocumentNumber]"},{"_id":"58079b61ad246319004d883f","ref":"","in":"body","required":true,"desc":"Tipo do documento - CPF ou CNPJ","default":"","type":"string","name":"Buyer[DocumentType]"},{"_id":"58079b61ad246319004d883e","ref":"","in":"body","required":true,"desc":"Nome do comprador","default":"","type":"string","name":"Buyer[Name]"},{"_id":"58079b61ad246319004d883d","ref":"","in":"body","required":true,"desc":"Tipo do comprador - Pessoa Física ou Jurídica","default":"","type":"string","name":"Buyer[PersonType]"}],"url":"/Sale"},"isReference":true,"order":4,"body":"[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"BankNumber\",\n  \"body\": \"Atualmente todos os boletos emitidos para a **Stone** serão criados pelo banco **Santander**. Desta forma o campo [**BankNumber**](http://gateway.stone.com.br/docs/enumera%C3%A7%C3%B5es#section-banknumber) deve conter o valor **033**.\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Cria a transação.\\nvar transaction = new BoletoTransaction() {\\n    AmountInCents = 10000,\\n    BankNumber = \\\"033\\\",\\n    DocumentNumber = \\\"12345678901\\\",\\n    Instructions = \\\"Pagar antes do vencimento\\\",\\n    Options = new BoletoTransactionOptions() {\\n        DaysToAddInBoletoExpirationDate = 5\\n    }\\n};\\n\\n// Cria requisição.\\nvar createSaleRequest = new CreateSaleRequest() {\\n    // Adiciona a transação na requisição.\\n    BoletoTransactionCollection = new Collection<BoletoTransaction>(new BoletoTransaction[] { transaction }),\\n    Order = new Order() {\\n        OrderReference = \\\"NumeroDoPedido\\\"\\n    }\\n};\\n\\n// Coloque a sua MerchantKey aqui.\\nGuid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n// Cria o client que enviará a transação.\\nvar serviceClient = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Autoriza a transação e recebe a resposta do gateway.\\nvar httpResponse = serviceClient.Sale.Create(createSaleRequest);\\n\\nConsole.WriteLine(\\\"Código retorno: {0}\\\", httpResponse.HttpStatusCode);\\nConsole.WriteLine(\\\"Chave do pedido: {0}\\\", httpResponse.Response.OrderResult.OrderKey);\\nif (httpResponse.Response.BoletoTransactionResultCollection != null) {\\n    Console.WriteLine(\\\"Url do boleto: {0}\\\", httpResponse.Response.BoletoTransactionResultCollection.FirstOrDefault().BoletoUrl);\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '\\\\vendor\\\\autoload.php');\\n\\n    // Define a url utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\"); \\n\\n    // Define a chave de loja\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria a requisição\\n    $createSaleRequest = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequest();\\n\\n    // Cria objeto de transação de boleto\\n    $boletoTransaction = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequestData\\\\BoletoTransaction();\\n    $createSaleRequest->addBoletoTransaction($boletoTransaction);\\n    $boletoTransaction\\n    ->setAmountInCents(10000)\\n    //A SDK já referência o número do banco a partir de um ENUM\\n    ->setBankNumber(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\BankEnum::ITAU)\\n    ->setDocumentNumber(\\\"12345678901\\\")\\n    ->setInstructions(\\\"Pagar antes do vencimento\\\")\\n    ->getOptions()\\n    ->setDaysToAddInBoletoExpirationDate(5);\\n\\n    //Define dados do pedido\\n    $createSaleRequest->getOrder()\\n    ->setOrderReference('NumeroDoPedido');\\n    \\n    // Cria um objeto ApiClient\\n    $client = new Gateway\\\\ApiClient();\\n\\n    // Faz a chamada para a criação da transação\\n    $response = $client->createSale($createSaleRequest);\\n\\n    // Mapeia resposta\\n    $httpStatusCode = $response->isSuccess() ? 201 : 401;\\n  \\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $httpStatusCode = 400;\\n    $response = array(\\\"message\\\" => $error->getMessage());\\n}\\ncatch (Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally {\\n    // Devolve resposta\\n    http_response_code($httpStatusCode);\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\\n?>\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# creates boleto transaction object\\nboletoTransaction = Gateway::BoletoTransaction.new\\n\\n# 100 reais in cents\\nboletoTransaction.AmountInCents = 10000\\nboletoTransaction.BankNumber = '033'\\nboletoTransaction.DocumentNumber = '12345678901'\\nboletoTransaction.Instructions = 'Pagar antes do vencimento'\\nboletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5\\n\\n# creates request object for transaction creation\\ncreateSaleRequest = Gateway::CreateSaleRequest.new\\n\\n# adds to the boleto transaction collection\\ncreateSaleRequest.BoletoTransactionCollection << boletoTransaction\\ncreateSaleRequest.Order.OrderReference = 'NumeroDoPedido'\\n\\n# make the request and returns a response hash\\nresponse = gateway.CreateSale(createSaleRequest)\\n\\n# prints the response\\nputs response\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# coding=utf-8\\n\\nfrom uuid import UUID\\nfrom data_contracts import create_sale_request, boleto_transaction_options, boleto_transaction, order\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\n\\n# Define o tipo de moeda e a quantidade de dias para a expiracao do boleto\\nboleto_options = boleto_transaction_options('BRL', 5)\\n\\ntransaction_collection = [ boleto_transaction(10000, bank_number = '033', document_number='12345678901', instructions='Pagar antes do vencimento', options = boleto_options)]\\n\\n#Cria o numero do pedido\\noptions_request = order(order_reference='NumeroDoPedido')\\n\\nrequest = create_sale_request(boleto_transaction_collection=transaction_collection, order=options_request)\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br\\\" \\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\nhttp_response = service_client.sale.create_with_request(create_sale_request=request)\\n\\njson_response = http_response.json()\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja\\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria um objeto de transação de boleto\\nBoletoTransaction boletoTransaction = new BoletoTransaction();\\nboletoTransaction.setAmountInCents(10000L);\\nboletoTransaction.setBankNumber(\\\"033\\\");\\nboletoTransaction.setDocumentNumber(\\\"12345678901\\\");\\nboletoTransaction.setInstructions(\\\"Pagar antes do vencimento\\\");\\n\\n// Cria o objeto de options\\nBoletoTransactionOptions boletoTransactionOptions = new BoletoTransactionOptions();\\nboletoTransactionOptions.setDaysToAddInBoletoExpirationDate(5);\\nboletoTransaction.setOptions(boletoTransactionOptions);\\n\\n// Cria o objeto order para adicionar o Order Reference\\nOrder order = new Order();\\norder.setOrderReference(\\\"NumeroDoPedido\\\");\\n\\n// Cria o Sale Request para enviar o objeto de request\\nCreateSaleRequest createSaleRequest = new CreateSaleRequest();\\ncreateSaleRequest.setBoletoTransactionCollection(new ArrayList<>());\\ncreateSaleRequest.getBoletoTransactionCollection().add(boletoTransaction);\\ncreateSaleRequest.setOrder(order);\\n\\n// Cria o cliente que vai enviar a transação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\"); \\n\\n// Submete a transação e retorna a resposta do gateway\\nHttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse = serviceClient.getSale().Create(createSaleRequest);\\n\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"\\\"BoletoTransactionCollection\\\": [\\n        {\\n            \\\"AmountInCents\\\": 10000,\\n            \\\"BankNumber\\\": \\\"237\\\",\\n            \\\"Instructions\\\": \\\"Pagar antes do vencimento\\\",\\n            \\\"Options\\\": {\\n                \\\"DaysToAddInBoletoExpirationDate\\\": 5,\\n              \\t\\\"PaymentMethodCode\\\": 1\\n            },\\n            \\\"TransactionReference\\\": \\\"BoletoComBuyerRemessa\\\"\\n        }\\n    ],\\n    \\\"Buyer\\\": {\\n        \\\"AddressCollection\\\": [\\n            {\\n                \\\"AddressType\\\": \\\"Residential\\\",\\n                \\\"City\\\": \\\"Tatooine\\\",\\n                \\\"Complement\\\": \\\"\\\",\\n                \\\"Country\\\": \\\"Brazil\\\",\\n                \\\"District\\\": \\\"Mos Eisley\\\",\\n                \\\"Number\\\": \\\"123\\\",\\n                \\\"State\\\": \\\"RJ\\\",\\n                \\\"Street\\\": \\\"Mos Eisley Cantina\\\",\\n                \\\"ZipCode\\\": \\\"20001000\\\"\\n            }\\n        ],\\n        \\\"DocumentNumber\\\": \\\"12345678901\\\",\\n        \\\"DocumentType\\\": \\\"CPF\\\",\\n        \\\"Name\\\": \\\"Luke Skywalker\\\",\\n        \\\"PersonType\\\": \\\"Person\\\"\\n    },\\n    \\\"Order\\\": {\\n        \\\"OrderReference\\\": \\\"BoletoComBuyerRemessa\\\"\\n    }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nSeguindo os exemplos acima você pode criar e enviar uma requisição de boleto para nosso ambiente de produção.\n\nDepois do processo de conciliação, você poderá receber três tipos de status de transação:\n\n* `Paid` - Se o boleto for pago corretamente\n\n* `UnderPaid` - Se o valor pago for inferior ao valor do boleto\n\n* `OverPaid` - Se o valor pago for superior ao valor do boleto\n\n**Caso você escolha não usar** o recurso de conciliação, os seus boletos apresentarão sempre o status **`Generated`**.\n\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Adaptando seus requests de boleto\"\n}\n[/block]\nO exemplo acima é referente ao pedido de criação (request) de um boleto básico ( mínimo necessário de informações para que o boleto possa ser gerado). Além dos dados ilustrados no exemplo, é possivel enviar outros dados como, por exemplo:\n\n* **Informações do comprador - Buyer**\n\n* **Informações do carrinho de compra - ShoppingCart**\n\nPara saber mais sobre outras dados (tags) que podem ser enviadas é só acessar a seção [referências](doc:referencias).","excerpt":"Como gerar boletos via API","slug":"boleto","type":"post","title":"Criando Boletos","__v":0,"childrenPages":[]}

postCriando Boletos

Como gerar boletos via API

Body Params

BoletoTransactionCollection[AmountInCents]:
required
integer
Valor do boleto em centavos. R$ 1,00 = 100
BoletoTransactionCollection[BankNumber]:
string
**033** (fixo)
BoletoTransactionCollection[DocumentNumber]:
string
Número do documento no boleto
BoletoTransactionCollection[Instructions]:
string
Instruções que serão impressas no boleto. Esse campo é utilizado para instruir o caixa do banco ao receber o pagamento do boleto. Podem ser registradas por exemplo cobranças de multa e juros
BoletoTransactionCollection[Options[TransactionDateInMerchant]:
datetime
Identificador do pedido na sua base
BoletoTransactionCollectionOptions[DaysToAddInBoletoExpirationDate]:
integer
Dias para o vencimento do boleto
Order[OrderReference]:
string
Identificador do pedido na sua base
AddressCollection[AddressType]:
required
string
Tipo de endereço - Residencial
AddressCollection[Complement]:
string
Complemento do endereço
AddressCollection[City]:
required
string
Cidade do comprador
AddressCollection[Country]:
required
string
País do comprador
AddressCollection[District]:
required
string
Bairro do comprador
AddressCollection[Number]:
required
string
Número da residência do comprador
AddressCollection[State]:
required
string
Estado do comprador
AddressCollection[Street]:
required
string
Rua do comprador
AddressCollection[ZipCode]:
required
string
CEP do comprador
Buyer[DocumentNumber]:
required
string
CPF ou CNPJ do comprador
Buyer[DocumentType]:
required
string
Tipo do documento - CPF ou CNPJ
Buyer[Name]:
required
string
Nome do comprador
Buyer[PersonType]:
required
string
Tipo do comprador - Pessoa Física ou Jurídica

BankNumber

Atualmente todos os boletos emitidos para a Stone serão criados pelo banco Santander. Desta forma o campo BankNumber deve conter o valor 033.

// Cria a transação.
var transaction = new BoletoTransaction() {
    AmountInCents = 10000,
    BankNumber = "033",
    DocumentNumber = "12345678901",
    Instructions = "Pagar antes do vencimento",
    Options = new BoletoTransactionOptions() {
        DaysToAddInBoletoExpirationDate = 5
    }
};

// Cria requisição.
var createSaleRequest = new CreateSaleRequest() {
    // Adiciona a transação na requisição.
    BoletoTransactionCollection = new Collection<BoletoTransaction>(new BoletoTransaction[] { transaction }),
    Order = new Order() {
        OrderReference = "NumeroDoPedido"
    }
};

// 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, 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.BoletoTransactionResultCollection != null) {
    Console.WriteLine("Url do boleto: {0}", httpResponse.Response.BoletoTransactionResultCollection.FirstOrDefault().BoletoUrl);
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '\vendor\autoload.php');

    // Define a url utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br"); 

    // Define a chave de loja
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria a requisição
    $createSaleRequest = new \Gateway\One\DataContract\Request\CreateSaleRequest();

    // Cria objeto de transação de boleto
    $boletoTransaction = new \Gateway\One\DataContract\Request\CreateSaleRequestData\BoletoTransaction();
    $createSaleRequest->addBoletoTransaction($boletoTransaction);
    $boletoTransaction
    ->setAmountInCents(10000)
    //A SDK já referência o número do banco a partir de um ENUM
    ->setBankNumber(\Gateway\One\DataContract\Enum\BankEnum::ITAU)
    ->setDocumentNumber("12345678901")
    ->setInstructions("Pagar antes do vencimento")
    ->getOptions()
    ->setDaysToAddInBoletoExpirationDate(5);

    //Define dados do pedido
    $createSaleRequest->getOrder()
    ->setOrderReference('NumeroDoPedido');
    
    // Cria um objeto ApiClient
    $client = new Gateway\ApiClient();

    // Faz a chamada para a criação da transação
    $response = $client->createSale($createSaleRequest);

    // Mapeia resposta
    $httpStatusCode = $response->isSuccess() ? 201 : 401;
  
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = 400;
    $response = array("message" => $error->getMessage());
}
catch (Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally {
    // Devolve resposta
    http_response_code($httpStatusCode);
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
?>
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# creates boleto transaction object
boletoTransaction = Gateway::BoletoTransaction.new

# 100 reais in cents
boletoTransaction.AmountInCents = 10000
boletoTransaction.BankNumber = '033'
boletoTransaction.DocumentNumber = '12345678901'
boletoTransaction.Instructions = 'Pagar antes do vencimento'
boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5

# creates request object for transaction creation
createSaleRequest = Gateway::CreateSaleRequest.new

# adds to the boleto transaction collection
createSaleRequest.BoletoTransactionCollection << boletoTransaction
createSaleRequest.Order.OrderReference = 'NumeroDoPedido'

# make the request and returns a response hash
response = gateway.CreateSale(createSaleRequest)

# prints the response
puts response
# coding=utf-8

from uuid import UUID
from data_contracts import create_sale_request, boleto_transaction_options, boleto_transaction, order
from stoneEcommercePython  import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum

# Define o tipo de moeda e a quantidade de dias para a expiracao do boleto
boleto_options = boleto_transaction_options('BRL', 5)

transaction_collection = [ boleto_transaction(10000, bank_number = '033', document_number='12345678901', instructions='Pagar antes do vencimento', options = boleto_options)]

#Cria o numero do pedido
options_request = order(order_reference='NumeroDoPedido')

request = create_sale_request(boleto_transaction_collection=transaction_collection, order=options_request)

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br" 

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

http_response = service_client.sale.create_with_request(create_sale_request=request)

json_response = http_response.json()
// Define loja
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria um objeto de transação de boleto
BoletoTransaction boletoTransaction = new BoletoTransaction();
boletoTransaction.setAmountInCents(10000L);
boletoTransaction.setBankNumber("033");
boletoTransaction.setDocumentNumber("12345678901");
boletoTransaction.setInstructions("Pagar antes do vencimento");

// Cria o objeto de options
BoletoTransactionOptions boletoTransactionOptions = new BoletoTransactionOptions();
boletoTransactionOptions.setDaysToAddInBoletoExpirationDate(5);
boletoTransaction.setOptions(boletoTransactionOptions);

// Cria o objeto order para adicionar o Order Reference
Order order = new Order();
order.setOrderReference("NumeroDoPedido");

// Cria o Sale Request para enviar o objeto de request
CreateSaleRequest createSaleRequest = new CreateSaleRequest();
createSaleRequest.setBoletoTransactionCollection(new ArrayList<>());
createSaleRequest.getBoletoTransactionCollection().add(boletoTransaction);
createSaleRequest.setOrder(order);

// Cria o cliente que vai enviar a transação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br"); 

// Submete a transação e retorna a resposta do gateway
HttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse = serviceClient.getSale().Create(createSaleRequest);
"BoletoTransactionCollection": [
        {
            "AmountInCents": 10000,
            "BankNumber": "237",
            "Instructions": "Pagar antes do vencimento",
            "Options": {
                "DaysToAddInBoletoExpirationDate": 5,
              	"PaymentMethodCode": 1
            },
            "TransactionReference": "BoletoComBuyerRemessa"
        }
    ],
    "Buyer": {
        "AddressCollection": [
            {
                "AddressType": "Residential",
                "City": "Tatooine",
                "Complement": "",
                "Country": "Brazil",
                "District": "Mos Eisley",
                "Number": "123",
                "State": "RJ",
                "Street": "Mos Eisley Cantina",
                "ZipCode": "20001000"
            }
        ],
        "DocumentNumber": "12345678901",
        "DocumentType": "CPF",
        "Name": "Luke Skywalker",
        "PersonType": "Person"
    },
    "Order": {
        "OrderReference": "BoletoComBuyerRemessa"
    }
}

Seguindo os exemplos acima você pode criar e enviar uma requisição de boleto para nosso ambiente de produção.

Depois do processo de conciliação, você poderá receber três tipos de status de transação:

  • Paid - Se o boleto for pago corretamente

  • UnderPaid - Se o valor pago for inferior ao valor do boleto

  • OverPaid - Se o valor pago for superior ao valor do boleto

Caso você escolha não usar o recurso de conciliação, os seus boletos apresentarão sempre o status Generated.

Adaptando seus requests de boleto

O exemplo acima é referente ao pedido de criação (request) de um boleto básico ( mínimo necessário de informações para que o boleto possa ser gerado). Além dos dados ilustrados no exemplo, é possivel enviar outros dados como, por exemplo:

  • Informações do comprador - Buyer

  • Informações do carrinho de compra - ShoppingCart

Para saber mais sobre outras dados (tags) que podem ser enviadas é só acessar a seção referências.

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
  "ErrorReport": null,
  "InternalTime": 81,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "302f50f0-a653d-43f3-bf3a-5812ddfe6a5c",
  "BoletoTransactionResultCollection": [
    {
      "AcquirerReturnCode": null,
      "AcquirerReturnMessage": null,
      "AmountInCents": 29800,
      "Barcode": "34191.09065 20674.712938 83456.900009 6 69240000029800",
      "BoletoTransactionStatus": "Generated",
      "BoletoUrl": "https://transaction.stone.com.br/Boleto/ViewBoleto.aspx?5b85dda5-d1bb-4bcd-a5f3-0db4ced8d45e",
      "DocumentNumber": "315273",
      "NossoNumero": "06206847",
      "Success": true,
      "TransactionKey": "5b85dda5-d1bb-4bcd-a3f3-0db3ced3d79e",
      "TransactionReference": "57dc301e62687"
    }
  ],
  "BuyerKey": "53870539-ed33-4743-a593-add77bd0630c",
  "CreditCardTransactionResultCollection": [],
  "OrderResult": {
    "CreateDate": "2016-09-16T17:47:28",
    "OrderKey": "20cfa51f-3333-4136-93b3-220cd433fae2",
    "OrderReference": "656500b8"
  }
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "O valor do boleto deve ser maior que zero",
        "ErrorCode": 400,
        "ErrorField": "BoletoTransaction.AmountInCents",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 1,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "02fe6110-8197-447d-9f9f-a252707f63d8",
  "BoletoTransactionResultCollection": null,
  "BuyerKey": "00000000-0000-0000-0000-000000000000",
  "CreditCardTransactionResultCollection": null,
  "OrderResult": null
}


{"_id":"5978f16bb8da85001f5081de","category":"5978f16bb8da85001f5081ce","parentDoc":null,"project":"57ed53f75760ab190017b45e","user":"55831751870ff41900de479e","version":"5978f16bb8da85001f5081cd","updates":["559fce294a80980d00523430","567aea6641a69d0d00cdfd40"],"next":{"pages":[],"description":""},"createdAt":"2015-07-07T22:12:46.605Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"code":"{}","language":"json","status":400,"name":""}]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":5,"body":"Ufa! Finalmente conseguimos chegar juntos à etapa final desse processo de integração! Agora é hora de passar do treino (Simulador) para o jogo (ambiente de produção) e com nosso guia detalhado, a vitória é garantida!\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"MerchantKey de Produção\"\n}\n[/block]\nPara obter sua MerchantKey de produção, você precisa primeiro ser cliente Stone! Entre em contato com a nosso time comercial para saber mais sobre nossas opções:\n  \n* **euquero@stone.com.br**\n\nSe você já faz parte do nosso time, solicite a MerchantKey à nosso time de Relacionamento com o Cliente pelo email:\n\n* **ecommerce@stone.com.br**\n\nPara passar a utilizar a MerchantKey de produção é bem simples, basta substituir a MerchantKey do Simulador com a de Produção no cabeçalho (header) das requisições.\n\nQuando você requisitar sua MerchantKey nosso time irá te enviar um login para o nosso ambiente de produção.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"É importante ressaltar que nosso Simulador não possui nenhuma conexão com o Ambiente de Produção. Ou seja, nenhum tipo de informação criada nele será enviada/transferida para o ambiente de produção.\",\n  \"title\": \"Simulador vs. Produção\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Ambiente de Produção\"\n}\n[/block]\nNão se esqueça de enviar suas requisições para o nosso endpoint de produção, ok?\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"https://transaction.stone.com.br\",\n  \"title\": \"Endpoint de Produção\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Test Drive do Ambiente de Produção\"\n}\n[/block]\nPara garantir que seu ambiente de produção está funcionando como o esperado, você deve realizar testes criando transações com valores baixos para cada meio de pagamento que configurou.\n\nDe modo a tornar seus testes mais completos envie também diferentes transações, com diversas faixas de parcelamento, bandeiras, bancos, etc. Não se esqueça de confirmar o recebimento das mesmas, geralmente depositadas 30 dias depois da captura **no caso atual ( cartão de crédito)**.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Custo das transações em ambiente de produção\",\n  \"body\": \"Atenção! Uma vez que suas transações começarem a serem enviadas para o ambiente de produção, formas de pagamento reais serão utilizadas e todas as transações feitas dessa forma serão cobradas (debitadas do meio de pagamento em questão) e as taxas dos serviços envolvidos serão cobradas! Por isso, é muito importante que você envie valores baixos e poucas transações ao testar o ambiente de produção.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Sinal Verde para suas Vendas\"\n}\n[/block]\nPronto! Agora está tudo certo para você possa começar a vender! \n\nCaso deseje, nossa equipe preparou seções avançadas para você moldar seu ecommerce de acordo com as suas necessidades proporcionando diversas ferramentas e funcionalidades.\n\nTe desejamos ótimas vendas e muito sucesso!","excerpt":"Gateway Stone à todo vapor!","slug":"vamos-entrar-em-producao","type":"basic","title":"Entrando em produção","__v":0,"childrenPages":[]}

Entrando em produção

Gateway Stone à todo vapor!

Ufa! Finalmente conseguimos chegar juntos à etapa final desse processo de integração! Agora é hora de passar do treino (Simulador) para o jogo (ambiente de produção) e com nosso guia detalhado, a vitória é garantida!

MerchantKey de Produção

Para obter sua MerchantKey de produção, você precisa primeiro ser cliente Stone! Entre em contato com a nosso time comercial para saber mais sobre nossas opções:

  • euquero@stone.com.br

Se você já faz parte do nosso time, solicite a MerchantKey à nosso time de Relacionamento com o Cliente pelo email:

  • ecommerce@stone.com.br

Para passar a utilizar a MerchantKey de produção é bem simples, basta substituir a MerchantKey do Simulador com a de Produção no cabeçalho (header) das requisições.

Quando você requisitar sua MerchantKey nosso time irá te enviar um login para o nosso ambiente de produção.

Simulador vs. Produção

É importante ressaltar que nosso Simulador não possui nenhuma conexão com o Ambiente de Produção. Ou seja, nenhum tipo de informação criada nele será enviada/transferida para o ambiente de produção.

Ambiente de Produção

Não se esqueça de enviar suas requisições para o nosso endpoint de produção, ok?

Endpoint de Produção

https://transaction.stone.com.br

Test Drive do Ambiente de Produção

Para garantir que seu ambiente de produção está funcionando como o esperado, você deve realizar testes criando transações com valores baixos para cada meio de pagamento que configurou.

De modo a tornar seus testes mais completos envie também diferentes transações, com diversas faixas de parcelamento, bandeiras, bancos, etc. Não se esqueça de confirmar o recebimento das mesmas, geralmente depositadas 30 dias depois da captura no caso atual ( cartão de crédito).

Custo das transações em ambiente de produção

Atenção! Uma vez que suas transações começarem a serem enviadas para o ambiente de produção, formas de pagamento reais serão utilizadas e todas as transações feitas dessa forma serão cobradas (debitadas do meio de pagamento em questão) e as taxas dos serviços envolvidos serão cobradas! Por isso, é muito importante que você envie valores baixos e poucas transações ao testar o ambiente de produção.

Sinal Verde para suas Vendas

Pronto! Agora está tudo certo para você possa começar a vender!

Caso deseje, nossa equipe preparou seções avançadas para você moldar seu ecommerce de acordo com as suas necessidades proporcionando diversas ferramentas e funcionalidades.

Te desejamos ótimas vendas e muito sucesso!

{"_id":"5978f16cb8da85001f5081e8","category":"5978f16bb8da85001f5081cf","project":"57ed53f75760ab190017b45e","parentDoc":null,"user":"555fb063336c041700a9b861","version":"5978f16bb8da85001f5081cd","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-06-16T21:57:16.447Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"name":"","code":"{}","language":"json","status":400}]},"auth":"required","params":[],"url":""},"isReference":true,"order":6,"body":"Nossa API utliza os códigos de resposta padão do protocolo HTTP para indicar o status das suas requisições.\n\nExistem vários códigos associados ao status de uma requisição HTTP, mas na nossa solução os mais recorrentes são:\n\n* **2xx** - Indicando sucesso na requisição.\n\n* **4xx** - Indicando erro devido a algum dado informado incorretamente ( ex.: campo obrigatório não enviado ou cartão sem data de validade ).\n\n* **5xx** - Indicando erro nos servidores da Stone.\n\nAntes de criar, consultar ou gerenciar seus pedidos, transações e recursos a nossa API valida cada um dos campos enviados na requisição HTTP enviada.\n\n\n**Tabela dos HTTP Status Code:**\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`200`\",\n    \"1-0\": \"`400`\",\n    \"2-0\": \"`404`\",\n    \"0-1\": \"OK\",\n    \"0-2\": \"Sucesso\",\n    \"1-1\": \"Bad Request\",\n    \"h-0\": \"Código\",\n    \"h-1\": \"Nome\",\n    \"h-2\": \"Descrição\",\n    \"3-0\": \"`500`\",\n    \"4-0\": \"`504`\",\n    \"1-2\": \"Algum campo obrigatório não foi enviado ou foi enviado de maneira incorreta\",\n    \"2-2\": \"Recurso não encontrado\",\n    \"3-2\": \"Erro nos servidores da Stone.\",\n    \"4-2\": \"Erro de comunicação entre a Stone e a adquirente em questão\",\n    \"2-1\": \"Not Found\",\n    \"3-1\": \"Internal Server Error\",\n    \"4-1\": \"Timeout\"\n  },\n  \"cols\": 3,\n  \"rows\": 5\n}\n[/block]\nToda resposta à uma requisição HTTP à nossa API possui os campos **ErrorReport** e **Success**.\n\n**ErrorReport** - É um campo que pode conter diversos tipos de erros. Cada item de erro tem os campos:\n\n\n* ``Description: Descrição do erro``\n\n* ``ErrorCode: Código identificador do erro``\n\n* ``ErrorField: Campo que originou o erro``\n\n\n**Sucess** - É um booleano. Ou seja, assume somente os valores true (verdadeiro) ou false (falso) que informa se a operação foi executada com sucesso ou não.\n\n\n\n\n\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"Caso seu ecommerce já possua o nosso antifraude habilitado, tanto os dados do carrinho de compras quanto o do comprador serão validados pela nossa API.\",\n  \"title\": \"Antifraude Stone\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Cabeçalho ( header ) da requisição\"\n}\n[/block]\nPara que você consiga fazer uma requisição, é necessário que o campo MerchantKey seja preenchido juntamente com o conteúdo do POST e como você quer receber a resposta ( ex.: JSON ). Você pode encontrar logo abaixo um exemplo de um cabeçalho de requisição preenchido corretamente para receber respostas em JSON.\n\n* ``MerchantKey: '87328324-8DA6-459E-9948-5431F5A183FA'``\n\n* ``Content-Type: application/json``\n\n* ``Accept: application/json``\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Erros 4xx ( Dados informados incorretamente na requisição )\"\n}\n[/block]\nToda vez que algum dado na requisição não for preenchido corretamente ou não for enviado, a resposta à essa requisição irá conter códigos de erro da família 400 do protocolo HTTP.  \n\nPara que sua aplicação possa ser preparada para tratar esses erros ( evitando problemas em requisições e perdas no carrinho de compras), nós listamos abaixo erros comuns da família 400.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Campo\",\n    \"h-1\": \"Descrição\",\n    \"0-0\": \"MerchantKey\",\n    \"0-1\": \"Chave de loja inválida\",\n    \"1-0\": \"OrderReference\",\n    \"1-1\": \"Pedido duplicado: '123456'. Configuração da loja não permite pedidos duplicados\",\n    \"2-0\": \"OrderReference\",\n    \"2-1\": \"Tamanho máximo permitido para o campo OrderReference é de 56 caracteres\",\n    \"3-1\": \"O Pedido deve conter uma transação de cartão\",\n    \"3-0\": \"Caso não seja informando nenhuma transação de cartão\",\n    \"4-0\": \"CreditCardTransaction.AmountInCents\",\n    \"4-1\": \"O valor da transação deve ser maior que zero\",\n    \"5-0\": \"CreditCardTransaction.TransactionReference\",\n    \"5-1\": \"O campo TransactionReference deve ter no máximo 40 caracteres.\",\n    \"6-0\": \"CreditCardTransaction.CreditCardBrandEnum\",\n    \"6-1\": \"Esta loja não possui um meio de pagamento configurado para a bandeira XYZ\",\n    \"7-0\": \"CreditCardTransaction.PaymentMethodCode\",\n    \"7-1\": \"O código de meio de pagamento X não tem suporte para a bandeira Y\",\n    \"8-0\": \"CreditCardTransaction.InstantBuyKey\",\n    \"8-1\": \"A chave de compra não é válida\",\n    \"9-0\": \"CreditCardTransaction.ExpMonth\",\n    \"9-1\": \"O mês de expiração do cartão deve ser maior que 0 e menor que 13\",\n    \"10-0\": \"CreditCardTransaction.ExpYear\",\n    \"10-1\": \"O ano de expiração do cartão deve conter 2 ou 4 dígitos\",\n    \"11-0\": \"CreditCardTransaction.ExpYear\",\n    \"11-1\": \"Data de vencimento do cartão inválida\",\n    \"12-0\": \"CreditCardTransaction.CreditCardNumber\",\n    \"12-1\": \"O cartão da Havan deve possuir de 18 digitos\",\n    \"13-0\": \"CreditCardTransaction.CreditCardNumber\",\n    \"13-1\": \"O número do cartão deve ter no mínimo 10 dígitos e no máximo 24 digitos\",\n    \"14-0\": \"CreditCardTransaction.HolderName\",\n    \"14-1\": \"O nome do portador deve conter mais de um caracter\",\n    \"15-0\": \"CreditCardTransaction.InstallmentCount\",\n    \"15-1\": \"A quantidade de parcelas da transação deve ser um valor válido\",\n    \"16-0\": \"CreditCardTransaction.SecurityCode\",\n    \"16-1\": \"O campo SecurityCode deve ser preenchido\",\n    \"17-0\": \"CreditCardTransaction.SecurityCode\",\n    \"18-0\": \"CreditCardTransaction.SecurityCode\",\n    \"19-0\": \"CreditCardTransaction.SecurityCode\",\n    \"17-1\": \"O campo código de segurança para a bandeira Visa deve conter 3 dígitos\",\n    \"18-1\": \"O campo código de segurança para a bandeira Mastercard deve conter 3 dígitos\",\n    \"19-1\": \"O campo código de segurança para a bandeira Amex deve conter 4 dígitos\",\n    \"21-0\": \"Recurrency.DateToStartBilling\",\n    \"21-1\": \"A data de início da cobrança deve ser maior ou igual a data de hoje\",\n    \"22-0\": \"Recurrency.Interval\",\n    \"22-1\": \"O intervalo entre cada recorrência deve ser maior que zero\",\n    \"23-0\": \"Buyer.HomePhone\",\n    \"23-1\": \"O número de telefone deve possuir no máximo 32 dígitos\",\n    \"24-0\": \"Buyer.MobilePhone\",\n    \"24-1\": \"O número de telefone deve possuir no máximo 32 dígitos\",\n    \"25-0\": \"Buyer.WorkPhone\",\n    \"25-1\": \"O número de telefone deve possuir no máximo 32 dígitos\",\n    \"20-1\": \"Tamanho máximo permitido para o campo CreditCardTransaction.SoftDescriptorText é de 35 caractéres.\",\n    \"20-0\": \"CreditCardTransaction.SoftDescriptorText\"\n  },\n  \"cols\": 2,\n  \"rows\": 26\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Erros 4xx nas tags do antifraude\"\n}\n[/block]\nCaso seu ecommerce tenha o antifraude Stone habilitado é possível que ocorram erros 400 na validação do carrinho de compras se as informações forem preenchidas incorretamente. Por isso, nós estendemos a lista de erros abaixo de modo a te ajudar a mapear esses possíveis erros na sua aplicação. Assim, nós podemos evitar esse tipo de erro ao enviar os parêmetros corretos para o antifraude. \n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Campo\",\n    \"h-1\": \"Descrição\",\n    \"0-0\": \"Buyer\",\n    \"0-1\": \"Informe os dados do comprador\",\n    \"2-0\": \"Buyer.HomePhone/MobilePhone/WorkPhone\",\n    \"2-1\": \"Informe os dados de ao menos um telefone de contato\",\n    \"3-0\": \"Buyer.HomePhone/MobilePhone/WorkPhone\",\n    \"3-1\": \"Número de telefone com formato inesperado. Formatos aceitos: (DDD)999999999 ou DDI(DDD)999999999\",\n    \"4-0\": \"Buyer.Email\",\n    \"4-1\": \"Informe o endereço de e-mail do comprador\",\n    \"5-0\": \"Buyer.PersonType\",\n    \"5-1\": \"Informe o tipo do comprador\",\n    \"6-0\": \"Buyer.TaxDocumentTypeEnum\",\n    \"6-1\": \"Informe o tipo do documento\",\n    \"7-0\": \"Buyer.TaxDocumentNumber\",\n    \"7-1\": \"O campo do documento do cliente deve ter 11 dígitos para CPF ou 14 dígitos para CNPJ\",\n    \"8-0\": \"Buyer.BuyerKey\",\n    \"8-1\": \"A chave de comprador não é válida\",\n    \"9-0\": \"Buyer.BuyerAddressCollection\",\n    \"9-1\": \"Informe os dados de ao menos um endereço de cobrança\",\n    \"10-0\": \"BuyerAddressCollection.Street\",\n    \"10-1\": \"Informe o nome da rua\",\n    \"11-0\": \"BuyerAddressCollection.Street\",\n    \"11-1\": \"Tamanho máximo permitido para o campo Street é de 256 caractéres.\",\n    \"12-0\": \"BuyerAddressCollection.Number\",\n    \"13-0\": \"BuyerAddressCollection.Number\",\n    \"12-1\": \"Informe o número do endereço\",\n    \"13-1\": \"Tamanho máximo permitido para o campo Number é de 56 caractéres\",\n    \"14-0\": \"BuyerAddressCollection.Complement\",\n    \"14-1\": \"Tamanho máximo permitido para o campo Complement é de 256 caractéres\",\n    \"15-0\": \"BuyerAddressCollection.District\",\n    \"16-0\": \"BuyerAddressCollection.District\",\n    \"15-1\": \"Informe o nome do bairro\",\n    \"16-1\": \"Tamanho máximo permitido para o campo District é de 256 caractéres\",\n    \"17-0\": \"BuyerAddressCollection.City\",\n    \"18-0\": \"BuyerAddressCollection.City\",\n    \"17-1\": \"Informe o nome da cidade\",\n    \"18-1\": \"Tamanho máximo permitido para o campo City é de 256 caractéres\",\n    \"19-0\": \"BuyerAddressCollection.State\",\n    \"19-1\": \"Informe a UF do estado corretamente\",\n    \"20-0\": \"BuyerAddressCollection.ZipCode\",\n    \"20-1\": \"O campo código postal deve conter 8 dígitos\",\n    \"21-0\": \"ShoppingCartCollection\",\n    \"21-1\": \"Informe os dados do carrinho de compras\",\n    \"22-0\": \"ShoppingCart.ShoppingCartItemCollection\",\n    \"22-1\": \"Informe os dados dos produtos existentes no carrinho de compras\",\n    \"23-0\": \"ShoppingCart.ShoppingCartItem.ItemReference\",\n    \"23-1\": \"Informe o identificador do produto\",\n    \"24-0\": \"ShoppingCart.ShoppingCartItem.ItemReference\",\n    \"24-1\": \"O tamanho máximo permitido para o campo ItemReference é de 120 caractéres\",\n    \"25-0\": \"ShoppingCart.ShoppingCartItem.Name\",\n    \"25-1\": \"Informe o nome do produto\",\n    \"26-0\": \"ShoppingCart.ShoppingCartItem.Name\",\n    \"26-1\": \"O tamanho máximo permitido para o campo Name é de 256 caractéres\",\n    \"27-0\": \"ShoppingCart.ShoppingCartItem.Quantity\",\n    \"27-1\": \"Informe a quantidade do produto\",\n    \"28-0\": \"ShoppingCart.ShoppingCartItem.UnitCostInCents\",\n    \"28-1\": \"Informe o valor unitário do produto\",\n    \"1-0\": \"Buyer.Name\",\n    \"1-1\": \"Informe o nome do comprador\"\n  },\n  \"cols\": 2,\n  \"rows\": 29\n}\n[/block]","excerpt":"Evitando erros nas requisições","slug":"erros","type":"basic","title":"Requisições HTTP","__v":0,"childrenPages":[]}

Requisições HTTP

Evitando erros nas requisições

Nossa API utliza os códigos de resposta padão do protocolo HTTP para indicar o status das suas requisições.

Existem vários códigos associados ao status de uma requisição HTTP, mas na nossa solução os mais recorrentes são:

  • 2xx - Indicando sucesso na requisição.

  • 4xx - Indicando erro devido a algum dado informado incorretamente ( ex.: campo obrigatório não enviado ou cartão sem data de validade ).

  • 5xx - Indicando erro nos servidores da Stone.

Antes de criar, consultar ou gerenciar seus pedidos, transações e recursos a nossa API valida cada um dos campos enviados na requisição HTTP enviada.

Tabela dos HTTP Status Code:

Código
Nome
Descrição

200

OK

Sucesso

400

Bad Request

Algum campo obrigatório não foi enviado ou foi enviado de maneira incorreta

404

Not Found

Recurso não encontrado

500

Internal Server Error

Erro nos servidores da Stone.

504

Timeout

Erro de comunicação entre a Stone e a adquirente em questão

Toda resposta à uma requisição HTTP à nossa API possui os campos ErrorReport e Success.

ErrorReport - É um campo que pode conter diversos tipos de erros. Cada item de erro tem os campos:

  • Description: Descrição do erro

  • ErrorCode: Código identificador do erro

  • ErrorField: Campo que originou o erro

Sucess - É um booleano. Ou seja, assume somente os valores true (verdadeiro) ou false (falso) que informa se a operação foi executada com sucesso ou não.

Antifraude Stone

Caso seu ecommerce já possua o nosso antifraude habilitado, tanto os dados do carrinho de compras quanto o do comprador serão validados pela nossa API.

Cabeçalho ( header ) da requisição

Para que você consiga fazer uma requisição, é necessário que o campo MerchantKey seja preenchido juntamente com o conteúdo do POST e como você quer receber a resposta ( ex.: JSON ). Você pode encontrar logo abaixo um exemplo de um cabeçalho de requisição preenchido corretamente para receber respostas em JSON.

  • MerchantKey: '87328324-8DA6-459E-9948-5431F5A183FA'

  • Content-Type: application/json

  • Accept: application/json

Erros 4xx ( Dados informados incorretamente na requisição )

Toda vez que algum dado na requisição não for preenchido corretamente ou não for enviado, a resposta à essa requisição irá conter códigos de erro da família 400 do protocolo HTTP.

Para que sua aplicação possa ser preparada para tratar esses erros ( evitando problemas em requisições e perdas no carrinho de compras), nós listamos abaixo erros comuns da família 400.

Campo
Descrição

MerchantKey

Chave de loja inválida

OrderReference

Pedido duplicado: '123456'. Configuração da loja não permite pedidos duplicados

OrderReference

Tamanho máximo permitido para o campo OrderReference é de 56 caracteres

Caso não seja informando nenhuma transação de cartão

O Pedido deve conter uma transação de cartão

CreditCardTransaction.AmountInCents

O valor da transação deve ser maior que zero

CreditCardTransaction.TransactionReference

O campo TransactionReference deve ter no máximo 40 caracteres.

CreditCardTransaction.CreditCardBrandEnum

Esta loja não possui um meio de pagamento configurado para a bandeira XYZ

CreditCardTransaction.PaymentMethodCode

O código de meio de pagamento X não tem suporte para a bandeira Y

CreditCardTransaction.InstantBuyKey

A chave de compra não é válida

CreditCardTransaction.ExpMonth

O mês de expiração do cartão deve ser maior que 0 e menor que 13

CreditCardTransaction.ExpYear

O ano de expiração do cartão deve conter 2 ou 4 dígitos

CreditCardTransaction.ExpYear

Data de vencimento do cartão inválida

CreditCardTransaction.CreditCardNumber

O cartão da Havan deve possuir de 18 digitos

CreditCardTransaction.CreditCardNumber

O número do cartão deve ter no mínimo 10 dígitos e no máximo 24 digitos

CreditCardTransaction.HolderName

O nome do portador deve conter mais de um caracter

CreditCardTransaction.InstallmentCount

A quantidade de parcelas da transação deve ser um valor válido

CreditCardTransaction.SecurityCode

O campo SecurityCode deve ser preenchido

CreditCardTransaction.SecurityCode

O campo código de segurança para a bandeira Visa deve conter 3 dígitos

CreditCardTransaction.SecurityCode

O campo código de segurança para a bandeira Mastercard deve conter 3 dígitos

CreditCardTransaction.SecurityCode

O campo código de segurança para a bandeira Amex deve conter 4 dígitos

CreditCardTransaction.SoftDescriptorText

Tamanho máximo permitido para o campo CreditCardTransaction.SoftDescriptorText é de 35 caractéres.

Recurrency.DateToStartBilling

A data de início da cobrança deve ser maior ou igual a data de hoje

Recurrency.Interval

O intervalo entre cada recorrência deve ser maior que zero

Buyer.HomePhone

O número de telefone deve possuir no máximo 32 dígitos

Buyer.MobilePhone

O número de telefone deve possuir no máximo 32 dígitos

Buyer.WorkPhone

O número de telefone deve possuir no máximo 32 dígitos

Erros 4xx nas tags do antifraude

Caso seu ecommerce tenha o antifraude Stone habilitado é possível que ocorram erros 400 na validação do carrinho de compras se as informações forem preenchidas incorretamente. Por isso, nós estendemos a lista de erros abaixo de modo a te ajudar a mapear esses possíveis erros na sua aplicação. Assim, nós podemos evitar esse tipo de erro ao enviar os parêmetros corretos para o antifraude.

Campo
Descrição

Buyer

Informe os dados do comprador

Buyer.Name

Informe o nome do comprador

Buyer.HomePhone/MobilePhone/WorkPhone

Informe os dados de ao menos um telefone de contato

Buyer.HomePhone/MobilePhone/WorkPhone

Número de telefone com formato inesperado. Formatos aceitos: (DDD)999999999 ou DDI(DDD)999999999

Buyer.Email

Informe o endereço de e-mail do comprador

Buyer.PersonType

Informe o tipo do comprador

Buyer.TaxDocumentTypeEnum

Informe o tipo do documento

Buyer.TaxDocumentNumber

O campo do documento do cliente deve ter 11 dígitos para CPF ou 14 dígitos para CNPJ

Buyer.BuyerKey

A chave de comprador não é válida

Buyer.BuyerAddressCollection

Informe os dados de ao menos um endereço de cobrança

BuyerAddressCollection.Street

Informe o nome da rua

BuyerAddressCollection.Street

Tamanho máximo permitido para o campo Street é de 256 caractéres.

BuyerAddressCollection.Number

Informe o número do endereço

BuyerAddressCollection.Number

Tamanho máximo permitido para o campo Number é de 56 caractéres

BuyerAddressCollection.Complement

Tamanho máximo permitido para o campo Complement é de 256 caractéres

BuyerAddressCollection.District

Informe o nome do bairro

BuyerAddressCollection.District

Tamanho máximo permitido para o campo District é de 256 caractéres

BuyerAddressCollection.City

Informe o nome da cidade

BuyerAddressCollection.City

Tamanho máximo permitido para o campo City é de 256 caractéres

BuyerAddressCollection.State

Informe a UF do estado corretamente

BuyerAddressCollection.ZipCode

O campo código postal deve conter 8 dígitos

ShoppingCartCollection

Informe os dados do carrinho de compras

ShoppingCart.ShoppingCartItemCollection

Informe os dados dos produtos existentes no carrinho de compras

ShoppingCart.ShoppingCartItem.ItemReference

Informe o identificador do produto

ShoppingCart.ShoppingCartItem.ItemReference

O tamanho máximo permitido para o campo ItemReference é de 120 caractéres

ShoppingCart.ShoppingCartItem.Name

Informe o nome do produto

ShoppingCart.ShoppingCartItem.Name

O tamanho máximo permitido para o campo Name é de 256 caractéres

ShoppingCart.ShoppingCartItem.Quantity

Informe a quantidade do produto

ShoppingCart.ShoppingCartItem.UnitCostInCents

Informe o valor unitário do produto

{"_id":"5978f16cb8da85001f5081e9","category":"5978f16bb8da85001f5081cf","project":"57ed53f75760ab190017b45e","user":"55831751870ff41900de479e","parentDoc":null,"version":"5978f16bb8da85001f5081cd","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-07-28T22:03:05.056Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":7,"body":"Com a Stone, você pode operar com as suas transações de diversas formas : \n\n* Criar\n\n* Cancelar\n\n* Capturar ( Caso tenha feito apenas uma pré-autorização )\n\n* Consultar \n\n* Retentar\n\nDessa forma, você sempre pode moldar a nossa ferramenta de acordo com o seu negócio e as suas necessidades! Listamos todas as operações que podem ser realizadas e como enviá-las para a gente!","excerpt":"Operando e gerenciando suas transações","slug":"operações-com-transações","type":"basic","title":"Transações","__v":0,"childrenPages":[]}

Transações

Operando e gerenciando suas transações

Com a Stone, você pode operar com as suas transações de diversas formas :

  • Criar

  • Cancelar

  • Capturar ( Caso tenha feito apenas uma pré-autorização )

  • Consultar

  • Retentar

Dessa forma, você sempre pode moldar a nossa ferramenta de acordo com o seu negócio e as suas necessidades! Listamos todas as operações que podem ser realizadas e como enviá-las para a gente!

{"_id":"5978f16cb8da85001f5081ea","category":"5978f16bb8da85001f5081cf","user":"55831751870ff41900de479e","parentDoc":null,"project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["5609a0f88aedf50d0004d182","56186d0888fdee0d00fb9bde","56187293f908460d00daf3da","561d3b0d4a4b140d0080db05","56461736da14e70d0027cde1","5662172d8036b40d0073883d","5665b9551b6559190020ae16","566f1f7fc1b00f1900ffd41f","56bc911ce1e7590d0058d9fa"],"next":{"pages":[],"description":""},"createdAt":"2015-08-12T15:34:09.349Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[]},"method":"post","results":{"codes":[{"code":"{\n  \"ErrorReport\": null,\n  \"InternalTime\": 315,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"87d859ff-67ad-489e-9e16-0a016e897113\",\n  \"BoletoTransactionResultCollection\": [],\n  \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n  \"CreditCardTransactionResultCollection\": [\n    {\n      \"AcquirerMessage\": \"Simulator|Transação de simulação autorizada com sucesso\",\n      \"AcquirerName\": \"Simulator\",\n      \"AcquirerReturnCode\": \"0\",\n      \"AffiliationCode\": \"000000000\",\n      \"AmountInCents\": 10000,\n      \"AuthorizationCode\": \"491045\",\n      \"AuthorizedAmountInCents\": 10000,\n      \"CapturedAmountInCents\": null,\n      \"CapturedDate\": null,\n      \"CreditCard\": {\n        \"CreditCardBrand\": \"Visa\",\n        \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n        \"IsExpiredCreditCard\": false,\n        \"MaskedCreditCardNumber\": \"411111****1111\"\n      },\n      \"CreditCardOperation\": \"AuthOnly\",\n      \"CreditCardTransactionStatus\": \"AuthorizedPendingCapture\",\n      \"DueDate\": null,\n      \"ExternalTime\": 0,\n      \"PaymentMethodName\": \"Simulator\",\n      \"RefundedAmountInCents\": null,\n      \"Success\": true,\n      \"TransactionIdentifier\": \"598878\",\n      \"TransactionKey\": \"804fe65f-dc54-4081-96da-c0aa160a44a3\",\n      \"TransactionKeyToAcquirer\": \"804fe65fdc544081\",\n      \"TransactionReference\": \"5cab1174-7340-4baa-bbea-9e26a51e303b\",\n      \"UniqueSequentialNumber\": \"733000\",\n      \"VoidedAmountInCents\": null\n    }\n  ],\n  \"OrderResult\": {\n    \"CreateDate\": \"2015-12-07T21:02:59\",\n    \"OrderKey\": \"d091a782-28c6-45ed-a340-4985330a0fcd\",\n    \"OrderReference\": \"NumeroDoPedido\"\n  }\n}","status":201,"language":"json"},{"code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"A bandeira Invalida atualmente não é suportada.\",\n        \"ErrorCode\": 400,\n        \"ErrorField\": \"CreditCardBrand\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 0,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"32f52b38-fb46-4228-b216-eb292bc0953d\",\n  \"BoletoTransactionResultCollection\": null,\n  \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n  \"CreditCardTransactionResultCollection\": null,\n  \"OrderResult\": null\n}","language":"json","status":400}]},"settings":"561f139acfc3610d00567176","auth":"required","params":[{"_id":"55b80b3caea7c8190058bb73","ref":"","in":"body","required":true,"desc":"Valor da transação em centavos. R$ 100,00 = 10000","default":"","type":"int","name":"CreditCardTransactionCollection[AmountInCents]"},{"_id":"55b80b3caea7c8190058bb72","ref":"","in":"body","required":true,"desc":"Bandeira do cartão do cliente","default":"","type":"string","name":"CreditCardTransactionCollection[CreditCard[CreditCardBrand]]"},{"_id":"55b80b3caea7c8190058bb71","ref":"","in":"body","required":true,"desc":"Número do cartão do cliente. Informar apenas números.","default":"","type":"string","name":"CreditCardTransactionCollection[CreditCard[CreditCardNumber]]"},{"_id":"55b80b3caea7c8190058bb70","ref":"","in":"body","required":true,"desc":"Mês de expiração do cartão","default":"","type":"int","name":"CreditCardTransactionCollection[CreditCard[ExpMonth]]"},{"_id":"55b80b3caea7c8190058bb6f","ref":"","in":"body","required":true,"desc":"Ano de expiração do cartão","default":"","type":"int","name":"CreditCardTransactionCollection[CreditCard[ExpYear]]"},{"_id":"55b80b3caea7c8190058bb6e","ref":"","in":"body","required":false,"desc":"Código de segurança do cartão","default":"","type":"string","name":"CreditCardTransactionCollection[CreditCard[SecurityCode]]"},{"_id":"55b80b3caea7c8190058bb6d","ref":"","in":"body","required":true,"desc":"Nome do portador do cartão","default":"","type":"string","name":"CreditCardTransactionCollection[CreditCard[HolderName]]"},{"_id":"55b80b3caea7c8190058bb6c","ref":"","in":"body","required":true,"desc":"Tipo de operação a ser realizada","default":"","type":"string","name":"CreditCardTransactionCollection[CreditCardOperation]"},{"_id":"55b80b3caea7c8190058bb6b","ref":"","in":"body","required":false,"desc":"Número de Parcelas","default":"","type":"int","name":"CreditCardTransactionCollection[InstallmentCount]"},{"_id":"55b80b3caea7c8190058bb69","ref":"","in":"body","required":false,"desc":"Identificador do pedido na sua base","default":"","type":"string","name":"Order[OrderReference]"}],"url":"/Sale"},"isReference":true,"order":8,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Cria a transação.\\nvar transaction = new CreditCardTransaction() {\\n    AmountInCents = 10000,\\n    CreditCard = new CreditCard() {\\n        CreditCardBrand = CreditCardBrandEnum.Visa,\\n        CreditCardNumber = \\\"4111111111111111\\\",\\n        ExpMonth = 10,\\n        ExpYear = 22,\\n        HolderName = \\\"LUKE SKYWALKER\\\",\\n        SecurityCode = \\\"123\\\"\\n    },\\n\\t\\tCreditCardOperation = CreditCardOperationEnum.AuthOnly,\\n    InstallmentCount = 1\\n};\\n\\n// Cria requisição.\\nvar createSaleRequest = new CreateSaleRequest() {\\n    // Adiciona a transação na requisição.\\n    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { transaction }),\\n    Order = new Order() {\\n        OrderReference = \\\"NumeroDoPedido\\\"\\n    }\\n};\\n\\n// Coloque a sua MerchantKey aqui.\\nGuid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n// Cria o client que enviará a transação.\\nvar serviceClient = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Autoriza a transação e recebe a resposta do gateway.\\nvar httpResponse = serviceClient.Sale.Create(createSaleRequest);\\n\\nConsole.WriteLine(\\\"Código retorno: {0}\\\", httpResponse.HttpStatusCode);\\nConsole.WriteLine(\\\"Chave do pedido: {0}\\\", httpResponse.Response.OrderResult.OrderKey);\\nif (httpResponse.Response.CreditCardTransactionResultCollection != null) {\\n    Console.WriteLine(\\\"Status da transação: {0}\\\", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a url utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave da loja\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria objeto requisição\\n    $createSaleRequest = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequest();\\n\\n    // Cria objeto do cartão de crédito\\n    $creditCard = \\\\Gateway\\\\One\\\\Helper\\\\CreditCardHelper::createCreditCard(\\\"4111 1111 1111 1111\\\", \\\"LUKE SKYWALKER\\\", \\\"10/2022\\\", \\\"123\\\");\\n\\n    // Define dados da transação\\n    $createSaleRequest->addCreditCardTransaction()\\n        ->setAmountInCents(10000)\\n        ->setPaymentMethodCode(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\PaymentMethodEnum::SIMULATOR)\\n        ->setCreditCardOperation(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CreditCardOperationEnum::AUTH_ONLY)\\n        ->setCreditCard($creditCard);\\n        ;\\n\\n    //Define dados do pedido\\n    $createSaleRequest->getOrder()\\n    ->setOrderReference('NumeroDoPedido');\\n\\n    // Cria um objeto ApiClient\\n    $apiClient = new \\\\Gateway\\\\ApiClient();\\n\\n    // Faz a chamada para criação\\n    $response = $apiClient->createSale($createSaleRequest);\\n\\n    // Mapeia resposta\\n    $httpStatusCode = $response->isSuccess() ? 201 : 401;\\n    \\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\CreditCardError $error)\\n{\\n    $httpStatusCode = 400;\\n    $response = array(\\\"message\\\" => $error->getMessage());\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (\\\\Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally\\n{\\n    // Devolve resposta\\n    http_response_code($httpStatusCode);\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\\n?>\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# creates credit card transaction object\\ncreditCardTransaction = Gateway::CreditCardTransaction.new\\n\\n# 100 reais in cents\\ncreditCardTransaction.AmountInCents = 10000\\ncreditCardTransaction.CreditCard.CreditCardBrand = 'Visa'\\ncreditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'\\ncreditCardTransaction.CreditCard.ExpMonth = 10\\ncreditCardTransaction.CreditCard.ExpYear = 22\\ncreditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'\\ncreditCardTransaction.CreditCard.SecurityCode = '123'\\ncreditCardTransaction.CreditCardOperation = 'AuthOnly'\\ncreditCardTransaction.InstallmentCount = 1\\n\\n# creates request object for transaction creation\\ncreateSaleRequest = Gateway::CreateSaleRequest.new\\ncreateSaleRequest.CreditCardTransactionCollection << creditCardTransaction\\ncreateSaleRequest.Order.OrderReference = 'NumeroDoPedido'\\n\\n# make the request and returns a response hash\\nresponse = gateway.CreateSale(createSaleRequest)\\n\\n# prints the response\\nputs response\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# -*- coding: utf-8 -*-\\n\\nfrom uuid import UUID\\nfrom data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\n\\n#Coleta os dados do cartão.\\ncreditcard_data = creditcard(creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2018,\\n                             security_code='123', holder_name='LUKE SKYWALKER')\\n\\n#Cria a transação.\\ntransaction_collection = [creditcard_transaction(10000, creditcard_data, 'AuthOnly')]\\n\\n#Cria o numero do pedido\\noptions_request = order(order_reference='NumeroDoPedido')\\n\\n#Cria a request.\\nrequest = create_sale_request(creditcard_transaction_collection=transaction_collection, order=options_request)\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\nhttp_response = service_client.sale.create_with_request(request)\\n\\njson_response = http_response.json()\\n\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja\\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria um cartão de crédito e define endereço de cobrança\\nCreditCard creditCard = new CreditCard();\\ncreditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);\\ncreditCard.setCreditCardNumber(\\\"4111111111111111\\\");\\ncreditCard.setExpMonth(10);\\ncreditCard.setExpYear(22);\\ncreditCard.setHolderName(\\\"LUKE SKYWALKER\\\");\\ncreditCard.setSecurityCode(\\\"123\\\");\\n\\n// Cria a transação de cartão de crédito e define cartão criado anteriormente\\nCreditCardTransaction creditCardTransaction = new CreditCardTransaction();\\ncreditCardTransaction.setAmountInCents(10000L);\\ncreditCardTransaction.setCreditCard(creditCard);\\ncreditCardTransaction.setCreditCardOperation(CreditCardOperationEnum.AuthOnly);\\ncreditCardTransaction.setInstallmentCount(1);\\n\\n// Cria o objeto order para adicionar o Order Reference\\nOrder order = new Order();\\norder.setOrderReference(\\\"NumeroDoPedido\\\");\\n\\n// Cria o Sale Request para enviar o objeto de request\\nCreateSaleRequest createSaleRequest = new CreateSaleRequest();\\ncreateSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());\\ncreateSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);\\ncreateSaleRequest.setOrder(order);\\n\\n// Cria o cliente que vai enviar a transação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\n// Submete a transação e retorna a resposta do gateway\\nHttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse = serviceClient.getSale().Create(createSaleRequest);\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"{\\n    \\\"CreditCardTransactionCollection\\\": [\\n        {\\n            \\\"AmountInCents\\\": 10000,\\n            \\\"CreditCard\\\": {\\n                \\\"CreditCardBrand\\\": \\\"Visa\\\",\\n                \\\"CreditCardNumber\\\": \\\"4111111111111111\\\",\\n                \\\"ExpMonth\\\": 10,\\n                \\\"ExpYear\\\": 22,\\n                \\\"HolderName\\\": \\\"LUKE SKYWALKER\\\",\\n                \\\"SecurityCode\\\": \\\"123\\\"\\n            },\\n            \\\"CreditCardOperation\\\":\\\"AuthOnly\\\",\\n            \\\"InstallmentCount\\\": 1\\n        }\\n    ],\\n    \\\"Order\\\": {\\n        \\\"OrderReference\\\": \\\"NumeroDoPedido\\\"\\n    }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nO modelo de negócio de vários ecommerces exigem que o valor referente à transação seja reservado no cartão do cliente para que uma análise do antifraude seja feita posteriormente ou para que outros agentes sejam acionados antes de cobrar o consumidor efetivamente. \n\nPara melhor atender nossos clientes que adotaram esses modelos, nosso time decidiu utilizar um método específico chamado de pré-autorização. Ele funciona de maneira simples e é muito parecido com uma requisição padrão de cartão de crédito como a do exemplo acima. O processo para habilitar a pré-autorização é bem fácil. É so alterar a informação da tag **CreditCardOperation** de `AuthAndCapture` ( Autorização e Captura ) para `AuthOnly` ( Autorização apenas ).\n\nDessa forma, nossa solução apenas autorizará a transação na Stone e te retornará o status `AuthorizedPendingCapture` ( Autorizado e Pendente de Captura ).\n\n\n[block:callout]\n{\n  \"type\": \"danger\",\n  \"title\": \"Pré-autorização - Período\",\n  \"body\": \"Em geral, o tempo máximo que as adquirentes permitem que a transação fique em pré-autorização, é 7 dias. Caso você precise de um período maior você deve entrar em contato com a gente para negociá-lo!\"\n}\n[/block]\nFique atento ao seu período máximo de captura após a pré-autorização! Caso contrário, se você extrapolar esse período, não será possível realizar essa operação! \n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Pré-autorização e Antifraude\"\n}\n[/block]\nSe você já estiver com o nosso antifraude habilitado nosso sistema faz com que a transação seja pré-autorizada (`AuthOnly`) em primeiro momento, mesmo que a operação que você envie seja de captura automática (`AuthAndCapture`). Isso é feito para prezar pela segurança e integridade das suas transações. \n\nO sistema funciona da seguinte forma: O antifraude recebe as informações da transação e deve ter um tempo mínimo ( SLA ) para que consiga analisar a sua transação retornando posteriormente uma reposta indicando se a transação foi aprovação ou não.\n\nO retorno que o Antifraude passará, acarretará na mudança de status da transação, o cliente é informado de tal mudança através do [Post de notificação](http://gateway.stone.com.br/docs/posts-de-notificação).","excerpt":"Exemplo de uma requisição de transação de cartão de crédito","slug":"pre-autorizacao","type":"post","title":"Pré-autorização de Transações","__v":0,"childrenPages":[]}

postPré-autorização de Transações

Exemplo de uma requisição de transação de cartão de crédito

Body Params

CreditCardTransactionCollection[AmountInCents]:
required
integer
Valor da transação em centavos. R$ 100,00 = 10000
CreditCardTransactionCollection[CreditCard[CreditCardBrand]:
required
string
Bandeira do cartão do cliente
CreditCardTransactionCollection[CreditCard[CreditCardNumber]:
required
string
Número do cartão do cliente. Informar apenas números.
CreditCardTransactionCollection[CreditCard[ExpMonth]:
required
integer
Mês de expiração do cartão
CreditCardTransactionCollection[CreditCard[ExpYear]:
required
integer
Ano de expiração do cartão
CreditCardTransactionCollection[CreditCard[SecurityCode]:
string
Código de segurança do cartão
CreditCardTransactionCollection[CreditCard[HolderName]:
required
string
Nome do portador do cartão
CreditCardTransactionCollection[CreditCardOperation]:
required
string
Tipo de operação a ser realizada
CreditCardTransactionCollection[InstallmentCount]:
integer
Número de Parcelas
Order[OrderReference]:
string
Identificador do pedido na sua base
// 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"
    },
		CreditCardOperation = CreditCardOperationEnum.AuthOnly,
    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("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

// 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) {
    Console.WriteLine("Status da transação: {0}", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a url utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave da loja
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria objeto requisição
    $createSaleRequest = new \Gateway\One\DataContract\Request\CreateSaleRequest();

    // Cria objeto do cartão de crédito
    $creditCard = \Gateway\One\Helper\CreditCardHelper::createCreditCard("4111 1111 1111 1111", "LUKE SKYWALKER", "10/2022", "123");

    // Define dados da transação
    $createSaleRequest->addCreditCardTransaction()
        ->setAmountInCents(10000)
        ->setPaymentMethodCode(\Gateway\One\DataContract\Enum\PaymentMethodEnum::SIMULATOR)
        ->setCreditCardOperation(\Gateway\One\DataContract\Enum\CreditCardOperationEnum::AUTH_ONLY)
        ->setCreditCard($creditCard);
        ;

    //Define dados do pedido
    $createSaleRequest->getOrder()
    ->setOrderReference('NumeroDoPedido');

    // Cria um objeto ApiClient
    $apiClient = new \Gateway\ApiClient();

    // Faz a chamada para criação
    $response = $apiClient->createSale($createSaleRequest);

    // Mapeia resposta
    $httpStatusCode = $response->isSuccess() ? 201 : 401;
    
}
catch (\Gateway\One\DataContract\Report\CreditCardError $error)
{
    $httpStatusCode = 400;
    $response = array("message" => $error->getMessage());
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (\Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    // Devolve resposta
    http_response_code($httpStatusCode);
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
?>
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# creates credit card transaction object
creditCardTransaction = Gateway::CreditCardTransaction.new

# 100 reais in cents
creditCardTransaction.AmountInCents = 10000
creditCardTransaction.CreditCard.CreditCardBrand = 'Visa'
creditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'
creditCardTransaction.CreditCard.ExpMonth = 10
creditCardTransaction.CreditCard.ExpYear = 22
creditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'
creditCardTransaction.CreditCard.SecurityCode = '123'
creditCardTransaction.CreditCardOperation = 'AuthOnly'
creditCardTransaction.InstallmentCount = 1

# creates request object for transaction creation
createSaleRequest = Gateway::CreateSaleRequest.new
createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
createSaleRequest.Order.OrderReference = 'NumeroDoPedido'

# make the request and returns a response hash
response = gateway.CreateSale(createSaleRequest)

# prints the response
puts response
# -*- coding: utf-8 -*-

from uuid import UUID
from data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order
from stoneEcommercePython  import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum

#Coleta os dados do cartão.
creditcard_data = creditcard(creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2018,
                             security_code='123', holder_name='LUKE SKYWALKER')

#Cria a transação.
transaction_collection = [creditcard_transaction(10000, creditcard_data, 'AuthOnly')]

#Cria o numero do pedido
options_request = order(order_reference='NumeroDoPedido')

#Cria a request.
request = create_sale_request(creditcard_transaction_collection=transaction_collection, order=options_request)

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

http_response = service_client.sale.create_with_request(request)

json_response = http_response.json()

// Define loja
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria um cartão de crédito e define endereço de cobrança
CreditCard creditCard = new CreditCard();
creditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);
creditCard.setCreditCardNumber("4111111111111111");
creditCard.setExpMonth(10);
creditCard.setExpYear(22);
creditCard.setHolderName("LUKE SKYWALKER");
creditCard.setSecurityCode("123");

// Cria a transação de cartão de crédito e define cartão criado anteriormente
CreditCardTransaction creditCardTransaction = new CreditCardTransaction();
creditCardTransaction.setAmountInCents(10000L);
creditCardTransaction.setCreditCard(creditCard);
creditCardTransaction.setCreditCardOperation(CreditCardOperationEnum.AuthOnly);
creditCardTransaction.setInstallmentCount(1);

// Cria o objeto order para adicionar o Order Reference
Order order = new Order();
order.setOrderReference("NumeroDoPedido");

// Cria o Sale Request para enviar o objeto de request
CreateSaleRequest createSaleRequest = new CreateSaleRequest();
createSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());
createSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);
createSaleRequest.setOrder(order);

// Cria o cliente que vai enviar a transação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

// Submete a transação e retorna a resposta do gateway
HttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse = serviceClient.getSale().Create(createSaleRequest);
{
    "CreditCardTransactionCollection": [
        {
            "AmountInCents": 10000,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "CreditCardNumber": "4111111111111111",
                "ExpMonth": 10,
                "ExpYear": 22,
                "HolderName": "LUKE SKYWALKER",
                "SecurityCode": "123"
            },
            "CreditCardOperation":"AuthOnly",
            "InstallmentCount": 1
        }
    ],
    "Order": {
        "OrderReference": "NumeroDoPedido"
    }
}

O modelo de negócio de vários ecommerces exigem que o valor referente à transação seja reservado no cartão do cliente para que uma análise do antifraude seja feita posteriormente ou para que outros agentes sejam acionados antes de cobrar o consumidor efetivamente.

Para melhor atender nossos clientes que adotaram esses modelos, nosso time decidiu utilizar um método específico chamado de pré-autorização. Ele funciona de maneira simples e é muito parecido com uma requisição padrão de cartão de crédito como a do exemplo acima. O processo para habilitar a pré-autorização é bem fácil. É so alterar a informação da tag CreditCardOperation de AuthAndCapture ( Autorização e Captura ) para AuthOnly ( Autorização apenas ).

Dessa forma, nossa solução apenas autorizará a transação na Stone e te retornará o status AuthorizedPendingCapture ( Autorizado e Pendente de Captura ).

Pré-autorização - Período

Em geral, o tempo máximo que as adquirentes permitem que a transação fique em pré-autorização, é 7 dias. Caso você precise de um período maior você deve entrar em contato com a gente para negociá-lo!

Fique atento ao seu período máximo de captura após a pré-autorização! Caso contrário, se você extrapolar esse período, não será possível realizar essa operação!

Pré-autorização e Antifraude

Se você já estiver com o nosso antifraude habilitado nosso sistema faz com que a transação seja pré-autorizada (AuthOnly) em primeiro momento, mesmo que a operação que você envie seja de captura automática (AuthAndCapture). Isso é feito para prezar pela segurança e integridade das suas transações.

O sistema funciona da seguinte forma: O antifraude recebe as informações da transação e deve ter um tempo mínimo ( SLA ) para que consiga analisar a sua transação retornando posteriormente uma reposta indicando se a transação foi aprovação ou não.

O retorno que o Antifraude passará, acarretará na mudança de status da transação, o cliente é informado de tal mudança através do Post de notificação.

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
  "ErrorReport": null,
  "InternalTime": 315,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "87d859ff-67ad-489e-9e16-0a016e897113",
  "BoletoTransactionResultCollection": [],
  "BuyerKey": "00000000-0000-0000-0000-000000000000",
  "CreditCardTransactionResultCollection": [
    {
      "AcquirerMessage": "Simulator|Transação de simulação autorizada com sucesso",
      "AcquirerName": "Simulator",
      "AcquirerReturnCode": "0",
      "AffiliationCode": "000000000",
      "AmountInCents": 10000,
      "AuthorizationCode": "491045",
      "AuthorizedAmountInCents": 10000,
      "CapturedAmountInCents": null,
      "CapturedDate": null,
      "CreditCard": {
        "CreditCardBrand": "Visa",
        "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
        "IsExpiredCreditCard": false,
        "MaskedCreditCardNumber": "411111****1111"
      },
      "CreditCardOperation": "AuthOnly",
      "CreditCardTransactionStatus": "AuthorizedPendingCapture",
      "DueDate": null,
      "ExternalTime": 0,
      "PaymentMethodName": "Simulator",
      "RefundedAmountInCents": null,
      "Success": true,
      "TransactionIdentifier": "598878",
      "TransactionKey": "804fe65f-dc54-4081-96da-c0aa160a44a3",
      "TransactionKeyToAcquirer": "804fe65fdc544081",
      "TransactionReference": "5cab1174-7340-4baa-bbea-9e26a51e303b",
      "UniqueSequentialNumber": "733000",
      "VoidedAmountInCents": null
    }
  ],
  "OrderResult": {
    "CreateDate": "2015-12-07T21:02:59",
    "OrderKey": "d091a782-28c6-45ed-a340-4985330a0fcd",
    "OrderReference": "NumeroDoPedido"
  }
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "A bandeira Invalida atualmente não é suportada.",
        "ErrorCode": 400,
        "ErrorField": "CreditCardBrand",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 0,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "32f52b38-fb46-4228-b216-eb292bc0953d",
  "BoletoTransactionResultCollection": null,
  "BuyerKey": "00000000-0000-0000-0000-000000000000",
  "CreditCardTransactionResultCollection": null,
  "OrderResult": null
}


{"_id":"5978f16cb8da85001f5081eb","category":"5978f16bb8da85001f5081cf","user":"555fb063336c041700a9b861","parentDoc":null,"project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["55f3783b2d3bae21009c47b3","55f6f5d4d892ea37008f996a","56005b610c703d1900953112","56005bb58c0c9d0d00dcae43","56059571d895120d00a40b45","560cb135875361210021425a","56191fb1fa2a6d0d002a132e","5669e22a55e4b32100935ef3","567008c4cbb2fb0d00f7c6ca","567066743d29830d00376217","567068df81801f0d00802f4a","567069ea81801f0d00802f4d","56bc92545e104b0d00e7afb5"],"next":{"pages":[],"description":""},"createdAt":"2015-06-16T17:24:00.461Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"code":"{\n  \"ErrorReport\": null,\n  \"InternalTime\": 107,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"8229a921-64db-476a-a898-edbb398fbde3\",\n  \"CreditCardTransactionResultCollection\": [\n    {\n      \"AcquirerMessage\": \"Simulator|Transação de simulação autorizada com sucesso\",\n      \"AcquirerName\": \"Simulator\",\n      \"AcquirerReturnCode\": \"0\",\n      \"AffiliationCode\": \"000000000\",\n      \"AmountInCents\": 10000,\n      \"AuthorizationCode\": \"811337\",\n      \"AuthorizedAmountInCents\": 10000,\n      \"CapturedAmountInCents\": null,\n      \"CapturedDate\": null,\n      \"CreditCard\": {\n        \"CreditCardBrand\": \"Visa\",\n        \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n        \"IsExpiredCreditCard\": false,\n        \"MaskedCreditCardNumber\": \"411111****1111\"\n      },\n      \"CreditCardOperation\": \"AuthOnly\",\n      \"CreditCardTransactionStatus\": \"Voided\",\n      \"DueDate\": null,\n      \"ExternalTime\": 0,\n      \"PaymentMethodName\": \"Simulator\",\n      \"RefundedAmountInCents\": null,\n      \"Success\": true,\n      \"TransactionIdentifier\": \"481700\",\n      \"TransactionKey\": \"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\",\n      \"TransactionKeyToAcquirer\": \"5f9f75da283c4492\",\n      \"TransactionReference\": \"a59a9a42-d824-4694-892c-d9a993718348\",\n      \"UniqueSequentialNumber\": \"483207\",\n      \"VoidedAmountInCents\": 10000\n    }\n  ]\n}","language":"json"},{"language":"json","status":400,"code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"Identificação do pedido inválida.\",\n        \"ErrorCode\": 404,\n        \"ErrorField\": \"ManageSaleRequest.OrderKey\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 20,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"2a077c70-514b-430c-b267-8c064ddebff0\",\n  \"CreditCardTransactionResultCollection\": []\n}"}]},"settings":"561f139acfc3610d00567176","examples":{"codes":[{"language":"text","code":""}]},"method":"post","auth":"required","params":[{"_id":"55ca6f2e91af780d006b36c9","ref":"","in":"body","required":false,"desc":"Valor que será cancelado em centavos","default":"","type":"int","name":"CreditCardTransactionCollection[AmountInCents]"},{"_id":"55ca71c4b205cb0d006db950","ref":"","in":"body","required":false,"desc":"Chave da transação na Stone","default":"","type":"string","name":"CreditCardTransactionCollection[TransactionKey]"},{"_id":"55ca6f2e91af780d006b36cb","ref":"","in":"body","required":true,"desc":"Chave do pedido da Stone","default":"","type":"string","name":"OrderKey"}],"url":"/Sale/Cancel"},"isReference":true,"order":9,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Guid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n// Chave do pedido\\nGuid orderKey = Guid.Parse(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n// Cria o cliente para cancelar as transações.\\nIGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Cancela as transações de cartão de crédito do pedido.\\nvar httpResponse = client.Sale.Manage(ManageOperationEnum.Cancel, orderKey);\\n\\nif (httpResponse.HttpStatusCode == HttpStatusCode.OK\\n    && httpResponse.Response.CreditCardTransactionResultCollection.Any()\\n    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {\\n    Console.WriteLine(\\\"Transações canceladas.\\\");\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a URL a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave de loja a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria objeto requisição\\n    $request = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CancelRequest();\\n\\n    // Define dados da requisição\\n    $request->setOrderKey(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n    //Cria um objeto ApiClient\\n    $client = new Gateway\\\\ApiClient();\\n\\n    // Faz a chamada para criação\\n    $response = $client->cancel($request);\\n\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally\\n{\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# creates request object for transaction\\ncancelSaleRequest = Gateway::ManageSaleRequest.new\\ncancelSaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'\\n\\n# make the request and returns a response hash\\nputs response = gateway.Cancel(cancelSaleRequest)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"from uuid import UUID\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom data_contracts import manage_creditcard_transaction, manage_sale_request\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum, ManageOperationEnum\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br/\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\n# cria o request de cancelamento.\\nmanage_request = manage_sale_request(order_key = '219d7581-78e2-4aa9-b708-b7c585780bfc')\\n\\nhttp_response = service_client.sale.manage_with_request(manage_operation = ManageOperationEnum.Cancel, manage_sale_request = manage_request)\\n\\n# obtem o json da resposta.\\njson_response = http_response.json()\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja \\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria o cliente que vai efetuar a operação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\n// Define a chave do pedido que será cancelado\\nUUID orderKey = UUID.fromString(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"); // Chave do pedido\\n\\n// Submete a requisição de cancelamento\\nHttpResponseGenerics<ManageSaleResponse, ManageSaleRequest> httpResponse\\n= serviceClient.getSale().Manage(ManageOperationEnum.Cancel, orderKey);\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"{\\n    \\\"OrderKey\\\":\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"\\n} \",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nÉ muito comum que os consumidores desejem cancelar uma compra realizada online, devido a insatisfação com o serviço, defeitos no produto, dentre outros. \n\nPensando nisso, a Stone criou o método **Cancel** para realizar cancelamentos de pedidos e transações de maneira mais simples e fácil.\n\nCom a Stone você pode usar o método de cancelamento de transações de diversas formas:\n\n  *  Cancelar um pedido, ou seja, ao cancelá-lo você estará cancelando todas as transações dentro do pedido (Lembra? Conforme descrevemos na seção [Fazendo transações de cartão de crédito](doc:realizando-transacoes), um pedido pode conter diversas transações !). É só informar na requisição o `OrderKey`. **Exemplo acima!**\n  \n  *  Cancelar uma transação específica, ou seja, ao cancelá-la você estará cancelando uma única transação dentro do pedido. É só informar na requisição o `OrderKey` e o `TransactionKey` ou somente o `TransactionKey`. **Exemplo a seguir:**\n  \n  *  Cancelar parcialmente um pedido ou transação. Nós vamos ilustrar melhor isso na seção abaixo!\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Guid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n// Chave do pedido\\nGuid orderKey = Guid.Parse(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n// Cria o cliente para cancelar as transações.\\nIGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Transação específica que será cancelada.\\nvar transactionToCancel = new ManageCreditCardTransaction() {\\n    AmountInCents = 10000,\\n    TransactionKey = Guid.Parse(\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\")\\n};\\n\\n// Cancela as transações de cartão de crédito do pedido.\\nvar httpResponse = client.Sale.Manage(ManageOperationEnum.Cancel, orderKey, transactionToCancel);\\n\\nif (httpResponse.HttpStatusCode == HttpStatusCode.OK\\n    && httpResponse.Response.CreditCardTransactionResultCollection.Any()\\n    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {\\n    Console.WriteLine(\\\"Transações canceladas.\\\");\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a URL a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave de loja a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria objeto requisição\\n    $request = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CancelRequest();\\n\\n    // Define dados da requisição\\n    $request->addCreditCardTransaction()\\n            ->setAmountInCents(10000)\\n            ->setTransactionkey(\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\");\\n    \\n    $request->setOrderKey(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n    //Cria um objeto ApiClient\\n    $client = new Gateway\\\\ApiClient();\\n\\n    // Faz a chamada para criação\\n    $response = $client->cancel($request);\\n\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally\\n{\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# create credit card manage transaction object\\ncreditCardTransaction = Gateway::ManageCreditCardTransaction.new\\ncreditCardTransaction.AmountInCents = 10000\\ncreditCardTransaction.TransactionKey = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5'\\n\\n# creates request object for transaction\\ncancelSaleRequest = Gateway::ManageSaleRequest.new\\ncancelSaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'\\ncancelSaleRequest.CreditCardTransactionCollection << creditCardTransaction\\n\\n# make the request and returns a response hash\\nputs response = gateway.Cancel(cancelSaleRequest)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"from uuid import UUID\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom data_contracts import manage_creditcard_transaction, manage_sale_request\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum, ManageOperationEnum\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br/\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\n# dados da transacao que sera cancelada\\nmanage_creditcard_collection_data = [manage_creditcard_transaction(transaction_key = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5', amount_in_cents = 10000)]\\n\\n# cria o request de cancelamento.\\nmanage_request = manage_sale_request(creditcard_transaction_collection = manage_creditcard_collection_data, order_key = '219d7581-78e2-4aa9-b708-b7c585780bfc')\\n\\nhttp_response = service_client.sale.manage_with_request(manage_operation = ManageOperationEnum.Cancel, manage_sale_request = manage_request)\\n\\n# obtem o json da resposta.\\njson_response = http_response.json()\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja \\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria o cliente que vai efetuar a operação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\nManageSaleRequest manageSaleRequest = new ManageSaleRequest();\\n\\n// Define os detalhes da transação de cartão de crédito\\nManageCreditCardTransaction manageCreditCardTransaction = new ManageCreditCardTransaction();\\nmanageCreditCardTransaction.setAmountInCents(10000L);\\nmanageCreditCardTransaction.setTransactionKey(UUID.fromString(\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\"));\\n            \\n// Cria a lista de transações de cartão e adiciona a transação criada a lista\\nList<ManageCreditCardTransaction> manageCreditCardTransactionList = new ArrayList<ManageCreditCardTransaction>();\\nmanageCreditCardTransactionList.add(manageCreditCardTransaction);\\n            \\n// Define a chave do pedido que será cancelado\\nmanageSaleRequest.setOrderKey(UUID.fromString(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"));\\nmanageSaleRequest.setCreditCardTransactionCollection(manageCreditCardTransactionList);\\n\\n// Submete a requisição de cancelamento\\nHttpResponseGenerics<ManageSaleResponse, ManageSaleRequest> httpResponse\\n        = serviceClient.getSale().Manage(ManageOperationEnum.Cancel, manageSaleRequest);\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"{\\n    \\\"CreditCardTransactionCollection\\\":[{\\n        \\\"AmountInCents\\\":10000,\\n        \\\"TransactionKey\\\":\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\"\\n    }],\\n    \\\"OrderKey\\\":\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"\\n} \",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Pode deixar que vamos te explicar qual é a diferença entre Cancelamento e Estorno, é bem fácil! O cancelamento acontece até 23h:59min do dia da transação. Depois desse período é realizado o estorno da transação. Na prática, o cancelamento não aparece na fatura do consumidor enquando o estorno sim! Como nosso time quer ajudar seu ecommerce a funcionar à todo vapor nós realizamos tanto o cancelamento quanto o estorno pelo mesmo método para deixar o processo mais simples para você!\",\n  \"title\": \"Cancelamento vs. Estorno\"\n}\n[/block]\nQuando você receber a resposta para sua requisição de cancelamento de transação, você poderá receber dois tipos de status da sua transação:\n\n* `Voided` -Em Caso de Transação Cancelada\n\n* `Refunded`- Em Caso de Trasação Estornada\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Cancelamento/Estorno Parcial\"\n}\n[/block]\nNós vamos te explicar como realizar um cancelamento ou estorno parcial e você vai ver que também é bem fácil ! = ) \n\nQuando você for enviar um cancelamento/estorno parcial basta acrescentar na requisição HTTP o valor que deve ser cancelado/estornado no campo `AmountInCents` ( Valor a ser cancelado em **centavos**! ). Atenção! O valor desse campo deve ser preenchido em **centavos** e, caso você não nos informe esse valor, o valor total será cancelado como padrão!\n\nAo receber a resposta da requisição de cancelamento ela pode ser de dois tipo:\n\n* `PartialVoid` - Cancelamento Parcial\n\n* `PartialRefund`- Estorno Parcial\n\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Cancelamento/Estorno Pendente\"\n}\n[/block]\nNosso time dá tudo si de por você e sempre está procurando superar seus limites, porém alguns casos de instabilidade na realização de algumas operações podem ocorrer eventualmente. Em alguns desses cenários a requisição de cancelamento feita por nós não é processada ou não é valida. Nessas ocasiões as transações podem assumir os seguintes status:\n\n* `PendingVoid` - Cancelamento Pendente\n\n* `PendingRefund` - Estorno Pendente\n\nCaso esse tipo de problema acontece, é só entrar em contato com a gente e estaremos disponíveis para te ajudar a realizar o cancelamento ou estorno da transação da melhor maneira! Visando te ajudar, nós disponibilizamos os identificadores das transações ( StoneId ) tanto na resposta da requisição HTTP quanto em nosso portal!","excerpt":"Exemplo de envio de requisição de cancelamento de transação","slug":"cancelamento","type":"post","title":"Cancelando transações","__v":0,"childrenPages":[]}

postCancelando transações

Exemplo de envio de requisição de cancelamento de transação

Body Params

CreditCardTransactionCollection[AmountInCents]:
integer
Valor que será cancelado em centavos
CreditCardTransactionCollection[TransactionKey]:
string
Chave da transação na Stone
OrderKey:
required
string
Chave do pedido da Stone
Guid merchantKey = Guid.Parse("F2A1F485-CFD4-49F5-8862-0EBC438AE923");
// Chave do pedido
Guid orderKey = Guid.Parse("219d7581-78e2-4aa9-b708-b7c585780bfc");

// Cria o cliente para cancelar as transações.
IGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri("https://transaction.stone.com.br"));

// Cancela as transações de cartão de crédito do pedido.
var httpResponse = client.Sale.Manage(ManageOperationEnum.Cancel, orderKey);

if (httpResponse.HttpStatusCode == HttpStatusCode.OK
    && httpResponse.Response.CreditCardTransactionResultCollection.Any()
    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {
    Console.WriteLine("Transações canceladas.");
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a URL a ser utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave de loja a ser utilizada
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria objeto requisição
    $request = new \Gateway\One\DataContract\Request\CancelRequest();

    // Define dados da requisição
    $request->setOrderKey("219d7581-78e2-4aa9-b708-b7c585780bfc");

    //Cria um objeto ApiClient
    $client = new Gateway\ApiClient();

    // Faz a chamada para criação
    $response = $client->cancel($request);

}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# creates request object for transaction
cancelSaleRequest = Gateway::ManageSaleRequest.new
cancelSaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'

# make the request and returns a response hash
puts response = gateway.Cancel(cancelSaleRequest)
from uuid import UUID
from stoneEcommercePython  import GatewayServiceClient
from data_contracts import manage_creditcard_transaction, manage_sale_request
from enum_types import PlatformEnvironment, HttpContentTypeEnum, ManageOperationEnum

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br/"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

# cria o request de cancelamento.
manage_request = manage_sale_request(order_key = '219d7581-78e2-4aa9-b708-b7c585780bfc')

http_response = service_client.sale.manage_with_request(manage_operation = ManageOperationEnum.Cancel, manage_sale_request = manage_request)

# obtem o json da resposta.
json_response = http_response.json()
// Define loja 
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria o cliente que vai efetuar a operação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

// Define a chave do pedido que será cancelado
UUID orderKey = UUID.fromString("219d7581-78e2-4aa9-b708-b7c585780bfc"); // Chave do pedido

// Submete a requisição de cancelamento
HttpResponseGenerics<ManageSaleResponse, ManageSaleRequest> httpResponse
= serviceClient.getSale().Manage(ManageOperationEnum.Cancel, orderKey);
{
    "OrderKey":"219d7581-78e2-4aa9-b708-b7c585780bfc"
} 

É muito comum que os consumidores desejem cancelar uma compra realizada online, devido a insatisfação com o serviço, defeitos no produto, dentre outros.

Pensando nisso, a Stone criou o método Cancel para realizar cancelamentos de pedidos e transações de maneira mais simples e fácil.

Com a Stone você pode usar o método de cancelamento de transações de diversas formas:

  • Cancelar um pedido, ou seja, ao cancelá-lo você estará cancelando todas as transações dentro do pedido (Lembra? Conforme descrevemos na seção Fazendo transações de cartão de crédito, um pedido pode conter diversas transações !). É só informar na requisição o OrderKey. Exemplo acima!

  • Cancelar uma transação específica, ou seja, ao cancelá-la você estará cancelando uma única transação dentro do pedido. É só informar na requisição o OrderKey e o TransactionKey ou somente o TransactionKey. Exemplo a seguir:

  • Cancelar parcialmente um pedido ou transação. Nós vamos ilustrar melhor isso na seção abaixo!

Guid merchantKey = Guid.Parse("F2A1F485-CFD4-49F5-8862-0EBC438AE923");
// Chave do pedido
Guid orderKey = Guid.Parse("219d7581-78e2-4aa9-b708-b7c585780bfc");

// Cria o cliente para cancelar as transações.
IGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri("https://transaction.stone.com.br"));

// Transação específica que será cancelada.
var transactionToCancel = new ManageCreditCardTransaction() {
    AmountInCents = 10000,
    TransactionKey = Guid.Parse("20ba0520-7d09-44f8-8fbc-e4329e2b18d5")
};

// Cancela as transações de cartão de crédito do pedido.
var httpResponse = client.Sale.Manage(ManageOperationEnum.Cancel, orderKey, transactionToCancel);

if (httpResponse.HttpStatusCode == HttpStatusCode.OK
    && httpResponse.Response.CreditCardTransactionResultCollection.Any()
    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {
    Console.WriteLine("Transações canceladas.");
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a URL a ser utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave de loja a ser utilizada
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria objeto requisição
    $request = new \Gateway\One\DataContract\Request\CancelRequest();

    // Define dados da requisição
    $request->addCreditCardTransaction()
            ->setAmountInCents(10000)
            ->setTransactionkey("20ba0520-7d09-44f8-8fbc-e4329e2b18d5");
    
    $request->setOrderKey("219d7581-78e2-4aa9-b708-b7c585780bfc");

    //Cria um objeto ApiClient
    $client = new Gateway\ApiClient();

    // Faz a chamada para criação
    $response = $client->cancel($request);

}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# create credit card manage transaction object
creditCardTransaction = Gateway::ManageCreditCardTransaction.new
creditCardTransaction.AmountInCents = 10000
creditCardTransaction.TransactionKey = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5'

# creates request object for transaction
cancelSaleRequest = Gateway::ManageSaleRequest.new
cancelSaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'
cancelSaleRequest.CreditCardTransactionCollection << creditCardTransaction

# make the request and returns a response hash
puts response = gateway.Cancel(cancelSaleRequest)
from uuid import UUID
from stoneEcommercePython  import GatewayServiceClient
from data_contracts import manage_creditcard_transaction, manage_sale_request
from enum_types import PlatformEnvironment, HttpContentTypeEnum, ManageOperationEnum

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br/"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

# dados da transacao que sera cancelada
manage_creditcard_collection_data = [manage_creditcard_transaction(transaction_key = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5', amount_in_cents = 10000)]

# cria o request de cancelamento.
manage_request = manage_sale_request(creditcard_transaction_collection = manage_creditcard_collection_data, order_key = '219d7581-78e2-4aa9-b708-b7c585780bfc')

http_response = service_client.sale.manage_with_request(manage_operation = ManageOperationEnum.Cancel, manage_sale_request = manage_request)

# obtem o json da resposta.
json_response = http_response.json()
// Define loja 
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria o cliente que vai efetuar a operação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

ManageSaleRequest manageSaleRequest = new ManageSaleRequest();

// Define os detalhes da transação de cartão de crédito
ManageCreditCardTransaction manageCreditCardTransaction = new ManageCreditCardTransaction();
manageCreditCardTransaction.setAmountInCents(10000L);
manageCreditCardTransaction.setTransactionKey(UUID.fromString("20ba0520-7d09-44f8-8fbc-e4329e2b18d5"));
            
// Cria a lista de transações de cartão e adiciona a transação criada a lista
List<ManageCreditCardTransaction> manageCreditCardTransactionList = new ArrayList<ManageCreditCardTransaction>();
manageCreditCardTransactionList.add(manageCreditCardTransaction);
            
// Define a chave do pedido que será cancelado
manageSaleRequest.setOrderKey(UUID.fromString("219d7581-78e2-4aa9-b708-b7c585780bfc"));
manageSaleRequest.setCreditCardTransactionCollection(manageCreditCardTransactionList);

// Submete a requisição de cancelamento
HttpResponseGenerics<ManageSaleResponse, ManageSaleRequest> httpResponse
        = serviceClient.getSale().Manage(ManageOperationEnum.Cancel, manageSaleRequest);
{
    "CreditCardTransactionCollection":[{
        "AmountInCents":10000,
        "TransactionKey":"20ba0520-7d09-44f8-8fbc-e4329e2b18d5"
    }],
    "OrderKey":"219d7581-78e2-4aa9-b708-b7c585780bfc"
} 

Cancelamento vs. Estorno

Pode deixar que vamos te explicar qual é a diferença entre Cancelamento e Estorno, é bem fácil! O cancelamento acontece até 23h:59min do dia da transação. Depois desse período é realizado o estorno da transação. Na prática, o cancelamento não aparece na fatura do consumidor enquando o estorno sim! Como nosso time quer ajudar seu ecommerce a funcionar à todo vapor nós realizamos tanto o cancelamento quanto o estorno pelo mesmo método para deixar o processo mais simples para você!

Quando você receber a resposta para sua requisição de cancelamento de transação, você poderá receber dois tipos de status da sua transação:

  • Voided -Em Caso de Transação Cancelada

  • Refunded- Em Caso de Trasação Estornada

Cancelamento/Estorno Parcial

Nós vamos te explicar como realizar um cancelamento ou estorno parcial e você vai ver que também é bem fácil ! = )

Quando você for enviar um cancelamento/estorno parcial basta acrescentar na requisição HTTP o valor que deve ser cancelado/estornado no campo AmountInCents ( Valor a ser cancelado em centavos! ). Atenção! O valor desse campo deve ser preenchido em centavos e, caso você não nos informe esse valor, o valor total será cancelado como padrão!

Ao receber a resposta da requisição de cancelamento ela pode ser de dois tipo:

  • PartialVoid - Cancelamento Parcial

  • PartialRefund- Estorno Parcial

Cancelamento/Estorno Pendente

Nosso time dá tudo si de por você e sempre está procurando superar seus limites, porém alguns casos de instabilidade na realização de algumas operações podem ocorrer eventualmente. Em alguns desses cenários a requisição de cancelamento feita por nós não é processada ou não é valida. Nessas ocasiões as transações podem assumir os seguintes status:

  • PendingVoid - Cancelamento Pendente

  • PendingRefund - Estorno Pendente

Caso esse tipo de problema acontece, é só entrar em contato com a gente e estaremos disponíveis para te ajudar a realizar o cancelamento ou estorno da transação da melhor maneira! Visando te ajudar, nós disponibilizamos os identificadores das transações ( StoneId ) tanto na resposta da requisição HTTP quanto em nosso portal!

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
  "ErrorReport": null,
  "InternalTime": 107,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "8229a921-64db-476a-a898-edbb398fbde3",
  "CreditCardTransactionResultCollection": [
    {
      "AcquirerMessage": "Simulator|Transação de simulação autorizada com sucesso",
      "AcquirerName": "Simulator",
      "AcquirerReturnCode": "0",
      "AffiliationCode": "000000000",
      "AmountInCents": 10000,
      "AuthorizationCode": "811337",
      "AuthorizedAmountInCents": 10000,
      "CapturedAmountInCents": null,
      "CapturedDate": null,
      "CreditCard": {
        "CreditCardBrand": "Visa",
        "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
        "IsExpiredCreditCard": false,
        "MaskedCreditCardNumber": "411111****1111"
      },
      "CreditCardOperation": "AuthOnly",
      "CreditCardTransactionStatus": "Voided",
      "DueDate": null,
      "ExternalTime": 0,
      "PaymentMethodName": "Simulator",
      "RefundedAmountInCents": null,
      "Success": true,
      "TransactionIdentifier": "481700",
      "TransactionKey": "20ba0520-7d09-44f8-8fbc-e4329e2b18d5",
      "TransactionKeyToAcquirer": "5f9f75da283c4492",
      "TransactionReference": "a59a9a42-d824-4694-892c-d9a993718348",
      "UniqueSequentialNumber": "483207",
      "VoidedAmountInCents": 10000
    }
  ]
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "Identificação do pedido inválida.",
        "ErrorCode": 404,
        "ErrorField": "ManageSaleRequest.OrderKey",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 20,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "2a077c70-514b-430c-b267-8c064ddebff0",
  "CreditCardTransactionResultCollection": []
}


{"_id":"5978f16cb8da85001f5081ec","category":"5978f16bb8da85001f5081cf","parentDoc":null,"project":"57ed53f75760ab190017b45e","user":"55831751870ff41900de479e","version":"5978f16bb8da85001f5081cd","updates":["55f6fc2be5740b3900a75f3b","56059860f6b86e0d00284b78","560cb1837048021700e180fa","5619201888fdee0d00fb9c4d","5646181a75c83f0d00e9d524","5646183f75c83f0d00e9d525","5660a01989e82f0d008f67c9","5661abddf5a87e0d00db3269","5669e43dc3de130d00441846","566ad12e1e08750d00a0c53f","56700a281dabd80d00b1212b","5670686e81801f0d00802f48","5672e0b51e18b60d00b04a39","56bc92f4b745dc0d00c1ee68"],"next":{"pages":[],"description":""},"createdAt":"2015-07-28T22:05:38.690Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"method":"post","results":{"codes":[{"code":"{\n\t\"ErrorReport\":null,\n\t\"InternalTime\":95,\n\t\"MerchantKey\":\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n\t\"RequestKey\":\"aec9e6cf-6b00-4686-81cf-6fa93c8b159f\",\n\t\"CreditCardTransactionResultCollection\":[\n\t\t{\n\t\t\t\"AcquirerMessage\":\"Simulator|Transação de simulação autorizada com sucesso\",\n\t\t\t\"AcquirerName\":\"Simulator\",\n\t\t\t\"AcquirerReturnCode\":\"0\",\n\t\t\t\"AffiliationCode\":\"000000000\",\n\t\t\t\"AmountInCents\":10000,\n\t\t\t\"AuthorizationCode\":\"811337\",\n\t\t\t\"AuthorizedAmountInCents\":10000,\n\t\t\t\"CapturedAmountInCents\":10000,\n\t\t\t\"CapturedDate\":\"2015-12-10T21:28:40\",\n\t\t\t\"CreditCard\":{\n\t\t\t\t\"CreditCardBrand\":\"Mastercard\",\n\t\t\t\t\"InstantBuyKey\":\"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n\t\t\t\t\"IsExpiredCreditCard\":false,\n\t\t\t\t\"MaskedCreditCardNumber\":\"411111****1111\"\n\t\t\t},\n\t\t\t\"CreditCardOperation\":\"AuthOnly\",\n\t\t\t\"CreditCardTransactionStatus\":\"Captured\",\n\t\t\t\"DueDate\":null,\n\t\t\t\"ExternalTime\":0,\n\t\t\t\"PaymentMethodName\":\"Simulator\",\n\t\t\t\"RefundedAmountInCents\":null,\n\t\t\t\"Success\":true,\n\t\t\t\"TransactionIdentifier\":\"481700\",\n\t\t\t\"TransactionKey\":\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\",\n\t\t\t\"TransactionKeyToAcquirer\":\"5f9f75da283c4492\",\n\t\t\t\"TransactionReference\":\"a59a9a42-d824-4694-892c-d9a993718348\",\n\t\t\t\"UniqueSequentialNumber\":\"483207\",\n\t\t\t\"VoidedAmountInCents\":null\n\t\t}\n\t]\n}","language":"json","status":200},{"code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"Identificação do pedido inválida.\",\n        \"ErrorCode\": 404,\n        \"ErrorField\": \"ManageSaleRequest.OrderKey\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 7,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"e06989ca-6ec6-463d-9c98-b603e3f96f15\",\n  \"CreditCardTransactionResultCollection\": []\n}","language":"json","status":400}]},"settings":"561f139acfc3610d00567176","examples":{"codes":[]},"auth":"required","params":[{"_id":"55cb886c37edd823001a854d","ref":"","in":"body","required":false,"desc":"Valor que será capturado em centavos","default":"","type":"int","name":"CreditCardTransactionCollection[AmountInCents]"},{"_id":"55cb886c37edd823001a854c","ref":"","in":"body","required":false,"desc":"Chave da transação na Stone","default":"","type":"string","name":"CreditCardTransactionCollection[TransactionKey]"},{"_id":"55cb886c37edd823001a854a","ref":"","in":"body","required":true,"desc":"Chave do pedido da Stone","default":"","type":"string","name":"OrderKey"}],"url":"/Sale/Capture"},"isReference":true,"order":10,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Guid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n// Chave do pedido\\nGuid orderKey = Guid.Parse(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n// Cria o cliente para capturar as transações.\\nIGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Captura as transações de cartão de crédito do pedido.\\nvar httpResponse = client.Sale.Manage(ManageOperationEnum.Capture, orderKey);\\n\\nif (httpResponse.HttpStatusCode == HttpStatusCode.OK\\n    && httpResponse.Response.CreditCardTransactionResultCollection.Any()\\n    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {\\n    Console.WriteLine(\\\"Transações capturadas.\\\");\\n}\",\n      \"language\": \"csharp\",\n      \"name\": \"C#\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a URL a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave de loja a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria objeto da requisição\\n    $request = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CaptureRequest();\\n\\n    // Define dados da requisição\\n    $request->setOrderKey(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n    // Cria novo objeto ApiClient\\n    $client = new Gateway\\\\ApiClient();\\n\\n    // Faz a chamada\\n    $response = $client->capture($request);\\n\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally {\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\",\n      \"language\": \"php\",\n      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# creates request object for transaction capture\\ncaptureSaleRequest = Gateway::ManageSaleRequest.new\\ncaptureSaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'\\n\\n# make the request and returns a response hash\\nputs response = gateway.Capture(captureSaleRequest)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"from uuid import UUID\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom data_contracts import manage_creditcard_transaction, manage_sale_request\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum, ManageOperationEnum\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br/\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\n# cria o request de cancelamento.\\nmanage_request = manage_sale_request(order_key = '219d7581-78e2-4aa9-b708-b7c585780bfc')\\n\\nhttp_response = service_client.sale.manage_with_request(manage_operation = ManageOperationEnum.Capture, manage_sale_request = manage_request)\\n\\n# obtem o json da resposta.\\njson_response = http_response.json()\\n\\nprint json_response\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja \\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria o cliente que vai efetuar a operação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\n// Define a chave do pedido\\nUUID orderKey = UUID.fromString(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"); // Chave do pedido\\n\\n// Submete a requisição\\nHttpResponseGenerics<ManageSaleResponse, ManageSaleRequest> httpResponse\\n        = serviceClient.getSale().Manage(ManageOperationEnum.Capture, orderKey);\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"{\\n    \\\"OrderKey\\\":\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nDepois da pré-autorização, se você não estiver com seu antifraude habilitado, é preciso que sua transação seja capturada via requisição HTTP. Uma vez que você enviar a requisição de captura, a transação será capturada e terá o status `Captured`( Capturada ).\n\nÉ possível também capturar várias transações dentro de um mesmo pedido conforme ilustrado no exemplo abaixo!\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Guid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n// Chave do pedido\\nGuid orderKey = Guid.Parse(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n// Cria o cliente para capturar as transações.\\nIGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Transação específica que será cancelada.\\nvar transactionToCapture = new ManageCreditCardTransaction() {\\n    AmountInCents = 10000,\\n    TransactionKey = Guid.Parse(\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\")\\n};\\n\\n// Captura as transações de cartão de crédito do pedido.\\nvar httpResponse = client.Sale.Manage(ManageOperationEnum.Capture, orderKey, transactionToCapture);\\n\\nif (httpResponse.HttpStatusCode == HttpStatusCode.OK\\n    && httpResponse.Response.CreditCardTransactionResultCollection.Any()\\n    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {\\n    Console.WriteLine(\\\"Transações capturadas.\\\");\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a URL a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave de loja a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria objeto da requisição\\n    $request = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CaptureRequest();\\n\\n    $request->addCreditCardTransaction()\\n            ->setAmountInCents(10000)\\n            ->setTransactionkey(\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\");\\n\\n    // Define dados da requisição\\n    $request->setOrderKey(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n    // Cria novo objeto ApiClient\\n    $client = new Gateway\\\\ApiClient();\\n\\n    // Faz a chamada\\n    $response = $client->capture($request);\\n\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally {\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# create credit card manage transaction object\\ncreditCardTransaction = Gateway::ManageCreditCardTransaction.new\\ncreditCardTransaction.AmountInCents = 10000\\ncreditCardTransaction.TransactionKey = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5'\\n\\n# creates request object for transaction capture\\ncaptureSaleRequest = Gateway::ManageSaleRequest.new\\ncaptureSaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'\\ncaptureSaleRequest.CreditCardTransactionCollection << creditCardTransaction\\n\\n# make the request and returns a response hash\\nputs response = gateway.Capture(captureSaleRequest)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"from uuid import UUID\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom data_contracts import manage_creditcard_transaction, manage_sale_request\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum, ManageOperationEnum\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br/\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\n# dados da transacao que sera cancelada\\nmanage_creditcard_collection_data = [manage_creditcard_transaction(transaction_key = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5', amount_in_cents = 10000)]\\n\\n# cria o request de cancelamento.\\nmanage_request = manage_sale_request(creditcard_transaction_collection = manage_creditcard_collection_data, order_key = '219d7581-78e2-4aa9-b708-b7c585780bfc')\\n\\nhttp_response = service_client.sale.manage_with_request(manage_operation = ManageOperationEnum.Capture, manage_sale_request = manage_request)\\n\\n# obtem o json da resposta.\\njson_response = http_response.json()\\n\\nprint json_response\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja \\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria o cliente que vai efetuar a operação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\nManageSaleRequest manageSaleRequest = new ManageSaleRequest();\\n\\n// Define os detalhes da transação de cartão de crédito\\nManageCreditCardTransaction manageCreditCardTransaction = new ManageCreditCardTransaction();\\nmanageCreditCardTransaction.setAmountInCents(10000L);\\nmanageCreditCardTransaction.setTransactionKey(UUID.fromString(\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\"));\\n\\n// Cria a lista de transações de cartão e adiciona a transação criada a lista\\nList<ManageCreditCardTransaction> manageCreditCardTransactionList = new ArrayList<ManageCreditCardTransaction>();\\nmanageCreditCardTransactionList.add(manageCreditCardTransaction);\\n\\n// Define a chave do pedido\\nmanageSaleRequest.setOrderKey(UUID.fromString(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"));\\nmanageSaleRequest.setCreditCardTransactionCollection(manageCreditCardTransactionList);\\n\\n // Submete a requisição\\nHttpResponseGenerics<ManageSaleResponse, ManageSaleRequest> httpResponse\\n= serviceClient.getSale().Manage(ManageOperationEnum.Capture, manageSaleRequest);\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"{\\n    \\\"CreditCardTransactionCollection\\\":[{\\n        \\\"AmountInCents\\\":10000,\\n        \\\"TransactionKey\\\":\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\"\\n    }],\\n    \\\"OrderKey\\\":\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Captura Parcial\"\n}\n[/block]\nNós também permitimos que uma transação seja capturada com o valor menor do que o autorizado. Em geral, esse caso acontece quando um dos produtos em uma compra não estão em estoque, mas os demais estão e podem ser entregues ao cliente. É só capturar apenas o valor dos itens que serão entregues.\n\nQuando a captura parcial for concluída com sucesso, o status da transação será `PartialCapture` (Captura Parcial ).","excerpt":"","slug":"captura","type":"post","title":"Capturando transações","__v":0,"childrenPages":[]}

postCapturando transações


Body Params

CreditCardTransactionCollection[AmountInCents]:
integer
Valor que será capturado em centavos
CreditCardTransactionCollection[TransactionKey]:
string
Chave da transação na Stone
OrderKey:
required
string
Chave do pedido da Stone
Guid merchantKey = Guid.Parse("F2A1F485-CFD4-49F5-8862-0EBC438AE923");
// Chave do pedido
Guid orderKey = Guid.Parse("219d7581-78e2-4aa9-b708-b7c585780bfc");

// Cria o cliente para capturar as transações.
IGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri("https://transaction.stone.com.br"));

// Captura as transações de cartão de crédito do pedido.
var httpResponse = client.Sale.Manage(ManageOperationEnum.Capture, orderKey);

if (httpResponse.HttpStatusCode == HttpStatusCode.OK
    && httpResponse.Response.CreditCardTransactionResultCollection.Any()
    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {
    Console.WriteLine("Transações capturadas.");
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a URL a ser utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave de loja a ser utilizada
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria objeto da requisição
    $request = new \Gateway\One\DataContract\Request\CaptureRequest();

    // Define dados da requisição
    $request->setOrderKey("219d7581-78e2-4aa9-b708-b7c585780bfc");

    // Cria novo objeto ApiClient
    $client = new Gateway\ApiClient();

    // Faz a chamada
    $response = $client->capture($request);

}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally {
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# creates request object for transaction capture
captureSaleRequest = Gateway::ManageSaleRequest.new
captureSaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'

# make the request and returns a response hash
puts response = gateway.Capture(captureSaleRequest)
from uuid import UUID
from stoneEcommercePython  import GatewayServiceClient
from data_contracts import manage_creditcard_transaction, manage_sale_request
from enum_types import PlatformEnvironment, HttpContentTypeEnum, ManageOperationEnum

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br/"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

# cria o request de cancelamento.
manage_request = manage_sale_request(order_key = '219d7581-78e2-4aa9-b708-b7c585780bfc')

http_response = service_client.sale.manage_with_request(manage_operation = ManageOperationEnum.Capture, manage_sale_request = manage_request)

# obtem o json da resposta.
json_response = http_response.json()

print json_response
// Define loja 
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria o cliente que vai efetuar a operação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

// Define a chave do pedido
UUID orderKey = UUID.fromString("219d7581-78e2-4aa9-b708-b7c585780bfc"); // Chave do pedido

// Submete a requisição
HttpResponseGenerics<ManageSaleResponse, ManageSaleRequest> httpResponse
        = serviceClient.getSale().Manage(ManageOperationEnum.Capture, orderKey);
{
    "OrderKey":"219d7581-78e2-4aa9-b708-b7c585780bfc"
}

Depois da pré-autorização, se você não estiver com seu antifraude habilitado, é preciso que sua transação seja capturada via requisição HTTP. Uma vez que você enviar a requisição de captura, a transação será capturada e terá o status Captured( Capturada ).

É possível também capturar várias transações dentro de um mesmo pedido conforme ilustrado no exemplo abaixo!

Guid merchantKey = Guid.Parse("F2A1F485-CFD4-49F5-8862-0EBC438AE923");
// Chave do pedido
Guid orderKey = Guid.Parse("219d7581-78e2-4aa9-b708-b7c585780bfc");

// Cria o cliente para capturar as transações.
IGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri("https://transaction.stone.com.br"));

// Transação específica que será cancelada.
var transactionToCapture = new ManageCreditCardTransaction() {
    AmountInCents = 10000,
    TransactionKey = Guid.Parse("20ba0520-7d09-44f8-8fbc-e4329e2b18d5")
};

// Captura as transações de cartão de crédito do pedido.
var httpResponse = client.Sale.Manage(ManageOperationEnum.Capture, orderKey, transactionToCapture);

if (httpResponse.HttpStatusCode == HttpStatusCode.OK
    && httpResponse.Response.CreditCardTransactionResultCollection.Any()
    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {
    Console.WriteLine("Transações capturadas.");
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a URL a ser utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave de loja a ser utilizada
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria objeto da requisição
    $request = new \Gateway\One\DataContract\Request\CaptureRequest();

    $request->addCreditCardTransaction()
            ->setAmountInCents(10000)
            ->setTransactionkey("20ba0520-7d09-44f8-8fbc-e4329e2b18d5");

    // Define dados da requisição
    $request->setOrderKey("219d7581-78e2-4aa9-b708-b7c585780bfc");

    // Cria novo objeto ApiClient
    $client = new Gateway\ApiClient();

    // Faz a chamada
    $response = $client->capture($request);

}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally {
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# create credit card manage transaction object
creditCardTransaction = Gateway::ManageCreditCardTransaction.new
creditCardTransaction.AmountInCents = 10000
creditCardTransaction.TransactionKey = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5'

# creates request object for transaction capture
captureSaleRequest = Gateway::ManageSaleRequest.new
captureSaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'
captureSaleRequest.CreditCardTransactionCollection << creditCardTransaction

# make the request and returns a response hash
puts response = gateway.Capture(captureSaleRequest)
from uuid import UUID
from stoneEcommercePython  import GatewayServiceClient
from data_contracts import manage_creditcard_transaction, manage_sale_request
from enum_types import PlatformEnvironment, HttpContentTypeEnum, ManageOperationEnum

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br/"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

# dados da transacao que sera cancelada
manage_creditcard_collection_data = [manage_creditcard_transaction(transaction_key = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5', amount_in_cents = 10000)]

# cria o request de cancelamento.
manage_request = manage_sale_request(creditcard_transaction_collection = manage_creditcard_collection_data, order_key = '219d7581-78e2-4aa9-b708-b7c585780bfc')

http_response = service_client.sale.manage_with_request(manage_operation = ManageOperationEnum.Capture, manage_sale_request = manage_request)

# obtem o json da resposta.
json_response = http_response.json()

print json_response
// Define loja 
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria o cliente que vai efetuar a operação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

ManageSaleRequest manageSaleRequest = new ManageSaleRequest();

// Define os detalhes da transação de cartão de crédito
ManageCreditCardTransaction manageCreditCardTransaction = new ManageCreditCardTransaction();
manageCreditCardTransaction.setAmountInCents(10000L);
manageCreditCardTransaction.setTransactionKey(UUID.fromString("20ba0520-7d09-44f8-8fbc-e4329e2b18d5"));

// Cria a lista de transações de cartão e adiciona a transação criada a lista
List<ManageCreditCardTransaction> manageCreditCardTransactionList = new ArrayList<ManageCreditCardTransaction>();
manageCreditCardTransactionList.add(manageCreditCardTransaction);

// Define a chave do pedido
manageSaleRequest.setOrderKey(UUID.fromString("219d7581-78e2-4aa9-b708-b7c585780bfc"));
manageSaleRequest.setCreditCardTransactionCollection(manageCreditCardTransactionList);

 // Submete a requisição
HttpResponseGenerics<ManageSaleResponse, ManageSaleRequest> httpResponse
= serviceClient.getSale().Manage(ManageOperationEnum.Capture, manageSaleRequest);
{
    "CreditCardTransactionCollection":[{
        "AmountInCents":10000,
        "TransactionKey":"20ba0520-7d09-44f8-8fbc-e4329e2b18d5"
    }],
    "OrderKey":"219d7581-78e2-4aa9-b708-b7c585780bfc"
}

Captura Parcial

Nós também permitimos que uma transação seja capturada com o valor menor do que o autorizado. Em geral, esse caso acontece quando um dos produtos em uma compra não estão em estoque, mas os demais estão e podem ser entregues ao cliente. É só capturar apenas o valor dos itens que serão entregues.

Quando a captura parcial for concluída com sucesso, o status da transação será PartialCapture (Captura Parcial ).

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
	"ErrorReport":null,
	"InternalTime":95,
	"MerchantKey":"F2A1F485-CFD4-49F5-8862-0EBC438AE923",
	"RequestKey":"aec9e6cf-6b00-4686-81cf-6fa93c8b159f",
	"CreditCardTransactionResultCollection":[
		{
			"AcquirerMessage":"Simulator|Transação de simulação autorizada com sucesso",
			"AcquirerName":"Simulator",
			"AcquirerReturnCode":"0",
			"AffiliationCode":"000000000",
			"AmountInCents":10000,
			"AuthorizationCode":"811337",
			"AuthorizedAmountInCents":10000,
			"CapturedAmountInCents":10000,
			"CapturedDate":"2015-12-10T21:28:40",
			"CreditCard":{
				"CreditCardBrand":"Mastercard",
				"InstantBuyKey":"3b3b5b62-6660-428d-905e-96f49d46ae28",
				"IsExpiredCreditCard":false,
				"MaskedCreditCardNumber":"411111****1111"
			},
			"CreditCardOperation":"AuthOnly",
			"CreditCardTransactionStatus":"Captured",
			"DueDate":null,
			"ExternalTime":0,
			"PaymentMethodName":"Simulator",
			"RefundedAmountInCents":null,
			"Success":true,
			"TransactionIdentifier":"481700",
			"TransactionKey":"20ba0520-7d09-44f8-8fbc-e4329e2b18d5",
			"TransactionKeyToAcquirer":"5f9f75da283c4492",
			"TransactionReference":"a59a9a42-d824-4694-892c-d9a993718348",
			"UniqueSequentialNumber":"483207",
			"VoidedAmountInCents":null
		}
	]
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "Identificação do pedido inválida.",
        "ErrorCode": 404,
        "ErrorField": "ManageSaleRequest.OrderKey",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 7,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "e06989ca-6ec6-463d-9c98-b603e3f96f15",
  "CreditCardTransactionResultCollection": []
}


{"_id":"5978f16cb8da85001f5081ed","category":"5978f16bb8da85001f5081cf","parentDoc":null,"user":"555fb063336c041700a9b861","project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["55f33a61f58d8c0d007ca37d","55f33d430b6c4b370095cc7e","55f6f543985a902b00c1441b","56005caa0c703d1900953120","5605983f7c8e580d0001b09f","560cb1a77048021700e180fb","56192069f908460d00daf420","561d33ec4ce6923500b0b93d","564619c3bb7ad50d00e9c58f","566ad4dc1e08750d00a0c545","56700d203a32d20d00c45b50","5672e2b8e3b6bb0d00b5af76","56bc93c85e104b0d00e7afb6"],"next":{"pages":[],"description":""},"createdAt":"2015-06-17T20:33:32.845Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"OK","code":"{\n    \"ErrorReport\":{\n        \"Category\":\"String content\",\n        \"ErrorItemCollection\":[{\n            \"Description\":\"String content\",\n            \"ErrorCode\":2147483647,\n            \"ErrorField\":\"String content\",\n            \"SeverityCode\":\"String content\"\n        }]\n    },\n    \"InternalTime\":123,\n    \"MerchantKey\":\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n    \"RequestKey\":\"1627aea5-8e0a-4371-9022-9b504344e724\",\n    \"CreditCardTransactionResultCollection\":[{\n        \"AcquirerMessage\":\"Simulator|Transação de simulação autorizada com sucesso\",\n        \"AcquirerName\":\"Simulator\",\n        \"AcquirerReturnCode\":\"0\",\n        \"AffiliationCode\":\"000000\",\n        \"AmountInCents\":10000,\n        \"AuthorizationCode\":\"1234\",\n        \"AuthorizedAmountInCents\":10000,\n        \"CapturedAmountInCents\":10000,\n        \"CreditCard\":{\n            \"CreditCardBrand\":\"Visa\",\n            \"InstantBuyKey\":\"1627aea5-8e0a-4371-9022-9b504344e724\",\n            \"IsExpiredCreditCard\":false,\n            \"MaskedCreditCardNumber\":\"411111*****1111\"\n        },\n        \"CreditCardOperation\":\"AuthAndCapture\",\n        \"CreditCardTransactionStatus\":\"Captured\",\n        \"DueDate\":\"\",\n        \"ExternalTime\":0,\n        \"PaymentMethodName\":\"Simulator\",\n        \"RefundedAmountInCents\":00,\n        \"Success\":true,\n        \"TransactionIdentifier\":\"123456\",\n        \"TransactionKey\":\"1627aea5-8e0a-4371-9022-9b504344e724\",\n        \"TransactionKeyToAcquirer\":\"1234566\",\n        \"TransactionReference\":\"CreditCardTest#0001\",\n        \"UniqueSequentialNumber\":\"123456\",\n        \"VoidedAmountInCents\":0\n    }]\n}","language":"json","status":200},{"status":400,"name":"Bad Request","code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"Identificação do pedido inválida.\",\n        \"ErrorCode\": 404,\n        \"ErrorField\": \"RetrySaleRequest.OrderKey\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 32,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"fab918db-e22d-46ed-86e6-8fe37061f156\",\n  \"CreditCardTransactionResultCollection\": null\n}","language":"json"}]},"settings":"561f139acfc3610d00567176","examples":{"codes":[{"code":"","language":"text"}]},"method":"post","auth":"required","params":[{"_id":"55cbc3754153080d00446900","ref":"","in":"body","required":true,"desc":"Chave do pedido da Stone","default":"","type":"string","name":"OrderKey"},{"_id":"55cbc3754153080d004468ff","ref":"","in":"body","required":false,"desc":"Código de segurança do cartão","default":"","type":"int","name":"RetrySaleCreditCardTransactionCollection[SecurityCode]"},{"_id":"55cbc3754153080d004468fe","ref":"","in":"body","required":false,"desc":"Chave da transação na Stone","default":"","type":"string","name":"RetrySaleCreditCardTransactionCollection[TransactionKey]"}],"url":"/Sale/Retry"},"isReference":true,"order":11,"body":"[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Criando uma retentativa\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Guid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n// Chave do pedido\\nGuid orderKey = Guid.Parse(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n// Cria o cliente para retentar as transações.\\nIGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Retenta as transações não autorizadas de cartão de crédito no pedido.\\nvar httpResponse = client.Sale.Retry(orderKey);\\n\\nif (httpResponse.HttpStatusCode == HttpStatusCode.OK\\n    && httpResponse.Response.CreditCardTransactionResultCollection.Any()\\n    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {\\n    Console.WriteLine(\\\"Transações autorizadas.\\\");\\n}\\nelse {\\n    Console.WriteLine(\\\"Uma ou mais transações não foram autorizadas.\\\");\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a URL a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave de loja a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Create request object\\n    $request = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\RetryRequest();\\n\\n    // Define all request data\\n    $request->setOrderKey('219d7581-78e2-4aa9-b708-b7c585780bfc');\\n\\n    // Create new ApiClient object\\n    $client = new Gateway\\\\ApiClient();\\n\\n    // Make the call\\n    $response = $client->Retry($request);\\n\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally {\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\nretrySaleRequest = Gateway::RetrySaleRequest.new\\n\\n# fill retry object\\nretrySaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'\\n\\n# make the request and returns a response hash\\nputs response = gateway.Retry(retrySaleRequest)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# coding=utf-8\\nfrom uuid import UUID\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom data_contracts import retry_sale_options, retry_sale_creditcard_transaction, retry_sale_request\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\n\\n# Cria a request.\\nrequest = retry_sale_request(order_key='219d7581-78e2-4aa9-b708-b7c585780bfc')\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\nhttp_response = service_client.sale.retry_with_request(retry_sale_request=request)\\n\\njson_response = http_response.json()\\n\\nprint json_response\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja \\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria o cliente que vai efetuar a operação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\n// Define a chave do pedido\\nUUID orderKey = UUID.fromString(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"); // Chave do pedido\\n\\n// Submete a requisição\\nHttpResponseGenerics<RetrySaleResponse, RetrySaleRequest> httpResponse\\n    = serviceClient.getSale().Retry(orderKey);\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\n    },\n    {\n      \"code\": \"{\\n    \\\"OrderKey\\\":\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nPara flexibilizar suas opções e te ajudar a aumentar a conversão do seu ecommerce a nossa equipe oferece dois modos de retentativa:\n\n* Retentativa Automática - A retentativa é realizada automáticamente em tempo real\n\n* Retentativa \"Manual\" - A retentativa é realizada quando você achar melhor, inclusive transações de [recorrencia](doc:recorrencia)\n\nDessa forma, você pode recuperar suas vendas, mas não se esqueça de ajustar seu fluxo de negócio à retentativa ou vice-versa.\n\nAbaixo nós ilustramos a retentavia de múltiplas transações dentro de um único pedido!\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Guid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n// Chave do pedido\\nGuid orderKey = Guid.Parse(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n// Cria o cliente para retentar as transações.\\nIGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Transação específica que será retentada.\\nRetrySaleCreditCardTransaction transactionToRetry = new RetrySaleCreditCardTransaction() {\\n    SecurityCode = \\\"123\\\",\\n    TransactionKey = Guid.Parse(\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\"),\\n};\\n\\n// Retenta as transações não autorizadas de cartão de crédito no pedido.\\nvar httpResponse = client.Sale.Retry(orderKey, transactionToRetry);\\n\\nif (httpResponse.HttpStatusCode == HttpStatusCode.OK\\n    && httpResponse.Response.CreditCardTransactionResultCollection.Any()\\n    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {\\n    Console.WriteLine(\\\"Transações autorizadas.\\\");\\n}\\nelse {\\n    Console.WriteLine(\\\"Uma ou mais transações não foram autorizadas.\\\");\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# create credit card manage transaction object\\ncreditCardTransaction = Gateway::RetrySaleCreditCardTransaction.new\\ncreditCardTransaction.SecurityCode = '123'\\ncreditCardTransaction.TransactionKey = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5'\\n\\nretrySaleRequest = Gateway::RetrySaleRequest.new\\n\\n# fill retry object\\nretrySaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'\\nretrySaleRequest.RetrySaleCreditCardTransactionCollection << creditCardTransaction\\n\\n# make the request and returns a response hash\\nputs response = gateway.Retry(retrySaleRequest)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a URL a ser utilizada\\n    \\\\\\\\Gateway\\\\\\\\ApiClient::setBaseUrl(\\\\\\\"https://transaction.stone.com.br\\\\\\\");\\n\\n    // Define a chave de loja a ser utilizada\\n    \\\\\\\\Gateway\\\\\\\\ApiClient::setMerchantKey(\\\\\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\\\\\");\\n\\n    // Create request object\\n    $request = new \\\\\\\\Gateway\\\\\\\\One\\\\\\\\DataContract\\\\\\\\Request\\\\\\\\RetryRequest();\\n\\n    // Define all request data\\n    $request->setOrderKey(\\\\\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\\\\\");\\n    $creditCardTransaction = new \\\\\\\\Gateway\\\\\\\\One\\\\\\\\DataContract\\\\\\\\Request\\\\\\\\RetryRequestData\\\\\\\\RetrySaleCreditCardTransaction();\\n    $creditCardTransaction->setSecurityCode(\\\\\\\"123\\\\\\\");\\n    $creditCardTransaction->setTransactionKey(\\\\\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\\\\\");\\n\\n    $request->addRetrySaleCreditCardTransactionCollection($creditCardTransaction);\\n\\n    // Create new ApiClient object\\n    $client = new Gateway\\\\\\\\ApiClient();\\n\\n    // Make the call\\n    $response = $client->Retry($request);\\n\\n}\\ncatch (\\\\\\\\Gateway\\\\\\\\One\\\\\\\\DataContract\\\\\\\\Report\\\\\\\\ApiError $error)\\n{\\n    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;\\n    $response = array(\\\\\\\"message\\\\\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\\\\\"message\\\\\\\" => \\\\\\\"Ocorreu um erro inesperado.\\\\\\\");\\n}\\nfinally {\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"# coding=utf-8\\nfrom uuid import UUID\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom data_contracts import retry_sale_options, retry_sale_creditcard_transaction, retry_sale_request\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\n\\n# Cria a transação.\\ntransaction_collection = [\\n    retry_sale_creditcard_transaction(security_code='123', transaction_key='20ba0520-7d09-44f8-8fbc-e4329e2b18d5')]\\n# Cria a request.\\nrequest = retry_sale_request(creditcard_transaction_collection=transaction_collection,\\n                             order_key='219d7581-78e2-4aa9-b708-b7c585780bfc')\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\nhttp_response = service_client.sale.retry_with_request(retry_sale_request=request)\\n\\njson_response = http_response.json()\\n\\nprint json_response\\n\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\n    },\n    {\n      \"code\": \"// Define loja \\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria o cliente que vai efetuar a operação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\nRetrySaleRequest retrySaleRequest = new RetrySaleRequest();\\n\\n// Define os detalhes da transação de cartão de crédito\\nRetrySaleCreditCardTransaction retrySaleCreditCardTransaction = new RetrySaleCreditCardTransaction();\\nretrySaleCreditCardTransaction.setSecurityCode(\\\"123\\\");\\nretrySaleCreditCardTransaction.setTransactionKey(UUID.fromString(\\\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\\\"));\\n\\n// Cria a lista de transações de cartão e adiciona a transação criada a lista\\nList<RetrySaleCreditCardTransaction> manageCreditCardTransactionList = new ArrayList<RetrySaleCreditCardTransaction>();\\nmanageCreditCardTransactionList.add(retrySaleCreditCardTransaction);\\n\\n// Define a chave do pedido\\nretrySaleRequest.setOrderKey(UUID.fromString(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"));\\nretrySaleRequest.setRetrySaleCreditCardTransactionCollection(manageCreditCardTransactionList);\\n\\n// Submete a requisição\\nHttpResponseGenerics<RetrySaleResponse, RetrySaleRequest> httpResponse\\n\\t= serviceClient.getSale().Retry(retrySaleRequest);\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Retentativa manual sem o código de segurança (CVV) do cartão de crédito\",\n  \"body\": \"No método de retentativa existe uma tag referente ao CVV do cartão e o preenchimento dela é **``obrigatório``**! Os **únicos** casos em que o envio do CVV **não é obrigatório**, apesar de aconselharmos que ele seja enviado sempre, são casos em que a recorrência e/ou tokenização estiverem habilitadas!\"\n}\n[/block]\nQuando uma transação precisar ser retentada ela pode continuar com o status `NotAuthorized`( Não autorizada ) ou podemos recuperá-la e deixá-la com o status `Captured`. Se você tiver feito uma pré-autorização ou utilizar o antifraude, ela ficará com o status `AuthorizedPendingCaptured` ( Autorizada e pendente de Captura ).\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"RetryOrder e o status WithError\"\n}\n[/block]\nAnteriormente nós mencionamos que algumas requisições de transação podem receber respostas com o status `WithError`. Caso isso aconteça, a retentativa pode ser muito útil:\n\n* Ao retentar sua transação, caso ela não seja processada, o método tenta recuperar a venda perdida.","excerpt":"","slug":"retentativa","type":"post","title":"Retentando transações","__v":0,"childrenPages":[]}

postRetentando transações


Body Params

OrderKey:
required
string
Chave do pedido da Stone
RetrySaleCreditCardTransactionCollection[SecurityCode]:
integer
Código de segurança do cartão
RetrySaleCreditCardTransactionCollection[TransactionKey]:
string
Chave da transação na Stone

Criando uma retentativa

Guid merchantKey = Guid.Parse("F2A1F485-CFD4-49F5-8862-0EBC438AE923");
// Chave do pedido
Guid orderKey = Guid.Parse("219d7581-78e2-4aa9-b708-b7c585780bfc");

// Cria o cliente para retentar as transações.
IGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri("https://transaction.stone.com.br"));

// Retenta as transações não autorizadas de cartão de crédito no pedido.
var httpResponse = client.Sale.Retry(orderKey);

if (httpResponse.HttpStatusCode == HttpStatusCode.OK
    && httpResponse.Response.CreditCardTransactionResultCollection.Any()
    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {
    Console.WriteLine("Transações autorizadas.");
}
else {
    Console.WriteLine("Uma ou mais transações não foram autorizadas.");
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a URL a ser utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave de loja a ser utilizada
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Create request object
    $request = new \Gateway\One\DataContract\Request\RetryRequest();

    // Define all request data
    $request->setOrderKey('219d7581-78e2-4aa9-b708-b7c585780bfc');

    // Create new ApiClient object
    $client = new Gateway\ApiClient();

    // Make the call
    $response = $client->Retry($request);

}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally {
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

retrySaleRequest = Gateway::RetrySaleRequest.new

# fill retry object
retrySaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'

# make the request and returns a response hash
puts response = gateway.Retry(retrySaleRequest)
# coding=utf-8
from uuid import UUID
from stoneEcommercePython  import GatewayServiceClient
from data_contracts import retry_sale_options, retry_sale_creditcard_transaction, retry_sale_request
from enum_types import PlatformEnvironment, HttpContentTypeEnum

# Cria a request.
request = retry_sale_request(order_key='219d7581-78e2-4aa9-b708-b7c585780bfc')

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

http_response = service_client.sale.retry_with_request(retry_sale_request=request)

json_response = http_response.json()

print json_response
// Define loja 
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria o cliente que vai efetuar a operação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

// Define a chave do pedido
UUID orderKey = UUID.fromString("219d7581-78e2-4aa9-b708-b7c585780bfc"); // Chave do pedido

// Submete a requisição
HttpResponseGenerics<RetrySaleResponse, RetrySaleRequest> httpResponse
    = serviceClient.getSale().Retry(orderKey);
{
    "OrderKey":"219d7581-78e2-4aa9-b708-b7c585780bfc"
}

Para flexibilizar suas opções e te ajudar a aumentar a conversão do seu ecommerce a nossa equipe oferece dois modos de retentativa:

  • Retentativa Automática - A retentativa é realizada automáticamente em tempo real

  • Retentativa "Manual" - A retentativa é realizada quando você achar melhor, inclusive transações de recorrencia

Dessa forma, você pode recuperar suas vendas, mas não se esqueça de ajustar seu fluxo de negócio à retentativa ou vice-versa.

Abaixo nós ilustramos a retentavia de múltiplas transações dentro de um único pedido!

Guid merchantKey = Guid.Parse("F2A1F485-CFD4-49F5-8862-0EBC438AE923");
// Chave do pedido
Guid orderKey = Guid.Parse("219d7581-78e2-4aa9-b708-b7c585780bfc");

// Cria o cliente para retentar as transações.
IGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri("https://transaction.stone.com.br"));

// Transação específica que será retentada.
RetrySaleCreditCardTransaction transactionToRetry = new RetrySaleCreditCardTransaction() {
    SecurityCode = "123",
    TransactionKey = Guid.Parse("20ba0520-7d09-44f8-8fbc-e4329e2b18d5"),
};

// Retenta as transações não autorizadas de cartão de crédito no pedido.
var httpResponse = client.Sale.Retry(orderKey, transactionToRetry);

if (httpResponse.HttpStatusCode == HttpStatusCode.OK
    && httpResponse.Response.CreditCardTransactionResultCollection.Any()
    && httpResponse.Response.CreditCardTransactionResultCollection.All(p => p.Success == true)) {
    Console.WriteLine("Transações autorizadas.");
}
else {
    Console.WriteLine("Uma ou mais transações não foram autorizadas.");
}
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# create credit card manage transaction object
creditCardTransaction = Gateway::RetrySaleCreditCardTransaction.new
creditCardTransaction.SecurityCode = '123'
creditCardTransaction.TransactionKey = '20ba0520-7d09-44f8-8fbc-e4329e2b18d5'

retrySaleRequest = Gateway::RetrySaleRequest.new

# fill retry object
retrySaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'
retrySaleRequest.RetrySaleCreditCardTransactionCollection << creditCardTransaction

# make the request and returns a response hash
puts response = gateway.Retry(retrySaleRequest)
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a URL a ser utilizada
    \\Gateway\\ApiClient::setBaseUrl(\"https://transaction.stone.com.br\");

    // Define a chave de loja a ser utilizada
    \\Gateway\\ApiClient::setMerchantKey(\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\");

    // Create request object
    $request = new \\Gateway\\One\\DataContract\\Request\\RetryRequest();

    // Define all request data
    $request->setOrderKey(\"219d7581-78e2-4aa9-b708-b7c585780bfc\");
    $creditCardTransaction = new \\Gateway\\One\\DataContract\\Request\\RetryRequestData\\RetrySaleCreditCardTransaction();
    $creditCardTransaction->setSecurityCode(\"123\");
    $creditCardTransaction->setTransactionKey(\"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\");

    $request->addRetrySaleCreditCardTransactionCollection($creditCardTransaction);

    // Create new ApiClient object
    $client = new Gateway\\ApiClient();

    // Make the call
    $response = $client->Retry($request);

}
catch (\\Gateway\\One\\DataContract\\Report\\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array(\"message\" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (Exception $ex)
{
    $httpStatusCode = 500;
    $response = array(\"message\" => \"Ocorreu um erro inesperado.\");
}
finally {
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
# coding=utf-8
from uuid import UUID
from stoneEcommercePython  import GatewayServiceClient
from data_contracts import retry_sale_options, retry_sale_creditcard_transaction, retry_sale_request
from enum_types import PlatformEnvironment, HttpContentTypeEnum

# Cria a transação.
transaction_collection = [
    retry_sale_creditcard_transaction(security_code='123', transaction_key='20ba0520-7d09-44f8-8fbc-e4329e2b18d5')]
# Cria a request.
request = retry_sale_request(creditcard_transaction_collection=transaction_collection,
                             order_key='219d7581-78e2-4aa9-b708-b7c585780bfc')

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

http_response = service_client.sale.retry_with_request(retry_sale_request=request)

json_response = http_response.json()

print json_response
// Define loja 
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria o cliente que vai efetuar a operação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

RetrySaleRequest retrySaleRequest = new RetrySaleRequest();

// Define os detalhes da transação de cartão de crédito
RetrySaleCreditCardTransaction retrySaleCreditCardTransaction = new RetrySaleCreditCardTransaction();
retrySaleCreditCardTransaction.setSecurityCode("123");
retrySaleCreditCardTransaction.setTransactionKey(UUID.fromString("20ba0520-7d09-44f8-8fbc-e4329e2b18d5"));

// Cria a lista de transações de cartão e adiciona a transação criada a lista
List<RetrySaleCreditCardTransaction> manageCreditCardTransactionList = new ArrayList<RetrySaleCreditCardTransaction>();
manageCreditCardTransactionList.add(retrySaleCreditCardTransaction);

// Define a chave do pedido
retrySaleRequest.setOrderKey(UUID.fromString("219d7581-78e2-4aa9-b708-b7c585780bfc"));
retrySaleRequest.setRetrySaleCreditCardTransactionCollection(manageCreditCardTransactionList);

// Submete a requisição
HttpResponseGenerics<RetrySaleResponse, RetrySaleRequest> httpResponse
	= serviceClient.getSale().Retry(retrySaleRequest);

Retentativa manual sem o código de segurança (CVV) do cartão de crédito

No método de retentativa existe uma tag referente ao CVV do cartão e o preenchimento dela é obrigatório! Os únicos casos em que o envio do CVV não é obrigatório, apesar de aconselharmos que ele seja enviado sempre, são casos em que a recorrência e/ou tokenização estiverem habilitadas!

Quando uma transação precisar ser retentada ela pode continuar com o status NotAuthorized( Não autorizada ) ou podemos recuperá-la e deixá-la com o status Captured. Se você tiver feito uma pré-autorização ou utilizar o antifraude, ela ficará com o status AuthorizedPendingCaptured ( Autorizada e pendente de Captura ).

RetryOrder e o status WithError

Anteriormente nós mencionamos que algumas requisições de transação podem receber respostas com o status WithError. Caso isso aconteça, a retentativa pode ser muito útil:

  • Ao retentar sua transação, caso ela não seja processada, o método tenta recuperar a venda perdida.

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
    "ErrorReport":{
        "Category":"String content",
        "ErrorItemCollection":[{
            "Description":"String content",
            "ErrorCode":2147483647,
            "ErrorField":"String content",
            "SeverityCode":"String content"
        }]
    },
    "InternalTime":123,
    "MerchantKey":"F2A1F485-CFD4-49F5-8862-0EBC438AE923",
    "RequestKey":"1627aea5-8e0a-4371-9022-9b504344e724",
    "CreditCardTransactionResultCollection":[{
        "AcquirerMessage":"Simulator|Transação de simulação autorizada com sucesso",
        "AcquirerName":"Simulator",
        "AcquirerReturnCode":"0",
        "AffiliationCode":"000000",
        "AmountInCents":10000,
        "AuthorizationCode":"1234",
        "AuthorizedAmountInCents":10000,
        "CapturedAmountInCents":10000,
        "CreditCard":{
            "CreditCardBrand":"Visa",
            "InstantBuyKey":"1627aea5-8e0a-4371-9022-9b504344e724",
            "IsExpiredCreditCard":false,
            "MaskedCreditCardNumber":"411111*****1111"
        },
        "CreditCardOperation":"AuthAndCapture",
        "CreditCardTransactionStatus":"Captured",
        "DueDate":"",
        "ExternalTime":0,
        "PaymentMethodName":"Simulator",
        "RefundedAmountInCents":00,
        "Success":true,
        "TransactionIdentifier":"123456",
        "TransactionKey":"1627aea5-8e0a-4371-9022-9b504344e724",
        "TransactionKeyToAcquirer":"1234566",
        "TransactionReference":"CreditCardTest#0001",
        "UniqueSequentialNumber":"123456",
        "VoidedAmountInCents":0
    }]
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "Identificação do pedido inválida.",
        "ErrorCode": 404,
        "ErrorField": "RetrySaleRequest.OrderKey",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 32,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "fab918db-e22d-46ed-86e6-8fe37061f156",
  "CreditCardTransactionResultCollection": null
}


{"_id":"5978f16cb8da85001f5081ee","category":"5978f16bb8da85001f5081cf","parentDoc":null,"user":"55831751870ff41900de479e","project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["56706a663d29830d0037621f"],"next":{"pages":[],"description":""},"createdAt":"2015-12-14T16:21:47.683Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":12,"body":"[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Como verificar o status de transações com o POST de notificação\"\n}\n[/block]\nPensando em automatizar seu controle sobre as informações das suas transações nosso time desenvolveu a funcionalidade de **posts de notificação**! Essa funcionalidade permite que você receba notificações sobre os status de suas transações em uma URL à sua escolha através de um POST feito pelo nosso time.\n\nPara habilitar os posts de notificação você precisa enviar um email para nosso time de relacionamento com o cliente (**integracoes@stone.com.br**) fornecendo a URL da página em que você deseja receber os posts.\n\nDepois de receber um post será necessário interpretá-lo para obter as informações necessárias sobre as transações em questão. Caso não consigamos notificá-lo na primeira tentativa, reenviaremos o post mais duas vezes.\n\nA resposta da sua URL ao POST de notificação deve possuir a mensagem \"OK\". Essa mensagem é um indicativo de que a requisição processada corretamente.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Enviando a URL na requisição\"\n}\n[/block]\nCaso você deseje, também é possível enviar, em cada transação, a URL para onde o post deve ser enviado no campo Options dentro do nó CreditCardTransaction ( para transações via cartão de crédito ) em cada requisição de criação de transação.\n\nTambém é possível o envio de mais de uma URL para recebimento dos posts. É só separar as URLs por \"|\" conforme o exemplo abaixo:\n\nhttp://Url1ParaReceberOsPosts.in/ | http://Url2ParaReceberOsPosts.in/\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"   <Options>\\n      <NotificationUrl>http://Url1ParaReceberOsPosts.in/</NotificationUrl>\\n   </Options>\",\n      \"language\": \"xml\"\n    },\n    {\n      \"code\": \"\\\"Options\\\":{\\n            \\\"NotificationUrl\\\":\\\"http://Url1ParaReceberOsPosts.in/\\\"\\n        }\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"POST de notificação e segurança\"\n}\n[/block]\nPara te proporcionar mais segurança, nossa equipe também disponibiliza a opção de criação de usuário e senha para recebimento dos posts. Se você quiser utilizar essa funcionalidade nós enviaremos o usuário e senha no header do POST utilizando a autenticação básica ( Base64 ).\n\nPor exemplo:\n\n* usuário: UsuarioStone\n\n* senha: SenhaStone\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Content-Type: application/json\\nHost: Url1ParaReceberOsPosts.in\\nAccept-Encoding: gzip\\nCf-Visitor: {\\\"scheme\\\":\\\"http\\\"}\\nX-Request-Id: 9be267ed-ba0f-4986-aaed-096d9713b6e7\\nTotal-Route-Time: 0\\nContent-Length: 566\\nCf-Ipcountry: US\\nCf-Connecting-Ip: 40.84.188.147\\nConnection: close\\nConnect-Time: 0\\nCf-Ray: 2f15eb3280b7261d-DFW\\nAuthorization: Basic TXVuZGlUZXN0Ok11bmRpU2VuaGE=\\nVia: 1.1 vegur\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Post de cartão de crédito\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"   <AmountInCents>100</AmountInCents>\\n   <AmountPaidInCents>0</AmountPaidInCents>\\n   <CreditCardTransaction>\\n      <Acquirer>Simulator</Acquirer>\\n      <AmountInCents>100</AmountInCents>\\n      <AuthorizationCode>937696</AuthorizationCode>\\n      <AuthorizedAmountInCents>100</AuthorizedAmountInCents>\\n      <CapturedAmountInCents>100</CapturedAmountInCents>\\n      <CreditCardBrand>Visa</CreditCardBrand>\\n      <CreditCardTransactionStatus>Captured</CreditCardTransactionStatus>\\n      <PreviousCreditCardTransactionStatus>AuthorizedPendingCapture</PreviousCreditCardTransactionStatus>\\n      <StatusChangedDate>2016-10-17T12:23:37.320</StatusChangedDate>\\n      <TransactionIdentifier>315773</TransactionIdentifier>\\n      <TransactionKey>a00a5445-f9d9-45bc-86d6-4bfeb0d9419b</TransactionKey>\\n      <TransactionReference>teste</TransactionReference>\\n      <UniqueSequentialNumber>851194</UniqueSequentialNumber>\\n   </CreditCardTransaction>\\n   <MerchantKey>5a2dd57f-1ed9-4153-b4ce-69683efada55</MerchantKey>\\n   <OrderKey>f4ad35ca-819f-445a-b73d-f0f5dde0b115</OrderKey>\\n   <OrderReference>0c00c681</OrderReference>\\n   <OrderStatus>Paid</OrderStatus>\",\n      \"language\": \"xml\"\n    },\n    {\n      \"code\": \"{\\n\\t\\\"CreditCardTransaction\\\": {\\n\\t\\t\\\"StatusChangedDate\\\": \\\"2016-10-17T12:23:37.320\\\",\\n\\t\\t\\\"TransactionKey\\\": \\\"a00a5445-f9d9-45bc-86d6-4bfeb0d9419b\\\",\\n\\t\\t\\\"TransactionReference\\\": \\\"teste\\\",\\n\\t\\t\\\"TransactionIdentifier\\\": \\\"315773\\\",\\n\\t\\t\\\"UniqueSequentialNumber\\\": \\\"851194\\\",\\n\\t\\t\\\"AmountInCents\\\": 100,\\n\\t\\t\\\"Acquirer\\\": \\\"Simulator\\\",\\n\\t\\t\\\"CreditCardBrand\\\": \\\"Visa\\\",\\n\\t\\t\\\"AuthorizedAmountInCents\\\": 100,\\n\\t\\t\\\"CapturedAmountInCents\\\": 100,\\n\\t\\t\\\"AuthorizationCode\\\": \\\"937696\\\",\\n\\t\\t\\\"PreviousCreditCardTransactionStatus\\\": \\\"AuthorizedPendingCapture\\\",\\n\\t\\t\\\"CreditCardTransactionStatus\\\": \\\"Captured\\\"\\n\\t},\\n\\t\\\"MerchantKey\\\": \\\"5a2dd57f-1ed9-4153-b4ce-69683efada55\\\",\\n\\t\\\"OrderReference\\\": \\\"0c00c681\\\",\\n\\t\\\"OrderKey\\\": \\\"f4ad35ca-819f-445a-b73d-f0f5dde0b115\\\",\\n\\t\\\"AmountInCents\\\": 100,\\n\\t\\\"AmountPaidInCents\\\": 0,\\n\\t\\\"OrderStatus\\\": \\\"Paid\\\"\\n}\\n\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"title\": \"Post de Boleto\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" ?>\\n\\t<BoletoTransaction>\\n\\t\\t<StatusChangedDate>2016-10-13T15:53:17.413</StatusChangedDate>\\n\\t\\t<TransactionKey>178a44eb-b015-4f29-83b7-11f50d023d6e</TransactionKey>\\n\\t\\t<TransactionReference>Boleto test</TransactionReference>\\n\\t\\t<BoletoExpirationDate>2016-10-18T15:47:49.690</BoletoExpirationDate>\\n\\t\\t<NossoNumero>00002879</NossoNumero>\\n\\t\\t<AmountInCents>100</AmountInCents>\\n\\t\\t<AmountPaidInCents>0</AmountPaidInCents>\\n\\t\\t<Bank>341</Bank>\\n\\t\\t<PreviousBoletoTransactionStatus>Generated</PreviousBoletoTransactionStatus>\\n\\t\\t<BoletoTransactionStatus>Paid</BoletoTransactionStatus>\\n\\t</BoletoTransaction>\\n\\t<MerchantKey>112dd57f-1ed9-4153-b4ce-69683efada22</MerchantKey>\\n\\t<OrderReference>15db3a2f</OrderReference>\\n\\t<OrderKey>ad3b7f85-298f-41bd-bdfe-96ed8c0a8f22</OrderKey>\\n\\t<AmountInCents>200</AmountInCents>\\n\\t<AmountPaidInCents>0</AmountPaidInCents>\\n\\t<OrderStatus>Paid</OrderStatus>\",\n      \"language\": \"xml\"\n    },\n    {\n      \"code\": \"{\\n\\t\\\"BoletoTransaction\\\": {\\n\\t\\t\\\"StatusChangedDate\\\": \\\"2016-10-13T15:53:17.413\\\",\\n\\t\\t\\\"TransactionKey\\\": \\\"178a44eb-b015-4f29-83b7-11f50d023d6e\\\",\\n\\t\\t\\\"TransactionReference\\\": \\\"Boleto test\\\",\\n\\t\\t\\\"BoletoExpirationDate\\\": \\\"2016-10-18T15:47:49.690\\\",\\n\\t\\t\\\"NossoNumero\\\": \\\"00002879\\\",\\n\\t\\t\\\"AmountInCents\\\": 100,\\n\\t\\t\\\"AmountPaidInCents\\\": 0,\\n\\t\\t\\\"Bank\\\": \\\"341\\\",\\n\\t\\t\\\"PreviousBoletoTransactionStatus\\\": \\\"Generated\\\",\\n\\t\\t\\\"BoletoTransactionStatus\\\": \\\"Paid\\\"\\n\\t},\\n\\t\\\"MerchantKey\\\": \\\"112dd57f-1ed9-4153-b4ce-69683efada22\\\",\\n\\t\\\"OrderReference\\\": \\\"15db3a2f\\\",\\n\\t\\\"OrderKey\\\": \\\"ad3b7f85-298f-41bd-bdfe-96ed8c0a8f22\\\",\\n\\t\\\"AmountInCents\\\": 200,\\n\\t\\\"AmountPaidInCents\\\": 0,\\n\\t\\\"OrderStatus\\\": \\\"Paid\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","excerpt":"Automatize sua consulta!","slug":"posts-de-notificação","type":"basic","title":"Status da Transação","__v":0,"childrenPages":[]}

Status da Transação

Automatize sua consulta!

Como verificar o status de transações com o POST de notificação

Pensando em automatizar seu controle sobre as informações das suas transações nosso time desenvolveu a funcionalidade de posts de notificação! Essa funcionalidade permite que você receba notificações sobre os status de suas transações em uma URL à sua escolha através de um POST feito pelo nosso time.

Para habilitar os posts de notificação você precisa enviar um email para nosso time de relacionamento com o cliente (integracoes@stone.com.br) fornecendo a URL da página em que você deseja receber os posts.

Depois de receber um post será necessário interpretá-lo para obter as informações necessárias sobre as transações em questão. Caso não consigamos notificá-lo na primeira tentativa, reenviaremos o post mais duas vezes.

A resposta da sua URL ao POST de notificação deve possuir a mensagem "OK". Essa mensagem é um indicativo de que a requisição processada corretamente.

Enviando a URL na requisição

Caso você deseje, também é possível enviar, em cada transação, a URL para onde o post deve ser enviado no campo Options dentro do nó CreditCardTransaction ( para transações via cartão de crédito ) em cada requisição de criação de transação.

Também é possível o envio de mais de uma URL para recebimento dos posts. É só separar as URLs por "|" conforme o exemplo abaixo:

http://Url1ParaReceberOsPosts.in/ | http://Url2ParaReceberOsPosts.in/

   <Options>
      <NotificationUrl>http://Url1ParaReceberOsPosts.in/</NotificationUrl>
   </Options>
"Options":{
            "NotificationUrl":"http://Url1ParaReceberOsPosts.in/"
        }


POST de notificação e segurança

Para te proporcionar mais segurança, nossa equipe também disponibiliza a opção de criação de usuário e senha para recebimento dos posts. Se você quiser utilizar essa funcionalidade nós enviaremos o usuário e senha no header do POST utilizando a autenticação básica ( Base64 ).

Por exemplo:

  • usuário: UsuarioStone

  • senha: SenhaStone

Content-Type: application/json
Host: Url1ParaReceberOsPosts.in
Accept-Encoding: gzip
Cf-Visitor: {"scheme":"http"}
X-Request-Id: 9be267ed-ba0f-4986-aaed-096d9713b6e7
Total-Route-Time: 0
Content-Length: 566
Cf-Ipcountry: US
Cf-Connecting-Ip: 40.84.188.147
Connection: close
Connect-Time: 0
Cf-Ray: 2f15eb3280b7261d-DFW
Authorization: Basic TXVuZGlUZXN0Ok11bmRpU2VuaGE=
Via: 1.1 vegur

Post de cartão de crédito

   <AmountInCents>100</AmountInCents>
   <AmountPaidInCents>0</AmountPaidInCents>
   <CreditCardTransaction>
      <Acquirer>Simulator</Acquirer>
      <AmountInCents>100</AmountInCents>
      <AuthorizationCode>937696</AuthorizationCode>
      <AuthorizedAmountInCents>100</AuthorizedAmountInCents>
      <CapturedAmountInCents>100</CapturedAmountInCents>
      <CreditCardBrand>Visa</CreditCardBrand>
      <CreditCardTransactionStatus>Captured</CreditCardTransactionStatus>
      <PreviousCreditCardTransactionStatus>AuthorizedPendingCapture</PreviousCreditCardTransactionStatus>
      <StatusChangedDate>2016-10-17T12:23:37.320</StatusChangedDate>
      <TransactionIdentifier>315773</TransactionIdentifier>
      <TransactionKey>a00a5445-f9d9-45bc-86d6-4bfeb0d9419b</TransactionKey>
      <TransactionReference>teste</TransactionReference>
      <UniqueSequentialNumber>851194</UniqueSequentialNumber>
   </CreditCardTransaction>
   <MerchantKey>5a2dd57f-1ed9-4153-b4ce-69683efada55</MerchantKey>
   <OrderKey>f4ad35ca-819f-445a-b73d-f0f5dde0b115</OrderKey>
   <OrderReference>0c00c681</OrderReference>
   <OrderStatus>Paid</OrderStatus>
{
	"CreditCardTransaction": {
		"StatusChangedDate": "2016-10-17T12:23:37.320",
		"TransactionKey": "a00a5445-f9d9-45bc-86d6-4bfeb0d9419b",
		"TransactionReference": "teste",
		"TransactionIdentifier": "315773",
		"UniqueSequentialNumber": "851194",
		"AmountInCents": 100,
		"Acquirer": "Simulator",
		"CreditCardBrand": "Visa",
		"AuthorizedAmountInCents": 100,
		"CapturedAmountInCents": 100,
		"AuthorizationCode": "937696",
		"PreviousCreditCardTransactionStatus": "AuthorizedPendingCapture",
		"CreditCardTransactionStatus": "Captured"
	},
	"MerchantKey": "5a2dd57f-1ed9-4153-b4ce-69683efada55",
	"OrderReference": "0c00c681",
	"OrderKey": "f4ad35ca-819f-445a-b73d-f0f5dde0b115",
	"AmountInCents": 100,
	"AmountPaidInCents": 0,
	"OrderStatus": "Paid"
}

Post de Boleto

<?xml version="1.0" encoding="UTF-8" ?>
	<BoletoTransaction>
		<StatusChangedDate>2016-10-13T15:53:17.413</StatusChangedDate>
		<TransactionKey>178a44eb-b015-4f29-83b7-11f50d023d6e</TransactionKey>
		<TransactionReference>Boleto test</TransactionReference>
		<BoletoExpirationDate>2016-10-18T15:47:49.690</BoletoExpirationDate>
		<NossoNumero>00002879</NossoNumero>
		<AmountInCents>100</AmountInCents>
		<AmountPaidInCents>0</AmountPaidInCents>
		<Bank>341</Bank>
		<PreviousBoletoTransactionStatus>Generated</PreviousBoletoTransactionStatus>
		<BoletoTransactionStatus>Paid</BoletoTransactionStatus>
	</BoletoTransaction>
	<MerchantKey>112dd57f-1ed9-4153-b4ce-69683efada22</MerchantKey>
	<OrderReference>15db3a2f</OrderReference>
	<OrderKey>ad3b7f85-298f-41bd-bdfe-96ed8c0a8f22</OrderKey>
	<AmountInCents>200</AmountInCents>
	<AmountPaidInCents>0</AmountPaidInCents>
	<OrderStatus>Paid</OrderStatus>
{
	"BoletoTransaction": {
		"StatusChangedDate": "2016-10-13T15:53:17.413",
		"TransactionKey": "178a44eb-b015-4f29-83b7-11f50d023d6e",
		"TransactionReference": "Boleto test",
		"BoletoExpirationDate": "2016-10-18T15:47:49.690",
		"NossoNumero": "00002879",
		"AmountInCents": 100,
		"AmountPaidInCents": 0,
		"Bank": "341",
		"PreviousBoletoTransactionStatus": "Generated",
		"BoletoTransactionStatus": "Paid"
	},
	"MerchantKey": "112dd57f-1ed9-4153-b4ce-69683efada22",
	"OrderReference": "15db3a2f",
	"OrderKey": "ad3b7f85-298f-41bd-bdfe-96ed8c0a8f22",
	"AmountInCents": 200,
	"AmountPaidInCents": 0,
	"OrderStatus": "Paid"
}
{"_id":"5978f16cb8da85001f5081ef","category":"5978f16bb8da85001f5081cf","project":"57ed53f75760ab190017b45e","parentDoc":null,"user":"55831751870ff41900de479e","version":"5978f16bb8da85001f5081cd","updates":["55feef24cc468e0d008dce16","560598aaf6b86e0d00284b79","560cb1e199bb5a0d0044f24e","561d345273f1a01700141632","56461a1483218f19006e7dac","56700e813d29830d003760fe","56701dd23a32d20d00c45b62","56bc9441fb9be80d00328036"],"next":{"pages":[],"description":""},"createdAt":"2015-07-28T22:17:45.649Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"ErrorReport\": null,\n  \"InternalTime\": 39,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"9d973047-f0e1-42cf-9437-4890e112d233\",\n  \"SaleDataCollection\": [\n    {\n      \"AntiFraudAnalysisData\": null,\n      \"BoletoTransactionDataCollection\": null,\n      \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n      \"CreditCardTransactionDataCollection\": [\n        {\n          \"AcquirerAuthorizationCode\": \"168147\",\n          \"AcquirerName\": \"Simulator\",\n          \"AcquirerReturnCode\": \"0\",\n          \"AffiliationCode\": \"000000000\",\n          \"AmountInCents\": 10000,\n          \"AuthorizedAmountInCents\": 10000,\n          \"CaptureExpirationDate\": null,\n          \"CapturedAmountInCents\": 10000,\n          \"CapturedDate\": \"2015-12-04T19:51:11\",\n          \"CreateDate\": \"2015-12-04T19:51:11\",\n          \"CreditCard\": {\n            \"CreditCardBrand\": \"Visa\",\n            \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n            \"IsExpiredCreditCard\": false,\n            \"MaskedCreditCardNumber\": \"411111****1111\"\n          },\n          \"CreditCardTransactionStatus\": \"Refunded\",\n          \"DueDate\": null,\n          \"InstallmentCount\": 1,\n          \"IsReccurency\": false,\n          \"PaymentMethodName\": \"Simulator\",\n          \"RefundedAmountInCents\": 10000,\n          \"TransactionIdentifier\": \"653355\",\n          \"TransactionKey\": \"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\",\n          \"TransactionKeyToAcquirer\": \"20ba05207d0944f8\",\n          \"TransactionReference\": \"1c65eaf7-df3c-4c7f-af63-f90fb6200996\",\n          \"UniqueSequentialNumber\": \"831691\",\n          \"VoidedAmountInCents\": null\n        }\n      ],\n      \"OrderData\": {\n        \"CreateDate\": \"2015-12-04T19:51:11\",\n        \"OrderKey\": \"219d7581-78e2-4aa9-b708-b7c585780bfc\",\n        \"OrderReference\": \"NumeroDoPedido\"\n      }\n    }\n  ],\n  \"SaleDataCount\": 1\n}","name":""},{"status":400,"language":"json","code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"Identificação do pedido inválida.\",\n        \"ErrorCode\": 404,\n        \"ErrorField\": \"QuerySaleRequest.OrderKey\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 17,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923,\n  \"RequestKey\": \"36462c6f-6b44-4a8d-85dd-b2ebdf865d6e\",\n  \"SaleDataCollection\": [],\n  \"SaleDataCount\": 0\n}","name":""}]},"settings":"561f139acfc3610d00567176","examples":{"codes":[]},"method":"get","auth":"required","params":[],"url":"/Sale/Query/OrderKey={OrderKey}"},"isReference":true,"order":13,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Guid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\nGuid orderKey = Guid.Parse(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n// Cria o cliente para consultar o pedido no gateway.\\nIGatewayServiceClient client = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Consulta o pedido.\\nvar httpResponse = client.Sale.QueryOrder(orderKey);\\n\\nif (httpResponse.HttpStatusCode == HttpStatusCode.OK) {\\n    foreach (var sale in httpResponse.Response.SaleDataCollection) {\\n        Console.WriteLine(\\\"Número do pedido: {0}\\\", sale.OrderData.OrderReference);\\n    }\\n}\",\n      \"language\": \"csharp\",\n      \"name\": \"C#\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a URL a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave de loja a ser utilizada\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Create new ApiClient object\\n    $client = new Gateway\\\\ApiClient();\\n\\n    // Make the call\\n    $response = $client->searchSaleByOrderKey(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\");\\n\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (Exception $ex)\\n{\\n    $httpStatusCode = 500;\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally {\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# creates request object for transaction\\nquerySaleRequest = Gateway::QuerySaleRequest.new\\n\\n# fill with order key from the transaction you wish to seek\\nquerySaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'\\n\\n# the request must be made using the enumerator Gateway::QuerySaleRequest.QuerySaleRequestEnum[:OrderKey]\\n# make the request and returns a response hash\\nputs responseQuery = gateway.Query(Gateway::QuerySaleRequest.QuerySaleRequestEnum[:OrderKey], querySaleRequest.OrderKey)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"from uuid import UUID\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\nhttp_response = service_client.sale.query_order_with_key(order_key='219d7581-78e2-4aa9-b708-b7c585780bfc')\\n\\njson_response = http_response.json()\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja \\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria o cliente que vai efetuar a operação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\n// Define a chave do pedido\\nUUID orderKey = UUID.fromString(\\\"219d7581-78e2-4aa9-b708-b7c585780bfc\\\"); // Chave do pedido\\n\\n// Submete a requisição\\nHttpResponseGenericResponse<QuerySaleResponse> httpResponse\\n\\t= serviceClient.getSale().QueryOrder(orderKey);\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\nPara facilitar a pesquisa de suas transações nossa equipe disponibiliza um método de pesquisa. Dessa forma, você pode consultar o status e outras informações referentes à suas transações!\n\nÉ só especificar na URL do GET o `OrderKey` ou o `OrderReference` da transação conforme ilustramos abaixo:\n\n* https://transaction.stone.com.br/Sale/Query/OrderKey=219d7581-78e2-4aa9-b708-b7c585780bfc\n\n* https://transaction.stone.com.br/Sale/Query/OrderReference=NumeroDoPedido\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"O limite do QueryOrder é disponibilizar apenas os 5 últimos pedidos associados a um OrderReference por vez.\",\n  \"title\": \"Número máximo de consultas\"\n}\n[/block]","excerpt":"","slug":"consulta","type":"get","title":"Consultando transações","__v":0,"childrenPages":[]}

getConsultando transações


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, new Uri("https://transaction.stone.com.br"));

// 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);
    }
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a URL a ser utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave de loja a ser utilizada
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Create new ApiClient object
    $client = new Gateway\ApiClient();

    // Make the call
    $response = $client->searchSaleByOrderKey("219d7581-78e2-4aa9-b708-b7c585780bfc");

}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally {
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# creates request object for transaction
querySaleRequest = Gateway::QuerySaleRequest.new

# fill with order key from the transaction you wish to seek
querySaleRequest.OrderKey = '219d7581-78e2-4aa9-b708-b7c585780bfc'

# the request must be made using the enumerator Gateway::QuerySaleRequest.QuerySaleRequestEnum[:OrderKey]
# make the request and returns a response hash
puts responseQuery = gateway.Query(Gateway::QuerySaleRequest.QuerySaleRequestEnum[:OrderKey], querySaleRequest.OrderKey)
from uuid import UUID
from stoneEcommercePython  import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

http_response = service_client.sale.query_order_with_key(order_key='219d7581-78e2-4aa9-b708-b7c585780bfc')

json_response = http_response.json()
// Define loja 
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria o cliente que vai efetuar a operação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

// Define a chave do pedido
UUID orderKey = UUID.fromString("219d7581-78e2-4aa9-b708-b7c585780bfc"); // Chave do pedido

// Submete a requisição
HttpResponseGenericResponse<QuerySaleResponse> httpResponse
	= serviceClient.getSale().QueryOrder(orderKey);

Para facilitar a pesquisa de suas transações nossa equipe disponibiliza um método de pesquisa. Dessa forma, você pode consultar o status e outras informações referentes à suas transações!

É só especificar na URL do GET o OrderKey ou o OrderReference da transação conforme ilustramos abaixo:

Número máximo de consultas

O limite do QueryOrder é disponibilizar apenas os 5 últimos pedidos associados a um OrderReference por vez.

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
  "ErrorReport": null,
  "InternalTime": 39,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "9d973047-f0e1-42cf-9437-4890e112d233",
  "SaleDataCollection": [
    {
      "AntiFraudAnalysisData": null,
      "BoletoTransactionDataCollection": null,
      "BuyerKey": "00000000-0000-0000-0000-000000000000",
      "CreditCardTransactionDataCollection": [
        {
          "AcquirerAuthorizationCode": "168147",
          "AcquirerName": "Simulator",
          "AcquirerReturnCode": "0",
          "AffiliationCode": "000000000",
          "AmountInCents": 10000,
          "AuthorizedAmountInCents": 10000,
          "CaptureExpirationDate": null,
          "CapturedAmountInCents": 10000,
          "CapturedDate": "2015-12-04T19:51:11",
          "CreateDate": "2015-12-04T19:51:11",
          "CreditCard": {
            "CreditCardBrand": "Visa",
            "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
            "IsExpiredCreditCard": false,
            "MaskedCreditCardNumber": "411111****1111"
          },
          "CreditCardTransactionStatus": "Refunded",
          "DueDate": null,
          "InstallmentCount": 1,
          "IsReccurency": false,
          "PaymentMethodName": "Simulator",
          "RefundedAmountInCents": 10000,
          "TransactionIdentifier": "653355",
          "TransactionKey": "20ba0520-7d09-44f8-8fbc-e4329e2b18d5",
          "TransactionKeyToAcquirer": "20ba05207d0944f8",
          "TransactionReference": "1c65eaf7-df3c-4c7f-af63-f90fb6200996",
          "UniqueSequentialNumber": "831691",
          "VoidedAmountInCents": null
        }
      ],
      "OrderData": {
        "CreateDate": "2015-12-04T19:51:11",
        "OrderKey": "219d7581-78e2-4aa9-b708-b7c585780bfc",
        "OrderReference": "NumeroDoPedido"
      }
    }
  ],
  "SaleDataCount": 1
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "Identificação do pedido inválida.",
        "ErrorCode": 404,
        "ErrorField": "QuerySaleRequest.OrderKey",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 17,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923,
  "RequestKey": "36462c6f-6b44-4a8d-85dd-b2ebdf865d6e",
  "SaleDataCollection": [],
  "SaleDataCount": 0
}


{"_id":"5978f16cb8da85001f5081f0","category":"5978f16bb8da85001f5081cf","parentDoc":null,"project":"57ed53f75760ab190017b45e","user":"55831751870ff41900de479e","version":"5978f16bb8da85001f5081cd","updates":["567811dacdb94219009a3e9e","5678a548239fac0d00c7ded1","5678a7d884397c0d00fe12e6","568d56ae6b3c3c0d00838b99","56bc951c5e104b0d00e7afb8"],"next":{"pages":[],"description":""},"createdAt":"2015-07-28T22:36:30.867Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[]},"method":"post","results":{"codes":[{"name":"","status":201,"language":"json","code":"{\n  \"ErrorReport\": null,\n  \"InternalTime\": 193,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"bfb4ccb4-0c41-4de0-8e10-6457181318a4\",\n  \"CreditCardTransactionResultCollection\": [\n    {\n      \"AcquirerMessage\": \"Simulator|Transação de simulação autorizada com sucesso\",\n      \"AcquirerName\": \"Simulator\",\n      \"AcquirerReturnCode\": \"0\",\n      \"AffiliationCode\": \"000000000\",\n      \"AmountInCents\": 100,\n      \"AuthorizationCode\": \"448584\",\n      \"AuthorizedAmountInCents\": 100,\n      \"CapturedAmountInCents\": 100,\n      \"CreditCard\": {\n        \"CreditCardBrand\": \"Mastercard\",\n        \"InstantBuyKey\": \"7a34bc3f-daa0-4e37-ac6b-cf99867ec197\",\n        \"IsExpiredCreditCard\": false,\n        \"MaskedCreditCardNumber\": \"231011****1111\"\n      },\n      \"CreditCardOperation\": \"AuthAndCapture\",\n      \"CreditCardTransactionStatus\": \"Captured\",\n      \"ExternalTime\": 0,\n      \"PaymentMethodName\": \"Simulator\",\n      \"Success\": true,\n      \"TransactionIdentifier\": \"61014\",\n      \"TransactionKey\": \"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\",\n      \"TransactionKeyToAcquirer\": \"bd8bf2f8507c42bb\",\n      \"TransactionReference\": \"ef0b2798-e90c-464f-a9ed-cde575ca69e2\",\n      \"UniqueSequentialNumber\": \"360012\",\n    }\n  ],\n  \"OrderResult\": {\n    \"CreateDate\": \"2015-07-24T22:09:45\",\n    \"OrderKey\": \"219d7581-78e2-4aa9-b708-b7c585780bfc\",\n    \"OrderReference\": \"NumeroDoPedido\"\n  }\n}"},{"status":400,"language":"json","code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"A bandeira Invalida atualmente não é suportada.\",\n        \"ErrorCode\": 400,\n        \"ErrorField\": \"CreditCardBrand\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 0,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"fb0f6d14-3564-4ac2-bc88-9d319816b966\",\n  \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n}","name":null}]},"settings":"561f139acfc3610d00567176","auth":"required","params":[],"url":"/Sale"},"isReference":true,"order":14,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"#region Monta a requisicao\\n\\nvar boletoTransaction = new BoletoTransaction() {\\n    AmountInCents = 10000,\\n    BankNumber = \\\"237\\\",\\n    BillingAddress = new BillingAddress() {\\n        City = \\\"Tatooine\\\",\\n        Complement = \\\"\\\",\\n        Country = CountryEnum.Brazil.ToString(),\\n        Number = \\\"123\\\",\\n        District = \\\"Mos Eisley\\\",\\n        State = \\\"RJ\\\",\\n        Street = \\\"Mos Eisley Cantina\\\",\\n        ZipCode = \\\"20001000\\\"\\n    },\\n    DocumentNumber = \\\"12345678901\\\",\\n    Instructions = \\\"Pagar antes do vencimento\\\",\\n    Options = new BoletoTransactionOptions() {\\n        CurrencyIso = CurrencyIsoEnum.BRL,\\n        DaysToAddInBoletoExpirationDate = 5\\n    },\\n    TransactionReference = \\\"NumeroDaTransacao\\\"\\n};\\n\\n// Cria o comprador.\\nBuyer buyer = new Buyer() {\\n    AddressCollection = new Collection<BuyerAddress>(),\\n    Birthdate = new DateTime(1990, 8, 20),\\n    BuyerCategory = BuyerCategoryEnum.Normal,\\n    BuyerReference = \\\"C3PO\\\",\\n    CreateDateInMerchant = DateTime.Now,\\n    DocumentNumber = \\\"12345678901\\\",\\n    DocumentType = DocumentTypeEnum.CPF,\\n    Email = \\\"lskywalker@r2d2.com\\\",\\n    EmailType = EmailTypeEnum.Personal,\\n    FacebookId = \\\"lukeskywalker8917\\\",\\n    Gender = GenderEnum.M,\\n    HomePhone = \\\"(21)123456789\\\",\\n    MobilePhone = \\\"(21)987654321\\\",\\n    Name = \\\"Luke Skywalker\\\",\\n    PersonType = PersonTypeEnum.Person,\\n    TwitterId = \\\"@lukeskywalker8917\\\",\\n    WorkPhone = \\\"(21)28467902\\\"\\n};\\n// Adiciona um endereço para o comprador.\\nbuyer.AddressCollection.Add(new BuyerAddress() {\\n    AddressType = AddressTypeEnum.Residential,\\n    City = \\\"Tatooine\\\",\\n    Complement = \\\"\\\",\\n    Country = CountryEnum.Brazil.ToString(),\\n    District = \\\"Mos Eisley\\\",\\n    Number = \\\"123\\\",\\n    State = \\\"RJ\\\",\\n    Street = \\\"Mos Eisley Cantina\\\",\\n    ZipCode = \\\"20001000\\\"\\n});\\n\\n// Cria a transação de cartão de crédito.\\nvar creditCardTransaction = new CreditCardTransaction() {\\n    AmountInCents = 10000,\\n    CreditCard = new CreditCard() {\\n        BillingAddress = new BillingAddress() {\\n            City = \\\"Tatooine\\\",\\n            Complement = \\\"\\\",\\n            Country = CountryEnum.Brazil.ToString(),\\n            District = \\\"Mos Eisley\\\",\\n            Number = \\\"123\\\",\\n            State = \\\"RJ\\\",\\n            Street = \\\"Mos Eisley Cantina\\\",\\n            ZipCode = \\\"20001000\\\"\\n        },\\n        CreditCardBrand = CreditCardBrandEnum.Visa,\\n        CreditCardNumber = \\\"4111111111111111\\\",\\n        ExpMonth = 10,\\n        ExpYear = 22,\\n        HolderName = \\\"LUKE SKYWALKER\\\",\\n        SecurityCode = \\\"123\\\"\\n    },\\n    CreditCardOperation = CreditCardOperationEnum.AuthOnly,\\n    InstallmentCount = 1,\\n    Options = new CreditCardTransactionOptions() {\\n        CurrencyIso = CurrencyIsoEnum.BRL,\\n        PaymentMethodCode = 1,\\n        SoftDescriptorText = \\\"Jedi Mega Store\\\"\\n    },\\n    TransactionReference = \\\"NumeroDaTransacao\\\"\\n};\\n\\n// Dados da loja.\\nMerchant merchant = new Merchant() {\\n    MerchantReference = \\\"IdDaLojaPlataforma\\\"\\n};\\n\\n// Opções da requisição.\\nSaleOptions saleOptions = new SaleOptions() {\\n    AntiFraudServiceCode = 0,\\n    CurrencyIso = CurrencyIsoEnum.BRL,\\n    IsAntiFraudEnabled = true, // Habilita a integração com o serviço de anti fraude\\n    Retries = 1 // Quantidade máxima de retentativas para o cartão de crédito.\\n};\\n\\n// Dados da requisição no site da loja.\\nRequestData requestData = new RequestData() {\\n    EcommerceCategory = EcommerceCategoryEnum.B2C,\\n    IpAddress = \\\"127.0.0.1\\\",\\n    Origin = \\\"SiteDeCompra\\\",\\n    SessionId = \\\"IdSesssaoNoSite\\\"\\n};\\n\\n// Cria o carrinho de compras.\\nShoppingCart shoppintCart = new ShoppingCart() {\\n    DeliveryAddress = new DeliveryAddress() {\\n        City = \\\"Galaxy far far away\\\",\\n        Complement = \\\"Bridge\\\",\\n        Country = CountryEnum.Brazil.ToString(),\\n        District = \\\"Command Room\\\",\\n        Number = \\\"321\\\",\\n        State = \\\"RJ\\\",\\n        Street = \\\"Death Star\\\",\\n        ZipCode = \\\"10002000\\\"\\n    },\\n    DeliveryDeadline = DateTime.Now.AddDays(3),\\n    EstimatedDeliveryDate = DateTime.Now.AddDays(3),\\n    FreightCostInCents = 2000,\\n    ShippingCompany = \\\"Empire\\\",\\n    ShoppingCartItemCollection = new Collection<ShoppingCartItem>()\\n};\\n\\n// Adiciona um produto no carrinho de compras.\\nshoppintCart.ShoppingCartItemCollection.Add(new ShoppingCartItem() {\\n    Description = \\\"Red Lightsaber\\\",\\n    DiscountAmountInCents = 0,\\n    ItemReference = \\\"NumeroDoProduto\\\",\\n    Name = \\\"Lightsaber\\\",\\n    Quantity = 1,\\n    TotalCostInCents = 18000,\\n    UnitCostInCents = 18000\\n});\\n\\n#endregion\\n\\n// Cria requisição.\\nvar createSaleRequest = new CreateSaleRequest() {\\n    // Adiciona o boleto na requisição.\\n    BoletoTransactionCollection = new Collection<BoletoTransaction>(new BoletoTransaction[] { boletoTransaction }),\\n    Buyer = buyer,\\n    // Adiciona a transação de cartão de crédito na requisição.\\n    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { creditCardTransaction }),\\n    Merchant = merchant,\\n    Options = saleOptions,\\n    Order = new Order() {\\n        OrderReference = \\\"NumeroDoPedido\\\"\\n    },\\n    RequestData = requestData,\\n    ShoppingCartCollection = new Collection<ShoppingCart>(new ShoppingCart[] { shoppintCart })\\n};\\n\\n// Coloque a sua MerchantKey aqui.\\nGuid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n// Cria o client que enviará a transação.\\nvar serviceClient = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Autoriza a transação e recebe a resposta do gateway.\\nvar httpResponse = serviceClient.Sale.Create(createSaleRequest);\\n\\nConsole.WriteLine(\\\"Código retorno: {0}\\\", httpResponse.HttpStatusCode);\\nConsole.WriteLine(\\\"Chave do pedido: {0}\\\", httpResponse.Response.OrderResult.OrderKey);\\nif (httpResponse.Response.CreditCardTransactionResultCollection != null) {\\n    Console.WriteLine(\\\"Status transação de cartão: {0}\\\", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);\\n}\\nif (httpResponse.Response.BoletoTransactionResultCollection != null) {\\n                Console.WriteLine(\\\"Status transação de boleto: {0}\\\", httpResponse.Response.BoletoTransactionResultCollection.FirstOrDefault().BoletoTransactionStatus);\\n            }\",\n      \"language\": \"csharp\",\n      \"name\": \"C#\"\n    },\n    {\n      \"code\": \"<?php\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '\\\\vendor\\\\autoload.php');\\n\\n    // Define a url utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave de loja\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria objeto da requisição\\n    $request = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequest();\\n\\n    // Dados da transação de boleto\\n    $boletoTransaction = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequestData\\\\BoletoTransaction();\\n    \\n    $boletoTransaction\\n    ->setAmountInCents(10000)\\n    ->setBankNumber(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\BankEnum::BRADESCO)\\n    ->setDocumentNumber(\\\"12345678901\\\")\\n    ->setInstructions(\\\"Pagar antes do vencimento\\\")\\n    ->setTransactionReference(\\\"NumeroDaTransacao\\\")\\n    ->getOptions()\\n    ->setCurrencyIso(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CurrencyIsoEnum::BRL)\\n    ->setDaysToAddInBoletoExpirationDate(5);\\n\\n    // Endereço de cobrança da transação de boleto\\n    $boletoTransaction->getBillingAddress()\\n    ->setAddressType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\AddressTypeEnum::BILLING)\\n    ->setStreet(\\\"Mos Eisley Cantina\\\")\\n    ->setNumber(\\\"123\\\")\\n    ->setComplement(\\\"\\\")\\n    ->setDistrict(\\\"Mos Eisley\\\")\\n    ->setCity(\\\"Tatooine\\\")\\n    ->setState(\\\"RJ\\\")\\n    ->setZipCode(\\\"20001000\\\")\\n    ->setCountry(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CountryEnum::BRAZIL);\\n\\n    $request->addBoletoTransaction($boletoTransaction);\\n\\n    // Dados do comprador\\n    $request->getBuyer()\\n    ->setName(\\\"Luke Skywalker\\\")\\n    ->setPersonType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\PersonTypeEnum::PERSON)\\n    ->setBuyerReference(\\\"C3PO\\\")\\n    ->setDocumentNumber(\\\"12345678901\\\")\\n    ->setDocumentType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\DocumentTypeEnum::CPF)\\n    ->setEmail(\\\"lskywalker@r2d2.com\\\")\\n    ->setEmailType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\EmailTypeEnum::PERSONAL)\\n    ->setGender(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\GenderEnum::MALE)\\n    ->setHomePhone(\\\"(21)123456789\\\")\\n    ->setMobilePhone(\\\"(21)987654321\\\")\\n    ->setWorkPhone(\\\"(21)28467902\\\")\\n    ->setBirthDate(\\\\DateTime::createFromFormat('d/m/Y', '20/08/1990'))\\n    ->setFacebookId(\\\"lukeskywalker8917\\\")\\n    ->setTwitterId(\\\"@lukeskywalker8917\\\")\\n    ->setCreateDateInMerchant(new \\\\DateTime())\\n    ->addAddress()\\n    ->setAddressType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\AddressTypeEnum::RESIDENTIAL)\\n    ->setStreet(\\\"Mos Eisley Cantina\\\")\\n    ->setNumber(\\\"123\\\")\\n    ->setComplement(\\\"\\\")\\n    ->setDistrict(\\\"Mos Eisley\\\")\\n    ->setCity(\\\"Tatooine\\\")\\n    ->setState(\\\"RJ\\\")\\n    ->setZipCode(\\\"20001000\\\")\\n    ->setCountry(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CountryEnum::BRAZIL);\\n\\n    // Dados da transação de cartão de crédito\\n    $creditCardTransaction = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequestData\\\\CreditCardTransaction();\\n    $request->addCreditCardTransaction($creditCardTransaction);\\n    $creditCardTransaction\\n    ->setAmountInCents(10000)\\n    ->setInstallmentCount(1)\\n    ->setCreditCardOperation(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CreditCardOperationEnum::AUTH_ONLY)\\n    ->setTransactionDateInMerchant(new DateTime())\\n    ->setTransactionReference(\\\"NumeroDaTransacao\\\")\\n    ->getCreditCard()\\n    ->setCreditCardBrand(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CreditCardBrandEnum::VISA)\\n    ->setCreditCardNumber(\\\"4111111111111111\\\")\\n    ->setExpMonth(10)\\n    ->setExpYear(2022)\\n    ->setHolderName(\\\"LUKE SKYWALKER\\\")\\n    ->setSecurityCode(\\\"123\\\")\\n    ->getBillingAddress()\\n    ->setAddressType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\AddressTypeEnum::BILLING)\\n    ->setStreet(\\\"Mos Eisley Cantina\\\")\\n    ->setNumber(\\\"123\\\")\\n    ->setComplement(\\\"\\\")\\n    ->setDistrict(\\\"Mos Eisley\\\")\\n    ->setCity(\\\"Tatooine\\\")\\n    ->setState(\\\"RJ\\\")\\n    ->setZipCode(\\\"20001000\\\")\\n    ->setCountry(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CountryEnum::BRAZIL);\\n\\n    // Opções da transação de cartão de crédito\\n    $creditCardTransaction->getOptions()\\n    ->setCurrencyIso(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CurrencyIsoEnum::BRL)\\n    ->setPaymentMethodCode(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\PaymentMethodEnum::SIMULATOR)\\n    ->setSoftDescriptorText(\\\"Jedi Mega Store\\\");\\n\\n    $request->getMerchant()\\n    ->setMerchantReference(\\\"IdDaLojaPlataforma\\\");\\n\\n    //Opções do pedido\\n    $request->getOptions()\\n    ->setAntiFraudServiceCode(0)\\n    ->setCurrencyIso(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CurrencyIsoEnum::BRL)\\n    ->enableAntiFraud()\\n    ->setRetries(1);\\n\\n    //Dados do pedido\\n    $request->getOrder()\\n    ->setOrderReference(\\\"NumeroDoPedido\\\");            \\n\\n    //Dados da requisição\\n    $request->getRequestData()\\n    ->setEcommerceCategory(\\\"B2C\\\")\\n    ->setIpAddress(\\\"127.0.0.1\\\")\\n    ->setOrigin(\\\"SiteDeCompra\\\")\\n    ->setSessionId(\\\"IdSessaoNoSite\\\");\\n\\n    //Dados do Carrinho de compras\\n    $shoppingCart = $request->addShoppingCart();\\n    $shoppingCart->setDeliveryDeadline(DateTime::createFromFormat(\\\"Y-m-d H:i:s\\\", '2015-12-14 18:36:45'));\\n    $shoppingCart->setEstimatedDeliveryDate(DateTime::createFromFormat(\\\"Y-m-d H:i:s\\\", '2015-12-14 18:36:45'));\\n    $shoppingCart->setFreightCostInCents(2000);\\n    $shoppingCart->setShippingCompany(\\\"Empire\\\");\\n    $shoppingCart->getDeliveryAddress()\\n    ->setAddressType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\AddressTypeEnum::SHIPPING)\\n    ->setStreet(\\\"Death Star\\\")\\n    ->setNumber(\\\"321\\\")\\n    ->setComplement(\\\"Bridge\\\")\\n    ->setDistrict(\\\"Command Room\\\")\\n    ->setCity(\\\"Galaxy far far away\\\")\\n    ->setState(\\\"RJ\\\")\\n    ->setZipCode(\\\"10002000\\\")\\n    ->setCountry(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CountryEnum::BRAZIL);\\n\\n    //Adiciona um item ao carrinho\\n    $shoppingCart->addShoppingCartItem()\\n    ->setDescription(\\\"Red Lightsaber\\\")\\n    ->setDiscountAmountInCents(0)\\n    ->setItemReference(\\\"NumeroDoProduto\\\")\\n    ->setName(\\\"Lightsaber\\\")\\n    ->setQuantity(1)\\n    ->setUnitCostInCents(18000)\\n    ->setTotalCostInCents(18000);\\n\\n    // Cria um novo objeto ApiClient\\n    $client = new Gateway\\\\ApiClient();\\n\\n    // Faz a chamada de criação\\n    $response = $client->createSale($request);\\n\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\CreditCardError $error)\\n{\\n    $response = array(\\\"message\\\" => $error->getMessage());\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (\\\\Exception $ex)\\n{\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally\\n{\\n    header('Content-Type: application/json');\\n    print json_encode($response->getData());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# creates boleto transaction object\\nboletoTransaction = Gateway::BoletoTransaction.new\\n\\n# 100 reais in cents\\nboletoTransaction.AmountInCents = 10000\\nboletoTransaction.BankNumber = '237'\\nboletoTransaction.BillingAddress.City = 'Tatooine'\\nboletoTransaction.BillingAddress.Complement = ''\\nboletoTransaction.BillingAddress.Country = 'Brazil'\\nboletoTransaction.BillingAddress.District = 'Mos Eisley'\\nboletoTransaction.BillingAddress.Number = '123'\\nboletoTransaction.BillingAddress.State = 'RJ'\\nboletoTransaction.BillingAddress.Street = 'Mos Eisley Cantina'\\nboletoTransaction.BillingAddress.ZipCode = '20001000'\\nboletoTransaction.DocumentNumber = '12345678901'\\nboletoTransaction.Instructions = 'Pagar antes do vencimento'\\nboletoTransaction.Options.CurrencyIso = 'BRL'\\nboletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5\\nboletoTransaction.TransactionReference = 'NumeroDaTransacao'\\n\\n\\n# create credit card transaction object\\ncreditCardTransaction = Gateway::CreditCardTransaction.new\\n\\n# 100 reais in cents \\ncreditCardTransaction.AmountInCents = 10000\\ncreditCardTransaction.CreditCard.BillingAddress.City = 'Tatooine'\\ncreditCardTransaction.CreditCard.BillingAddress.Complement = ''\\ncreditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'\\ncreditCardTransaction.CreditCard.BillingAddress.District = 'Mos Eisley'\\ncreditCardTransaction.CreditCard.BillingAddress.Number = '123'\\ncreditCardTransaction.CreditCard.BillingAddress.State = 'RJ'\\ncreditCardTransaction.CreditCard.BillingAddress.Street = 'Mos Eisley Cantina'\\ncreditCardTransaction.CreditCard.BillingAddress.ZipCode = '20001000'\\ncreditCardTransaction.CreditCard.CreditCardBrand = 'Visa'\\ncreditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'\\ncreditCardTransaction.CreditCard.ExpMonth = 10\\ncreditCardTransaction.CreditCard.ExpYear = 22\\ncreditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'\\ncreditCardTransaction.CreditCard.SecurityCode = '123'\\ncreditCardTransaction.CreditCardOperation = 'AuthOnly'\\ncreditCardTransaction.InstallmentCount = 1\\ncreditCardTransaction.Options.CurrencyIso = 'BRL'\\ncreditCardTransaction.Options.PaymentMethodCode = 1\\ncreditCardTransaction.Options.SoftDescriptorText = 'Jedi Mega Store'\\n\\nshoppingCartItem = Gateway::ShoppingCartItemCollection.new\\nshoppingCartItem.Description = 'Red Lightsaber'\\nshoppingCartItem.DiscountAmountInCents = 0\\nshoppingCartItem.ItemReference = 'NumeroDoProduto'\\nshoppingCartItem.Name = 'Lightsaber'\\nshoppingCartItem.Quantity = 1\\nshoppingCartItem.TotalCostInCents = 18000\\nshoppingCartItem.UnitCostInCents = 18000\\n\\nshoppingCartCollection = Gateway::ShoppingCartCollection.new\\nshoppingCartCollection.DeliveryAddress.City = 'Galaxy far far away'\\nshoppingCartCollection.DeliveryAddress.Complement = 'Bridge'\\nshoppingCartCollection.DeliveryAddress.Country = 'Brazil'\\nshoppingCartCollection.DeliveryAddress.District = 'Command Room'\\nshoppingCartCollection.DeliveryAddress.Number = '321'\\nshoppingCartCollection.DeliveryAddress.State = 'RJ'\\nshoppingCartCollection.DeliveryAddress.Street = 'Death Star'\\nshoppingCartCollection.DeliveryAddress.ZipCode = '10002000'\\nshoppingCartCollection.DeliveryDeadline = DateTime.new(2015, 12, 14, 18, 36, 45).strftime(\\\"%Y-%m-%dT%H:%M:%S\\\")\\nshoppingCartCollection.EstimatedDeliveryDate = DateTime.new(2015, 12, 14, 18, 36, 45).strftime(\\\"%Y-%m-%dT%H:%M:%S\\\")\\nshoppingCartCollection.FreighCostInCents = 2000\\nshoppingCartCollection.ShippingCompany = 'Empire'\\nshoppingCartCollection.ShoppingCartItemCollection << shoppingCartItem\\n\\n# creates request object for transaction creation\\ncreateSaleRequest = Gateway::CreateSaleRequest.new\\n\\n# adds to the boleto transaction collection\\ncreateSaleRequest.BoletoTransactionCollection << boletoTransaction\\n\\nbuyerAddress = Gateway::BuyerAddress.new\\nbuyerAddress.AddressType = 'Residential'\\nbuyerAddress.City = 'Tatooine'\\nbuyerAddress.Complement = ''\\nbuyerAddress.Country = 'Brazil'\\nbuyerAddress.District = 'Mos Eisley'\\nbuyerAddress.Number = '123'\\nbuyerAddress.State = 'RJ'\\nbuyerAddress.Street = 'Mos Eisley Cantina'\\nbuyerAddress.ZipCode = '20001000'\\n\\ncreateSaleRequest.Buyer.AddressCollection << buyerAddress\\ncreateSaleRequest.Buyer.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime(\\\"%Y-%m-%dT%H:%M:%S\\\")\\ncreateSaleRequest.Buyer.BuyerCategory = 'Normal'\\ncreateSaleRequest.Buyer.BuyerReference = 'C3PO'\\ncreateSaleRequest.Buyer.CreateDateInMerchant = DateTime.new(2015,12,11,18,36,45).strftime(\\\"%Y-%m-%dT%H:%M:%S\\\")\\ncreateSaleRequest.Buyer.DocumentNumber = '12345678901'\\ncreateSaleRequest.Buyer.DocumentType = 'CPF'\\ncreateSaleRequest.Buyer.Email = 'lskywalker@r2d2.com'\\ncreateSaleRequest.Buyer.EmailType = 'Personal'\\ncreateSaleRequest.Buyer.FacebookId = 'lukeskywalker8917'\\ncreateSaleRequest.Buyer.Gender = 'M'\\ncreateSaleRequest.Buyer.HomePhone = '(21)123456789'\\ncreateSaleRequest.Buyer.MobilePhone = '(21)987654321'\\ncreateSaleRequest.Buyer.Name = 'Luke Skywalker'\\ncreateSaleRequest.Buyer.PersonType = 'Person'\\ncreateSaleRequest.Buyer.TwitterId = '@lukeskywalker8917'\\ncreateSaleRequest.Buyer.WorkPhone = '(21)28467902'\\n\\n# adds to the credit card transaction collection\\ncreateSaleRequest.CreditCardTransactionCollection << creditCardTransaction\\ncreateSaleRequest.Merchant.MerchantReference = 'IdDaLojaPlataforma'\\ncreateSaleRequest.Options.AntiFraudServiceCode = 0\\ncreateSaleRequest.Options.CurrencyIso = 'BRL'\\ncreateSaleRequest.Options.IsAntiFraudEnabled = true\\ncreateSaleRequest.Options.Retries = 1\\ncreateSaleRequest.Order.OrderReference = 'NumeroDoPedido'\\ncreateSaleRequest.RequestData.EcommerceCategory = 'B2C'\\ncreateSaleRequest.RequestData.IpAddress = '127.0.0.1'\\ncreateSaleRequest.RequestData.Origin = 'SiteDeCompra'\\ncreateSaleRequest.RequestData.SessionId = 'IdSesssaoNoSite'\\n\\n# adds shopping cart collection in the request\\ncreateSaleRequest.ShoppingCartCollection << shoppingCartCollection\\n\\n# make the request and returns a response hash\\nresponse = gateway.CreateSale(createSaleRequest)\\n\\n# prints the response\\nputs response\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# -*- coding: utf-8 -*-\\n\\nfrom uuid import UUID\\nfrom data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order, buyer_address, buyer, billing_address,sale_options, delivery_address, shopping_cart_item, shopping_cart, boleto_transaction_options, boleto_transaction, merchant, request_data\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\nfrom datetime import datetime\\n\\n# Cria o endereco do comprador\\nbuyer_address_collection_data = [buyer_address(address_type = 'Residential', city = 'Tatooine', complement = '', country = 'Brazil', district = 'Mos Eisley', number = '123', state = 'RJ', street = 'Mos Eisley Cantina', zip_code = '20001000')]\\n\\n#Cria o comprador\\nbuyer_data = buyer(address_collection = buyer_address_collection_data, birth_date = '1990-08-20T00:00:00',buyer_category = 'Normal', buyer_reference = 'C3PO', create_date_in_merchant = datetime.now().strftime(\\\"%Y-%m-%dT%H:%M:%S\\\"), document_number = '12345678901' , document_type = 'CPF', email = 'lskywalker@r2d2.com', email_type = 'Personal',facebook_id = 'lukeskywalker8917', gender = 'M', home_phone = '(21)123456789', mobile_phone = '(21)987654321', name = 'Luke Skywalker', person_type = 'Person', twitter_id = '@lukeskywalker8917', work_phone = '(21)28467902')\\n\\n# Cria o endereco de cobranca\\nbilling_address_data = billing_address(city = 'Tatooine', complement = '', country = 'Brazil', district = 'Mos Eisley', number = '123', state = 'RJ', street = 'Mos Eisley Cantina', zip_code = '20001000')\\n\\n# Criando a transacao de cartao de credito.\\n##Coleta os dados do cartão.\\ncreditcard_data = creditcard(billing_address= billing_address_data, creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=22,\\n                             security_code='123', holder_name='LUKE SKYWALKER')\\n\\n## Cria as opcoes do cartao de credito\\ncreditcard_transaction_options_data = creditcard_transaction_options(payment_method_code = 1, soft_descriptor_text = 'Jedi Mega Store', currency_iso = 'BRL')\\n\\n## Cria a transação de cartao de credito.\\ncredit_card_transaction_collection_data = [creditcard_transaction(10000, creditcard_data, 'AuthOnly', installment_count = 1, options = creditcard_transaction_options_data, transaction_reference = 'NumeroDaTransacao')]\\n\\n# Criando a transacao de boleto\\nboleto_options = boleto_transaction_options(currency_iso = 'BRL', days_to_add_in_boleto_expiration_date = 5)\\n\\nboleto_transaction_collection_data = [ boleto_transaction(10000, bank_number = '237', document_number='12345678901', instructions='Pagar antes do vencimento', options = boleto_options,billing_address = billing_address_data )]\\n\\n# Habilita o antiFraud\\nsale_options_data = sale_options(is_anti_fraud_enabled = True, anti_fraud_service_code = 0, retries = 1, currency_iso_field = 'BRL')\\n\\n##Cria o numero do pedido\\norder_data = order(order_reference='NumeroDoPedido')\\n\\n# Criando o carrinho de compra\\n## Cria o endereco de entrega para o carrinho de compras\\ndelivery_address_data = delivery_address(city = 'Galaxy far far away', complement = 'Bridge', country = 'Brazil', district = 'Command Room', number = '321', state = 'RJ', street = 'Death Star', zip_code = '10002000')\\n\\n## Cria a colecao de item do carrinho de compras \\nshopping_cart_item_collection_data = [shopping_cart_item(description = 'Red Lightsaber', discount_amount_in_cents = 0, item_reference = 'NumeroDoProduto', name = 'Lightsaber', quantity = 1, total_cost_in_cents = 18000, unit_cost_in_cents = 18000)]\\n\\n## Cria o carrinho de compra\\nshopping_cart_collection_data = [shopping_cart(delivery_address = delivery_address_data, delivery_deadline = datetime.now().strftime(\\\"%Y-%m-%dT%H:%M:%S\\\"), estimated_delivery_date = datetime.now().strftime(\\\"%Y-%m-%dT%H:%M:%S\\\"), freight_cost_in_cents = 2000,shipping_company = 'Empire',  shopping_cart_item_collection = shopping_cart_item_collection_data)]\\n\\n# Cria o merchant\\nmerchant_data = merchant(merchant_reference = 'IdDaLojaPlataforma')\\n\\n# Cria os dados da requisição\\nrequest_data_data = request_data(ecommerce_category = 'B2C', ip_address = '127.0.0.1', origin = 'SiteDeCompra', session_id = 'IdSesssaoNoSite')\\n\\n# Cria a requisicao\\nrequest = create_sale_request(creditcard_transaction_collection = credit_card_transaction_collection_data, boleto_transaction_collection = boleto_transaction_collection_data, order = order_data, buyer = buyer_data, shopping_cart_collection = shopping_cart_collection_data, options = sale_options_data, merchant = merchant_data, request_data = request_data_data)\\n\\n# Coloque sua MerchantKey aqui.\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br\\\"\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\n# envia a transação e recebe a resposta do gateway.\\nhttp_response = service_client.sale.create_with_request(request)\\n\\n#Obtem a resposta em json.\\njson_response = http_response.json()\\n\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja\\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria objeto do endereço\\nBillingAddress billingAddress= new BillingAddress();\\nbillingAddress.setCity(\\\"Tatooine\\\");\\nbillingAddress.setComplement(\\\"\\\");\\nbillingAddress.setCountry(CountryEnum.Brazil);\\nbillingAddress.setDistrict(\\\"Mos Eisley\\\");\\nbillingAddress.setNumber(\\\"123\\\");\\nbillingAddress.setState(\\\"RJ\\\");\\nbillingAddress.setStreet(\\\"Mos Eisley Cantina\\\");\\nbillingAddress.setZipCode(\\\"20001000\\\");\\n\\n// Cria um objeto de transação de boleto\\nBoletoTransaction boletoTransaction = new BoletoTransaction();\\nboletoTransaction.setAmountInCents(10000L);\\nboletoTransaction.setBankNumber(\\\"237\\\");\\nboletoTransaction.setBillingAddress(billingAddress);\\nboletoTransaction.setDocumentNumber(\\\"12345678901\\\");\\nboletoTransaction.setInstructions(\\\"Pagar antes do vencimento\\\");\\nboletoTransaction.setTransactionReference(\\\"NumeroDaTransacao\\\");\\n\\n// Cria o objeto de options\\nBoletoTransactionOptions boletoTransactionOptions = new BoletoTransactionOptions();\\nboletoTransactionOptions.setCurrencyIso(CurrencyIsoEnum.BRL);\\nboletoTransactionOptions.setDaysToAddInBoletoExpirationDate(5);\\nboletoTransaction.setOptions(boletoTransactionOptions);\\n\\n// Cria objeto de endereço do Buyer\\nBuyerAddress buyerAddress = new BuyerAddress();\\nbuyerAddress.setAddressType(AddressTypeEnum.Residential);\\nbuyerAddress.setCity(\\\"Tatooine\\\");\\nbuyerAddress.setComplement(\\\"\\\");\\nbuyerAddress.setCountry(CountryEnum.Brazil);\\nbuyerAddress.setDistrict(\\\"Mos Eisley\\\");\\nbuyerAddress.setNumber(\\\"123\\\");\\nbuyerAddress.setState(\\\"RJ\\\");\\nbuyerAddress.setStreet(\\\"Mos Eisley Cantina\\\");\\nbuyerAddress.setZipCode(\\\"20001000\\\");\\n\\n// Cria coleção de endereços do buyer\\nArrayList<BuyerAddress> buyerAddressCollection = new ArrayList<BuyerAddress>();\\nbuyerAddressCollection.add(buyerAddress);\\n\\n// Cria objeto do buyer\\nBuyer buyer = new Buyer();\\nbuyer.setAddressCollection(buyerAddressCollection);\\nbuyer.setBirthdate(Date.valueOf(\\\"1990-12-11\\\"));\\nbuyer.setBuyerCategory(BuyerCategoryEnum.Normal);\\nbuyer.setBuyerReference(\\\"C3PO\\\");\\nbuyer.setCreateDateInMerchant(Date.valueOf(\\\"2015-12-11\\\"));\\nbuyer.setDocumentNumber(\\\"12345678901\\\");\\nbuyer.setDocumentType(DocumentTypeEnum.CPF);\\nbuyer.setEmail(\\\"lskywalker@r2d2.com\\\");\\nbuyer.setEmailType(EmailTypeEnum.Personal);\\nbuyer.setFacebookId(\\\"lukeskywalker8917\\\");\\nbuyer.setGender(GenderEnum.M);\\nbuyer.setHomePhone(\\\"(21)123456789\\\");\\nbuyer.setMobilePhone(\\\"(21)987654321\\\");\\nbuyer.setName(\\\"Luke Skywalker\\\");\\nbuyer.setPersonType(PersonTypeEnum.Person);\\nbuyer.setTwitterId(\\\"@lukeskywalker8917\\\");\\nbuyer.setWorkPhone(\\\"(21)28467902\\\");\\n\\n// Cria um cartão de crédito e define endereço de cobrança\\nCreditCard creditCard = new CreditCard();\\ncreditCard.setBillingAddress(billingAddress);\\ncreditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);\\ncreditCard.setCreditCardNumber(\\\"4111111111111111\\\");\\ncreditCard.setExpMonth(10);\\ncreditCard.setExpYear(22);\\ncreditCard.setHolderName(\\\"LUKE SKYWALKER\\\");\\ncreditCard.setSecurityCode(\\\"123\\\");\\n\\n// Cria a transação de cartão de crédito e define cartão criado anteriormente\\nCreditCardTransaction creditCardTransaction = new CreditCardTransaction();\\ncreditCardTransaction.setAmountInCents(10000L);\\ncreditCardTransaction.setCreditCard(creditCard);\\ncreditCardTransaction.setCreditCardOperation(CreditCardOperationEnum.AuthOnly);\\ncreditCardTransaction.setInstallmentCount(1);\\ncreditCardTransaction.setOptions(new CreditCardTransactionOptions());\\ncreditCardTransaction.getOptions().setCurrencyIso(CurrencyIsoEnum.BRL);\\ncreditCardTransaction.getOptions().setPaymentMethodCode(1);\\ncreditCardTransaction.getOptions().setSoftDescriptorText(\\\"Jedi Mega Store\\\");\\ncreditCardTransaction.setTransactionReference(\\\"NumeroDaTransacao\\\");\\n\\n// Cria o objeto order para adicionar o Order Reference\\nOrder order = new Order();\\norder.setOrderReference(\\\"NúmeroDoPedido\\\");\\n\\n// Cria item o shopping cart\\nShoppingCartItem shoppingCartItem = new ShoppingCartItem();\\nshoppingCartItem.setDescription(\\\"Red Lightsaber\\\");\\nshoppingCartItem.setDiscountAmountInCents(0L);\\nshoppingCartItem.setItemReference(\\\"NumeroDoProduto\\\");\\nshoppingCartItem.setName(\\\"Lightsaber\\\");\\nshoppingCartItem.setQuantity(1);\\nshoppingCartItem.setTotalCostInCents(18000);\\nshoppingCartItem.setUnitCostInCents(18000);\\n\\n// Cria shopping cart\\nShoppingCart shoppingCart = new ShoppingCart();\\nshoppingCart.setDeliveryAddress(new DeliveryAddress());\\nshoppingCart.getDeliveryAddress().setCity(\\\"Galaxy Far Far Away\\\");\\nshoppingCart.getDeliveryAddress().setComplement(\\\"Bridge\\\");\\nshoppingCart.getDeliveryAddress().setCountry(CountryEnum.Brazil);\\nshoppingCart.getDeliveryAddress().setDistrict(\\\"Command Room\\\");\\nshoppingCart.getDeliveryAddress().setNumber(\\\"321\\\");\\nshoppingCart.getDeliveryAddress().setState(\\\"RJ\\\");\\nshoppingCart.getDeliveryAddress().setStreet(\\\"Death Star\\\");\\nshoppingCart.getDeliveryAddress().setZipCode(\\\"10002000\\\");\\nshoppingCart.setDeliveryDeadline(Date.valueOf(\\\"2015-12-14\\\"));\\nshoppingCart.setEstimatedDeliveryDate(Date.valueOf(\\\"2015-12-14\\\"));\\nshoppingCart.setFreightCostInCents(2000);\\nshoppingCart.setShippingCompany(\\\"Empire\\\");\\nshoppingCart.setShoppingCartItemCollection(new ArrayList<>());\\nshoppingCart.getShoppingCartItemCollection().add(shoppingCartItem);\\n\\n// Cria o Sale Request para enviar o objeto de request\\nCreateSaleRequest createSaleRequest = new CreateSaleRequest();\\ncreateSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());\\ncreateSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);\\ncreateSaleRequest.setBoletoTransactionCollection(new ArrayList<>());\\ncreateSaleRequest.getBoletoTransactionCollection().add(boletoTransaction);\\ncreateSaleRequest.setMerchant(new Merchant());\\ncreateSaleRequest.getMerchant().setMerchantReference(\\\"IdDaLojaPlataforma\\\");\\ncreateSaleRequest.setOptions(new SaleOptions());\\ncreateSaleRequest.getOptions().setAntiFraudServiceCode(0);\\ncreateSaleRequest.getOptions().setCurrencyIso(CurrencyIsoEnum.BRL);\\ncreateSaleRequest.getOptions().setIsAntiFraudEnabled(Boolean.TRUE);\\ncreateSaleRequest.getOptions().setRetries(1);\\ncreateSaleRequest.setOrder(order);\\ncreateSaleRequest.setRequestData(new RequestData());\\ncreateSaleRequest.getRequestData().setEcommerceCategory(EcommerceCategoryEnum.B2C);\\ncreateSaleRequest.getRequestData().setIpAddress(\\\"127.0.0.1\\\");\\ncreateSaleRequest.getRequestData().setOrigin(\\\"SiteDeCompra\\\");\\ncreateSaleRequest.getRequestData().setSessionId(\\\"IdSessaoNoSite\\\");\\ncreateSaleRequest.setShoppingCartCollection(new ArrayList<>());\\ncreateSaleRequest.getShoppingCartCollection().add(shoppingCart);\\n\\n// Cria o cliente que vai enviar a transação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\n// Submete a transação e retorna a resposta do gateway\\nHttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse\\n        = serviceClient.getSale().Create(createSaleRequest);\\n\\nreturn httpResponse.getRawResponse();\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"{\\n    \\\"BoletoTransactionCollection\\\": [\\n        {\\n            \\\"AmountInCents\\\": 10000,\\n            \\\"BankNumber\\\": \\\"237\\\",\\n            \\\"BillingAddress\\\": {\\n                \\\"City\\\": \\\"Tatooine\\\",\\n                \\\"Complement\\\": \\\"\\\",\\n                \\\"Country\\\": \\\"Brazil\\\",\\n                \\\"District\\\": \\\"Mos Eisley\\\",\\n                \\\"Number\\\": \\\"123\\\",\\n                \\\"State\\\": \\\"RJ\\\",\\n                \\\"Street\\\": \\\"Mos Eisley Cantina\\\",\\n                \\\"ZipCode\\\": \\\"20001000\\\"\\n            },\\n            \\\"DocumentNumber\\\": \\\"12345678901\\\",\\n            \\\"Instructions\\\": \\\"Pagar antes do vencimento\\\",\\n            \\\"Options\\\": {\\n                \\\"CurrencyIso\\\": \\\"BRL\\\",\\n                \\\"DaysToAddInBoletoExpirationDate\\\": 5\\n            },\\n            \\\"TransactionReference\\\": \\\"NumeroDaTransacao\\\"\\n        }\\n    ],\\n    \\\"Buyer\\\": {\\n        \\\"AddressCollection\\\": [\\n            {\\n                \\\"AddressType\\\": \\\"Residential\\\",\\n                \\\"City\\\": \\\"Tatooine\\\",\\n                \\\"Complement\\\": \\\"\\\",\\n                \\\"Country\\\": \\\"Brazil\\\",\\n                \\\"District\\\": \\\"Mos Eisley\\\",\\n                \\\"Number\\\": \\\"123\\\",\\n                \\\"State\\\": \\\"RJ\\\",\\n                \\\"Street\\\": \\\"Mos Eisley Cantina\\\",\\n                \\\"ZipCode\\\": \\\"20001000\\\"\\n            }\\n        ],\\n        \\\"Birthdate\\\": \\\"1990-08-20T00:00:00\\\",\\n        \\\"BuyerCategory\\\": \\\"Normal\\\",\\n        \\\"BuyerReference\\\": \\\"C3PO\\\",\\n        \\\"CreateDateInMerchant\\\": \\\"2015-12-11T18:36:45\\\",\\n        \\\"DocumentNumber\\\": \\\"12345678901\\\",\\n        \\\"DocumentType\\\": \\\"CPF\\\",\\n        \\\"Email\\\": \\\"lskywalker@r2d2.com\\\",\\n        \\\"EmailType\\\": \\\"Personal\\\",\\n        \\\"FacebookId\\\": \\\"lukeskywalker8917\\\",\\n        \\\"Gender\\\": \\\"M\\\",\\n        \\\"HomePhone\\\": \\\"(21)123456789\\\",\\n        \\\"MobilePhone\\\": \\\"(21)987654321\\\",\\n        \\\"Name\\\": \\\"Luke Skywalker\\\",\\n        \\\"PersonType\\\": \\\"Person\\\",\\n        \\\"TwitterId\\\":\\\"@lukeskywalker8917\\\",\\n        \\\"WorkPhone\\\": \\\"(21)28467902\\\"\\n    },\\n    \\\"CreditCardTransactionCollection\\\": [\\n        {\\n            \\\"AmountInCents\\\": 10000,\\n            \\\"CreditCard\\\": {\\n                \\\"BillingAddress\\\": {\\n                    \\\"City\\\": \\\"Tatooine\\\",\\n                    \\\"Complement\\\": \\\"\\\",\\n                    \\\"Country\\\": \\\"Brazil\\\",\\n                    \\\"District\\\": \\\"Mos Eisley\\\",\\n                    \\\"Number\\\": \\\"123\\\",\\n                    \\\"State\\\": \\\"RJ\\\",\\n                    \\\"Street\\\": \\\"Mos Eisley Cantina\\\",\\n                    \\\"ZipCode\\\": \\\"20001000\\\"\\n                },\\n                \\\"CreditCardBrand\\\": \\\"Visa\\\",\\n                \\\"CreditCardNumber\\\": \\\"4111111111111111\\\",\\n                \\\"ExpMonth\\\": 10,\\n                \\\"ExpYear\\\": 22,\\n                \\\"HolderName\\\": \\\"LUKE SKYWALKER\\\",\\n                \\\"SecurityCode\\\": \\\"123\\\"\\n            },\\n            \\\"CreditCardOperation\\\": \\\"AuthOnly\\\",\\n            \\\"InstallmentCount\\\": 1,\\n            \\\"Options\\\": {\\n                \\\"CurrencyIso\\\": \\\"BRL\\\",\\n                \\\"PaymentMethodCode\\\": 1,\\n                \\\"SoftDescriptorText\\\": \\\"Jedi Mega Store\\\"\\n            },\\n            \\\"TransactionReference\\\": \\\"NumeroDaTransacao\\\"\\n        }\\n    ],\\n    \\\"Merchant\\\": {\\n        \\\"MerchantReference\\\": \\\"IdDaLojaPlataforma\\\"\\n    },\\n    \\\"Options\\\": {\\n        \\\"AntiFraudServiceCode\\\": 0,\\n        \\\"CurrencyIso\\\": \\\"BRL\\\",\\n        \\\"IsAntiFraudEnabled\\\": true,\\n        \\\"Retries\\\": 1\\n    },\\n    \\\"Order\\\": {\\n        \\\"OrderReference\\\": \\\"NumeroDoPedido\\\"\\n    },\\n    \\\"RequestData\\\": {\\n        \\\"EcommerceCategory\\\": \\\"B2C\\\",\\n        \\\"IpAddress\\\": \\\"127.0.0.1\\\",\\n        \\\"Origin\\\": \\\"SiteDeCompra\\\",\\n        \\\"SessionId\\\": \\\"IdSesssaoNoSite\\\"\\n    },\\n    \\\"ShoppingCartCollection\\\": [\\n        {\\n            \\\"DeliveryAddress\\\": {\\n                \\\"City\\\": \\\"Galaxy far far away\\\",\\n                \\\"Complement\\\": \\\"Bridge\\\",\\n                \\\"Country\\\": \\\"Brazil\\\",\\n                \\\"District\\\": \\\"Command Room\\\",\\n                \\\"Number\\\": \\\"321\\\",\\n                \\\"State\\\": \\\"RJ\\\",\\n                \\\"Street\\\": \\\"Death Star\\\",\\n                \\\"ZipCode\\\": \\\"10002000\\\"\\n            },\\n            \\\"DeliveryDeadline\\\": \\\"2015-12-14T18:36:45\\\",\\n            \\\"EstimatedDeliveryDate\\\": \\\"2015-12-14T18:36:45\\\",\\n            \\\"FreightCostInCents\\\": 2000,\\n            \\\"ShippingCompany\\\": \\\"Empire\\\",\\n            \\\"ShoppingCartItemCollection\\\": [\\n                {\\n                    \\\"Description\\\": \\\"Red Lightsaber\\\",\\n                    \\\"DiscountAmountInCents\\\": 0,\\n                    \\\"ItemReference\\\": \\\"NumeroDoProduto\\\",\\n                    \\\"Name\\\": \\\"Lightsaber\\\",\\n                    \\\"Quantity\\\": 1,\\n                    \\\"TotalCostInCents\\\": 18000,\\n                    \\\"UnitCostInCents\\\": 18000\\n                }\\n            ]\\n        }\\n    ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","excerpt":"Exemplo de Requisição Completa","slug":"referencias","type":"post","title":"Enviando uma Requisição Completa","__v":0,"childrenPages":[]}

postEnviando uma Requisição Completa

Exemplo de Requisição Completa

#region Monta a requisicao

var boletoTransaction = new BoletoTransaction() {
    AmountInCents = 10000,
    BankNumber = "237",
    BillingAddress = new BillingAddress() {
        City = "Tatooine",
        Complement = "",
        Country = CountryEnum.Brazil.ToString(),
        Number = "123",
        District = "Mos Eisley",
        State = "RJ",
        Street = "Mos Eisley Cantina",
        ZipCode = "20001000"
    },
    DocumentNumber = "12345678901",
    Instructions = "Pagar antes do vencimento",
    Options = new BoletoTransactionOptions() {
        CurrencyIso = CurrencyIsoEnum.BRL,
        DaysToAddInBoletoExpirationDate = 5
    },
    TransactionReference = "NumeroDaTransacao"
};

// Cria o comprador.
Buyer buyer = new Buyer() {
    AddressCollection = new Collection<BuyerAddress>(),
    Birthdate = new DateTime(1990, 8, 20),
    BuyerCategory = BuyerCategoryEnum.Normal,
    BuyerReference = "C3PO",
    CreateDateInMerchant = DateTime.Now,
    DocumentNumber = "12345678901",
    DocumentType = DocumentTypeEnum.CPF,
    Email = "lskywalker@r2d2.com",
    EmailType = EmailTypeEnum.Personal,
    FacebookId = "lukeskywalker8917",
    Gender = GenderEnum.M,
    HomePhone = "(21)123456789",
    MobilePhone = "(21)987654321",
    Name = "Luke Skywalker",
    PersonType = PersonTypeEnum.Person,
    TwitterId = "@lukeskywalker8917",
    WorkPhone = "(21)28467902"
};
// Adiciona um endereço para o comprador.
buyer.AddressCollection.Add(new BuyerAddress() {
    AddressType = AddressTypeEnum.Residential,
    City = "Tatooine",
    Complement = "",
    Country = CountryEnum.Brazil.ToString(),
    District = "Mos Eisley",
    Number = "123",
    State = "RJ",
    Street = "Mos Eisley Cantina",
    ZipCode = "20001000"
});

// Cria a transação de cartão de crédito.
var creditCardTransaction = new CreditCardTransaction() {
    AmountInCents = 10000,
    CreditCard = new CreditCard() {
        BillingAddress = new BillingAddress() {
            City = "Tatooine",
            Complement = "",
            Country = CountryEnum.Brazil.ToString(),
            District = "Mos Eisley",
            Number = "123",
            State = "RJ",
            Street = "Mos Eisley Cantina",
            ZipCode = "20001000"
        },
        CreditCardBrand = CreditCardBrandEnum.Visa,
        CreditCardNumber = "4111111111111111",
        ExpMonth = 10,
        ExpYear = 22,
        HolderName = "LUKE SKYWALKER",
        SecurityCode = "123"
    },
    CreditCardOperation = CreditCardOperationEnum.AuthOnly,
    InstallmentCount = 1,
    Options = new CreditCardTransactionOptions() {
        CurrencyIso = CurrencyIsoEnum.BRL,
        PaymentMethodCode = 1,
        SoftDescriptorText = "Jedi Mega Store"
    },
    TransactionReference = "NumeroDaTransacao"
};

// Dados da loja.
Merchant merchant = new Merchant() {
    MerchantReference = "IdDaLojaPlataforma"
};

// Opções da requisição.
SaleOptions saleOptions = new SaleOptions() {
    AntiFraudServiceCode = 0,
    CurrencyIso = CurrencyIsoEnum.BRL,
    IsAntiFraudEnabled = true, // Habilita a integração com o serviço de anti fraude
    Retries = 1 // Quantidade máxima de retentativas para o cartão de crédito.
};

// Dados da requisição no site da loja.
RequestData requestData = new RequestData() {
    EcommerceCategory = EcommerceCategoryEnum.B2C,
    IpAddress = "127.0.0.1",
    Origin = "SiteDeCompra",
    SessionId = "IdSesssaoNoSite"
};

// Cria o carrinho de compras.
ShoppingCart shoppintCart = new ShoppingCart() {
    DeliveryAddress = new DeliveryAddress() {
        City = "Galaxy far far away",
        Complement = "Bridge",
        Country = CountryEnum.Brazil.ToString(),
        District = "Command Room",
        Number = "321",
        State = "RJ",
        Street = "Death Star",
        ZipCode = "10002000"
    },
    DeliveryDeadline = DateTime.Now.AddDays(3),
    EstimatedDeliveryDate = DateTime.Now.AddDays(3),
    FreightCostInCents = 2000,
    ShippingCompany = "Empire",
    ShoppingCartItemCollection = new Collection<ShoppingCartItem>()
};

// Adiciona um produto no carrinho de compras.
shoppintCart.ShoppingCartItemCollection.Add(new ShoppingCartItem() {
    Description = "Red Lightsaber",
    DiscountAmountInCents = 0,
    ItemReference = "NumeroDoProduto",
    Name = "Lightsaber",
    Quantity = 1,
    TotalCostInCents = 18000,
    UnitCostInCents = 18000
});

#endregion

// Cria requisição.
var createSaleRequest = new CreateSaleRequest() {
    // Adiciona o boleto na requisição.
    BoletoTransactionCollection = new Collection<BoletoTransaction>(new BoletoTransaction[] { boletoTransaction }),
    Buyer = buyer,
    // Adiciona a transação de cartão de crédito na requisição.
    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { creditCardTransaction }),
    Merchant = merchant,
    Options = saleOptions,
    Order = new Order() {
        OrderReference = "NumeroDoPedido"
    },
    RequestData = requestData,
    ShoppingCartCollection = new Collection<ShoppingCart>(new ShoppingCart[] { shoppintCart })
};

// 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, 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) {
    Console.WriteLine("Status transação de cartão: {0}", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);
}
if (httpResponse.Response.BoletoTransactionResultCollection != null) {
                Console.WriteLine("Status transação de boleto: {0}", httpResponse.Response.BoletoTransactionResultCollection.FirstOrDefault().BoletoTransactionStatus);
            }
<?php
try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '\vendor\autoload.php');

    // Define a url utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave de loja
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria objeto da requisição
    $request = new \Gateway\One\DataContract\Request\CreateSaleRequest();

    // Dados da transação de boleto
    $boletoTransaction = new \Gateway\One\DataContract\Request\CreateSaleRequestData\BoletoTransaction();
    
    $boletoTransaction
    ->setAmountInCents(10000)
    ->setBankNumber(\Gateway\One\DataContract\Enum\BankEnum::BRADESCO)
    ->setDocumentNumber("12345678901")
    ->setInstructions("Pagar antes do vencimento")
    ->setTransactionReference("NumeroDaTransacao")
    ->getOptions()
    ->setCurrencyIso(\Gateway\One\DataContract\Enum\CurrencyIsoEnum::BRL)
    ->setDaysToAddInBoletoExpirationDate(5);

    // Endereço de cobrança da transação de boleto
    $boletoTransaction->getBillingAddress()
    ->setAddressType(\Gateway\One\DataContract\Enum\AddressTypeEnum::BILLING)
    ->setStreet("Mos Eisley Cantina")
    ->setNumber("123")
    ->setComplement("")
    ->setDistrict("Mos Eisley")
    ->setCity("Tatooine")
    ->setState("RJ")
    ->setZipCode("20001000")
    ->setCountry(\Gateway\One\DataContract\Enum\CountryEnum::BRAZIL);

    $request->addBoletoTransaction($boletoTransaction);

    // Dados do comprador
    $request->getBuyer()
    ->setName("Luke Skywalker")
    ->setPersonType(\Gateway\One\DataContract\Enum\PersonTypeEnum::PERSON)
    ->setBuyerReference("C3PO")
    ->setDocumentNumber("12345678901")
    ->setDocumentType(\Gateway\One\DataContract\Enum\DocumentTypeEnum::CPF)
    ->setEmail("lskywalker@r2d2.com")
    ->setEmailType(\Gateway\One\DataContract\Enum\EmailTypeEnum::PERSONAL)
    ->setGender(\Gateway\One\DataContract\Enum\GenderEnum::MALE)
    ->setHomePhone("(21)123456789")
    ->setMobilePhone("(21)987654321")
    ->setWorkPhone("(21)28467902")
    ->setBirthDate(\DateTime::createFromFormat('d/m/Y', '20/08/1990'))
    ->setFacebookId("lukeskywalker8917")
    ->setTwitterId("@lukeskywalker8917")
    ->setCreateDateInMerchant(new \DateTime())
    ->addAddress()
    ->setAddressType(\Gateway\One\DataContract\Enum\AddressTypeEnum::RESIDENTIAL)
    ->setStreet("Mos Eisley Cantina")
    ->setNumber("123")
    ->setComplement("")
    ->setDistrict("Mos Eisley")
    ->setCity("Tatooine")
    ->setState("RJ")
    ->setZipCode("20001000")
    ->setCountry(\Gateway\One\DataContract\Enum\CountryEnum::BRAZIL);

    // Dados da transação de cartão de crédito
    $creditCardTransaction = new \Gateway\One\DataContract\Request\CreateSaleRequestData\CreditCardTransaction();
    $request->addCreditCardTransaction($creditCardTransaction);
    $creditCardTransaction
    ->setAmountInCents(10000)
    ->setInstallmentCount(1)
    ->setCreditCardOperation(\Gateway\One\DataContract\Enum\CreditCardOperationEnum::AUTH_ONLY)
    ->setTransactionDateInMerchant(new DateTime())
    ->setTransactionReference("NumeroDaTransacao")
    ->getCreditCard()
    ->setCreditCardBrand(\Gateway\One\DataContract\Enum\CreditCardBrandEnum::VISA)
    ->setCreditCardNumber("4111111111111111")
    ->setExpMonth(10)
    ->setExpYear(2022)
    ->setHolderName("LUKE SKYWALKER")
    ->setSecurityCode("123")
    ->getBillingAddress()
    ->setAddressType(\Gateway\One\DataContract\Enum\AddressTypeEnum::BILLING)
    ->setStreet("Mos Eisley Cantina")
    ->setNumber("123")
    ->setComplement("")
    ->setDistrict("Mos Eisley")
    ->setCity("Tatooine")
    ->setState("RJ")
    ->setZipCode("20001000")
    ->setCountry(\Gateway\One\DataContract\Enum\CountryEnum::BRAZIL);

    // Opções da transação de cartão de crédito
    $creditCardTransaction->getOptions()
    ->setCurrencyIso(\Gateway\One\DataContract\Enum\CurrencyIsoEnum::BRL)
    ->setPaymentMethodCode(\Gateway\One\DataContract\Enum\PaymentMethodEnum::SIMULATOR)
    ->setSoftDescriptorText("Jedi Mega Store");

    $request->getMerchant()
    ->setMerchantReference("IdDaLojaPlataforma");

    //Opções do pedido
    $request->getOptions()
    ->setAntiFraudServiceCode(0)
    ->setCurrencyIso(\Gateway\One\DataContract\Enum\CurrencyIsoEnum::BRL)
    ->enableAntiFraud()
    ->setRetries(1);

    //Dados do pedido
    $request->getOrder()
    ->setOrderReference("NumeroDoPedido");            

    //Dados da requisição
    $request->getRequestData()
    ->setEcommerceCategory("B2C")
    ->setIpAddress("127.0.0.1")
    ->setOrigin("SiteDeCompra")
    ->setSessionId("IdSessaoNoSite");

    //Dados do Carrinho de compras
    $shoppingCart = $request->addShoppingCart();
    $shoppingCart->setDeliveryDeadline(DateTime::createFromFormat("Y-m-d H:i:s", '2015-12-14 18:36:45'));
    $shoppingCart->setEstimatedDeliveryDate(DateTime::createFromFormat("Y-m-d H:i:s", '2015-12-14 18:36:45'));
    $shoppingCart->setFreightCostInCents(2000);
    $shoppingCart->setShippingCompany("Empire");
    $shoppingCart->getDeliveryAddress()
    ->setAddressType(\Gateway\One\DataContract\Enum\AddressTypeEnum::SHIPPING)
    ->setStreet("Death Star")
    ->setNumber("321")
    ->setComplement("Bridge")
    ->setDistrict("Command Room")
    ->setCity("Galaxy far far away")
    ->setState("RJ")
    ->setZipCode("10002000")
    ->setCountry(\Gateway\One\DataContract\Enum\CountryEnum::BRAZIL);

    //Adiciona um item ao carrinho
    $shoppingCart->addShoppingCartItem()
    ->setDescription("Red Lightsaber")
    ->setDiscountAmountInCents(0)
    ->setItemReference("NumeroDoProduto")
    ->setName("Lightsaber")
    ->setQuantity(1)
    ->setUnitCostInCents(18000)
    ->setTotalCostInCents(18000);

    // Cria um novo objeto ApiClient
    $client = new Gateway\ApiClient();

    // Faz a chamada de criação
    $response = $client->createSale($request);

}
catch (\Gateway\One\DataContract\Report\CreditCardError $error)
{
    $response = array("message" => $error->getMessage());
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (\Exception $ex)
{
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# creates boleto transaction object
boletoTransaction = Gateway::BoletoTransaction.new

# 100 reais in cents
boletoTransaction.AmountInCents = 10000
boletoTransaction.BankNumber = '237'
boletoTransaction.BillingAddress.City = 'Tatooine'
boletoTransaction.BillingAddress.Complement = ''
boletoTransaction.BillingAddress.Country = 'Brazil'
boletoTransaction.BillingAddress.District = 'Mos Eisley'
boletoTransaction.BillingAddress.Number = '123'
boletoTransaction.BillingAddress.State = 'RJ'
boletoTransaction.BillingAddress.Street = 'Mos Eisley Cantina'
boletoTransaction.BillingAddress.ZipCode = '20001000'
boletoTransaction.DocumentNumber = '12345678901'
boletoTransaction.Instructions = 'Pagar antes do vencimento'
boletoTransaction.Options.CurrencyIso = 'BRL'
boletoTransaction.Options.DaysToAddInBoletoExpirationDate = 5
boletoTransaction.TransactionReference = 'NumeroDaTransacao'


# create credit card transaction object
creditCardTransaction = Gateway::CreditCardTransaction.new

# 100 reais in cents 
creditCardTransaction.AmountInCents = 10000
creditCardTransaction.CreditCard.BillingAddress.City = 'Tatooine'
creditCardTransaction.CreditCard.BillingAddress.Complement = ''
creditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'
creditCardTransaction.CreditCard.BillingAddress.District = 'Mos Eisley'
creditCardTransaction.CreditCard.BillingAddress.Number = '123'
creditCardTransaction.CreditCard.BillingAddress.State = 'RJ'
creditCardTransaction.CreditCard.BillingAddress.Street = 'Mos Eisley Cantina'
creditCardTransaction.CreditCard.BillingAddress.ZipCode = '20001000'
creditCardTransaction.CreditCard.CreditCardBrand = 'Visa'
creditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'
creditCardTransaction.CreditCard.ExpMonth = 10
creditCardTransaction.CreditCard.ExpYear = 22
creditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'
creditCardTransaction.CreditCard.SecurityCode = '123'
creditCardTransaction.CreditCardOperation = 'AuthOnly'
creditCardTransaction.InstallmentCount = 1
creditCardTransaction.Options.CurrencyIso = 'BRL'
creditCardTransaction.Options.PaymentMethodCode = 1
creditCardTransaction.Options.SoftDescriptorText = 'Jedi Mega Store'

shoppingCartItem = Gateway::ShoppingCartItemCollection.new
shoppingCartItem.Description = 'Red Lightsaber'
shoppingCartItem.DiscountAmountInCents = 0
shoppingCartItem.ItemReference = 'NumeroDoProduto'
shoppingCartItem.Name = 'Lightsaber'
shoppingCartItem.Quantity = 1
shoppingCartItem.TotalCostInCents = 18000
shoppingCartItem.UnitCostInCents = 18000

shoppingCartCollection = Gateway::ShoppingCartCollection.new
shoppingCartCollection.DeliveryAddress.City = 'Galaxy far far away'
shoppingCartCollection.DeliveryAddress.Complement = 'Bridge'
shoppingCartCollection.DeliveryAddress.Country = 'Brazil'
shoppingCartCollection.DeliveryAddress.District = 'Command Room'
shoppingCartCollection.DeliveryAddress.Number = '321'
shoppingCartCollection.DeliveryAddress.State = 'RJ'
shoppingCartCollection.DeliveryAddress.Street = 'Death Star'
shoppingCartCollection.DeliveryAddress.ZipCode = '10002000'
shoppingCartCollection.DeliveryDeadline = DateTime.new(2015, 12, 14, 18, 36, 45).strftime("%Y-%m-%dT%H:%M:%S")
shoppingCartCollection.EstimatedDeliveryDate = DateTime.new(2015, 12, 14, 18, 36, 45).strftime("%Y-%m-%dT%H:%M:%S")
shoppingCartCollection.FreighCostInCents = 2000
shoppingCartCollection.ShippingCompany = 'Empire'
shoppingCartCollection.ShoppingCartItemCollection << shoppingCartItem

# creates request object for transaction creation
createSaleRequest = Gateway::CreateSaleRequest.new

# adds to the boleto transaction collection
createSaleRequest.BoletoTransactionCollection << boletoTransaction

buyerAddress = Gateway::BuyerAddress.new
buyerAddress.AddressType = 'Residential'
buyerAddress.City = 'Tatooine'
buyerAddress.Complement = ''
buyerAddress.Country = 'Brazil'
buyerAddress.District = 'Mos Eisley'
buyerAddress.Number = '123'
buyerAddress.State = 'RJ'
buyerAddress.Street = 'Mos Eisley Cantina'
buyerAddress.ZipCode = '20001000'

createSaleRequest.Buyer.AddressCollection << buyerAddress
createSaleRequest.Buyer.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime("%Y-%m-%dT%H:%M:%S")
createSaleRequest.Buyer.BuyerCategory = 'Normal'
createSaleRequest.Buyer.BuyerReference = 'C3PO'
createSaleRequest.Buyer.CreateDateInMerchant = DateTime.new(2015,12,11,18,36,45).strftime("%Y-%m-%dT%H:%M:%S")
createSaleRequest.Buyer.DocumentNumber = '12345678901'
createSaleRequest.Buyer.DocumentType = 'CPF'
createSaleRequest.Buyer.Email = 'lskywalker@r2d2.com'
createSaleRequest.Buyer.EmailType = 'Personal'
createSaleRequest.Buyer.FacebookId = 'lukeskywalker8917'
createSaleRequest.Buyer.Gender = 'M'
createSaleRequest.Buyer.HomePhone = '(21)123456789'
createSaleRequest.Buyer.MobilePhone = '(21)987654321'
createSaleRequest.Buyer.Name = 'Luke Skywalker'
createSaleRequest.Buyer.PersonType = 'Person'
createSaleRequest.Buyer.TwitterId = '@lukeskywalker8917'
createSaleRequest.Buyer.WorkPhone = '(21)28467902'

# adds to the credit card transaction collection
createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
createSaleRequest.Merchant.MerchantReference = 'IdDaLojaPlataforma'
createSaleRequest.Options.AntiFraudServiceCode = 0
createSaleRequest.Options.CurrencyIso = 'BRL'
createSaleRequest.Options.IsAntiFraudEnabled = true
createSaleRequest.Options.Retries = 1
createSaleRequest.Order.OrderReference = 'NumeroDoPedido'
createSaleRequest.RequestData.EcommerceCategory = 'B2C'
createSaleRequest.RequestData.IpAddress = '127.0.0.1'
createSaleRequest.RequestData.Origin = 'SiteDeCompra'
createSaleRequest.RequestData.SessionId = 'IdSesssaoNoSite'

# adds shopping cart collection in the request
createSaleRequest.ShoppingCartCollection << shoppingCartCollection

# make the request and returns a response hash
response = gateway.CreateSale(createSaleRequest)

# prints the response
puts response
# -*- coding: utf-8 -*-

from uuid import UUID
from data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order, buyer_address, buyer, billing_address,sale_options, delivery_address, shopping_cart_item, shopping_cart, boleto_transaction_options, boleto_transaction, merchant, request_data
from stoneEcommercePython  import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum
from datetime import datetime

# Cria o endereco do comprador
buyer_address_collection_data = [buyer_address(address_type = 'Residential', city = 'Tatooine', complement = '', country = 'Brazil', district = 'Mos Eisley', number = '123', state = 'RJ', street = 'Mos Eisley Cantina', zip_code = '20001000')]

#Cria o comprador
buyer_data = buyer(address_collection = buyer_address_collection_data, birth_date = '1990-08-20T00:00:00',buyer_category = 'Normal', buyer_reference = 'C3PO', create_date_in_merchant = datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), document_number = '12345678901' , document_type = 'CPF', email = 'lskywalker@r2d2.com', email_type = 'Personal',facebook_id = 'lukeskywalker8917', gender = 'M', home_phone = '(21)123456789', mobile_phone = '(21)987654321', name = 'Luke Skywalker', person_type = 'Person', twitter_id = '@lukeskywalker8917', work_phone = '(21)28467902')

# Cria o endereco de cobranca
billing_address_data = billing_address(city = 'Tatooine', complement = '', country = 'Brazil', district = 'Mos Eisley', number = '123', state = 'RJ', street = 'Mos Eisley Cantina', zip_code = '20001000')

# Criando a transacao de cartao de credito.
##Coleta os dados do cartão.
creditcard_data = creditcard(billing_address= billing_address_data, creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=22,
                             security_code='123', holder_name='LUKE SKYWALKER')

## Cria as opcoes do cartao de credito
creditcard_transaction_options_data = creditcard_transaction_options(payment_method_code = 1, soft_descriptor_text = 'Jedi Mega Store', currency_iso = 'BRL')

## Cria a transação de cartao de credito.
credit_card_transaction_collection_data = [creditcard_transaction(10000, creditcard_data, 'AuthOnly', installment_count = 1, options = creditcard_transaction_options_data, transaction_reference = 'NumeroDaTransacao')]

# Criando a transacao de boleto
boleto_options = boleto_transaction_options(currency_iso = 'BRL', days_to_add_in_boleto_expiration_date = 5)

boleto_transaction_collection_data = [ boleto_transaction(10000, bank_number = '237', document_number='12345678901', instructions='Pagar antes do vencimento', options = boleto_options,billing_address = billing_address_data )]

# Habilita o antiFraud
sale_options_data = sale_options(is_anti_fraud_enabled = True, anti_fraud_service_code = 0, retries = 1, currency_iso_field = 'BRL')

##Cria o numero do pedido
order_data = order(order_reference='NumeroDoPedido')

# Criando o carrinho de compra
## Cria o endereco de entrega para o carrinho de compras
delivery_address_data = delivery_address(city = 'Galaxy far far away', complement = 'Bridge', country = 'Brazil', district = 'Command Room', number = '321', state = 'RJ', street = 'Death Star', zip_code = '10002000')

## Cria a colecao de item do carrinho de compras 
shopping_cart_item_collection_data = [shopping_cart_item(description = 'Red Lightsaber', discount_amount_in_cents = 0, item_reference = 'NumeroDoProduto', name = 'Lightsaber', quantity = 1, total_cost_in_cents = 18000, unit_cost_in_cents = 18000)]

## Cria o carrinho de compra
shopping_cart_collection_data = [shopping_cart(delivery_address = delivery_address_data, delivery_deadline = datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), estimated_delivery_date = datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), freight_cost_in_cents = 2000,shipping_company = 'Empire',  shopping_cart_item_collection = shopping_cart_item_collection_data)]

# Cria o merchant
merchant_data = merchant(merchant_reference = 'IdDaLojaPlataforma')

# Cria os dados da requisição
request_data_data = request_data(ecommerce_category = 'B2C', ip_address = '127.0.0.1', origin = 'SiteDeCompra', session_id = 'IdSesssaoNoSite')

# Cria a requisicao
request = create_sale_request(creditcard_transaction_collection = credit_card_transaction_collection_data, boleto_transaction_collection = boleto_transaction_collection_data, order = order_data, buyer = buyer_data, shopping_cart_collection = shopping_cart_collection_data, options = sale_options_data, merchant = merchant_data, request_data = request_data_data)

# Coloque sua MerchantKey aqui.
merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br"
service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

# envia a transação e recebe a resposta do gateway.
http_response = service_client.sale.create_with_request(request)

#Obtem a resposta em json.
json_response = http_response.json()

// Define loja
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria objeto do endereço
BillingAddress billingAddress= new BillingAddress();
billingAddress.setCity("Tatooine");
billingAddress.setComplement("");
billingAddress.setCountry(CountryEnum.Brazil);
billingAddress.setDistrict("Mos Eisley");
billingAddress.setNumber("123");
billingAddress.setState("RJ");
billingAddress.setStreet("Mos Eisley Cantina");
billingAddress.setZipCode("20001000");

// Cria um objeto de transação de boleto
BoletoTransaction boletoTransaction = new BoletoTransaction();
boletoTransaction.setAmountInCents(10000L);
boletoTransaction.setBankNumber("237");
boletoTransaction.setBillingAddress(billingAddress);
boletoTransaction.setDocumentNumber("12345678901");
boletoTransaction.setInstructions("Pagar antes do vencimento");
boletoTransaction.setTransactionReference("NumeroDaTransacao");

// Cria o objeto de options
BoletoTransactionOptions boletoTransactionOptions = new BoletoTransactionOptions();
boletoTransactionOptions.setCurrencyIso(CurrencyIsoEnum.BRL);
boletoTransactionOptions.setDaysToAddInBoletoExpirationDate(5);
boletoTransaction.setOptions(boletoTransactionOptions);

// Cria objeto de endereço do Buyer
BuyerAddress buyerAddress = new BuyerAddress();
buyerAddress.setAddressType(AddressTypeEnum.Residential);
buyerAddress.setCity("Tatooine");
buyerAddress.setComplement("");
buyerAddress.setCountry(CountryEnum.Brazil);
buyerAddress.setDistrict("Mos Eisley");
buyerAddress.setNumber("123");
buyerAddress.setState("RJ");
buyerAddress.setStreet("Mos Eisley Cantina");
buyerAddress.setZipCode("20001000");

// Cria coleção de endereços do buyer
ArrayList<BuyerAddress> buyerAddressCollection = new ArrayList<BuyerAddress>();
buyerAddressCollection.add(buyerAddress);

// Cria objeto do buyer
Buyer buyer = new Buyer();
buyer.setAddressCollection(buyerAddressCollection);
buyer.setBirthdate(Date.valueOf("1990-12-11"));
buyer.setBuyerCategory(BuyerCategoryEnum.Normal);
buyer.setBuyerReference("C3PO");
buyer.setCreateDateInMerchant(Date.valueOf("2015-12-11"));
buyer.setDocumentNumber("12345678901");
buyer.setDocumentType(DocumentTypeEnum.CPF);
buyer.setEmail("lskywalker@r2d2.com");
buyer.setEmailType(EmailTypeEnum.Personal);
buyer.setFacebookId("lukeskywalker8917");
buyer.setGender(GenderEnum.M);
buyer.setHomePhone("(21)123456789");
buyer.setMobilePhone("(21)987654321");
buyer.setName("Luke Skywalker");
buyer.setPersonType(PersonTypeEnum.Person);
buyer.setTwitterId("@lukeskywalker8917");
buyer.setWorkPhone("(21)28467902");

// Cria um cartão de crédito e define endereço de cobrança
CreditCard creditCard = new CreditCard();
creditCard.setBillingAddress(billingAddress);
creditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);
creditCard.setCreditCardNumber("4111111111111111");
creditCard.setExpMonth(10);
creditCard.setExpYear(22);
creditCard.setHolderName("LUKE SKYWALKER");
creditCard.setSecurityCode("123");

// Cria a transação de cartão de crédito e define cartão criado anteriormente
CreditCardTransaction creditCardTransaction = new CreditCardTransaction();
creditCardTransaction.setAmountInCents(10000L);
creditCardTransaction.setCreditCard(creditCard);
creditCardTransaction.setCreditCardOperation(CreditCardOperationEnum.AuthOnly);
creditCardTransaction.setInstallmentCount(1);
creditCardTransaction.setOptions(new CreditCardTransactionOptions());
creditCardTransaction.getOptions().setCurrencyIso(CurrencyIsoEnum.BRL);
creditCardTransaction.getOptions().setPaymentMethodCode(1);
creditCardTransaction.getOptions().setSoftDescriptorText("Jedi Mega Store");
creditCardTransaction.setTransactionReference("NumeroDaTransacao");

// Cria o objeto order para adicionar o Order Reference
Order order = new Order();
order.setOrderReference("NúmeroDoPedido");

// Cria item o shopping cart
ShoppingCartItem shoppingCartItem = new ShoppingCartItem();
shoppingCartItem.setDescription("Red Lightsaber");
shoppingCartItem.setDiscountAmountInCents(0L);
shoppingCartItem.setItemReference("NumeroDoProduto");
shoppingCartItem.setName("Lightsaber");
shoppingCartItem.setQuantity(1);
shoppingCartItem.setTotalCostInCents(18000);
shoppingCartItem.setUnitCostInCents(18000);

// Cria shopping cart
ShoppingCart shoppingCart = new ShoppingCart();
shoppingCart.setDeliveryAddress(new DeliveryAddress());
shoppingCart.getDeliveryAddress().setCity("Galaxy Far Far Away");
shoppingCart.getDeliveryAddress().setComplement("Bridge");
shoppingCart.getDeliveryAddress().setCountry(CountryEnum.Brazil);
shoppingCart.getDeliveryAddress().setDistrict("Command Room");
shoppingCart.getDeliveryAddress().setNumber("321");
shoppingCart.getDeliveryAddress().setState("RJ");
shoppingCart.getDeliveryAddress().setStreet("Death Star");
shoppingCart.getDeliveryAddress().setZipCode("10002000");
shoppingCart.setDeliveryDeadline(Date.valueOf("2015-12-14"));
shoppingCart.setEstimatedDeliveryDate(Date.valueOf("2015-12-14"));
shoppingCart.setFreightCostInCents(2000);
shoppingCart.setShippingCompany("Empire");
shoppingCart.setShoppingCartItemCollection(new ArrayList<>());
shoppingCart.getShoppingCartItemCollection().add(shoppingCartItem);

// Cria o Sale Request para enviar o objeto de request
CreateSaleRequest createSaleRequest = new CreateSaleRequest();
createSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());
createSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);
createSaleRequest.setBoletoTransactionCollection(new ArrayList<>());
createSaleRequest.getBoletoTransactionCollection().add(boletoTransaction);
createSaleRequest.setMerchant(new Merchant());
createSaleRequest.getMerchant().setMerchantReference("IdDaLojaPlataforma");
createSaleRequest.setOptions(new SaleOptions());
createSaleRequest.getOptions().setAntiFraudServiceCode(0);
createSaleRequest.getOptions().setCurrencyIso(CurrencyIsoEnum.BRL);
createSaleRequest.getOptions().setIsAntiFraudEnabled(Boolean.TRUE);
createSaleRequest.getOptions().setRetries(1);
createSaleRequest.setOrder(order);
createSaleRequest.setRequestData(new RequestData());
createSaleRequest.getRequestData().setEcommerceCategory(EcommerceCategoryEnum.B2C);
createSaleRequest.getRequestData().setIpAddress("127.0.0.1");
createSaleRequest.getRequestData().setOrigin("SiteDeCompra");
createSaleRequest.getRequestData().setSessionId("IdSessaoNoSite");
createSaleRequest.setShoppingCartCollection(new ArrayList<>());
createSaleRequest.getShoppingCartCollection().add(shoppingCart);

// Cria o cliente que vai enviar a transação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

// Submete a transação e retorna a resposta do gateway
HttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse
        = serviceClient.getSale().Create(createSaleRequest);

return httpResponse.getRawResponse();
{
    "BoletoTransactionCollection": [
        {
            "AmountInCents": 10000,
            "BankNumber": "237",
            "BillingAddress": {
                "City": "Tatooine",
                "Complement": "",
                "Country": "Brazil",
                "District": "Mos Eisley",
                "Number": "123",
                "State": "RJ",
                "Street": "Mos Eisley Cantina",
                "ZipCode": "20001000"
            },
            "DocumentNumber": "12345678901",
            "Instructions": "Pagar antes do vencimento",
            "Options": {
                "CurrencyIso": "BRL",
                "DaysToAddInBoletoExpirationDate": 5
            },
            "TransactionReference": "NumeroDaTransacao"
        }
    ],
    "Buyer": {
        "AddressCollection": [
            {
                "AddressType": "Residential",
                "City": "Tatooine",
                "Complement": "",
                "Country": "Brazil",
                "District": "Mos Eisley",
                "Number": "123",
                "State": "RJ",
                "Street": "Mos Eisley Cantina",
                "ZipCode": "20001000"
            }
        ],
        "Birthdate": "1990-08-20T00:00:00",
        "BuyerCategory": "Normal",
        "BuyerReference": "C3PO",
        "CreateDateInMerchant": "2015-12-11T18:36:45",
        "DocumentNumber": "12345678901",
        "DocumentType": "CPF",
        "Email": "lskywalker@r2d2.com",
        "EmailType": "Personal",
        "FacebookId": "lukeskywalker8917",
        "Gender": "M",
        "HomePhone": "(21)123456789",
        "MobilePhone": "(21)987654321",
        "Name": "Luke Skywalker",
        "PersonType": "Person",
        "TwitterId":"@lukeskywalker8917",
        "WorkPhone": "(21)28467902"
    },
    "CreditCardTransactionCollection": [
        {
            "AmountInCents": 10000,
            "CreditCard": {
                "BillingAddress": {
                    "City": "Tatooine",
                    "Complement": "",
                    "Country": "Brazil",
                    "District": "Mos Eisley",
                    "Number": "123",
                    "State": "RJ",
                    "Street": "Mos Eisley Cantina",
                    "ZipCode": "20001000"
                },
                "CreditCardBrand": "Visa",
                "CreditCardNumber": "4111111111111111",
                "ExpMonth": 10,
                "ExpYear": 22,
                "HolderName": "LUKE SKYWALKER",
                "SecurityCode": "123"
            },
            "CreditCardOperation": "AuthOnly",
            "InstallmentCount": 1,
            "Options": {
                "CurrencyIso": "BRL",
                "PaymentMethodCode": 1,
                "SoftDescriptorText": "Jedi Mega Store"
            },
            "TransactionReference": "NumeroDaTransacao"
        }
    ],
    "Merchant": {
        "MerchantReference": "IdDaLojaPlataforma"
    },
    "Options": {
        "AntiFraudServiceCode": 0,
        "CurrencyIso": "BRL",
        "IsAntiFraudEnabled": true,
        "Retries": 1
    },
    "Order": {
        "OrderReference": "NumeroDoPedido"
    },
    "RequestData": {
        "EcommerceCategory": "B2C",
        "IpAddress": "127.0.0.1",
        "Origin": "SiteDeCompra",
        "SessionId": "IdSesssaoNoSite"
    },
    "ShoppingCartCollection": [
        {
            "DeliveryAddress": {
                "City": "Galaxy far far away",
                "Complement": "Bridge",
                "Country": "Brazil",
                "District": "Command Room",
                "Number": "321",
                "State": "RJ",
                "Street": "Death Star",
                "ZipCode": "10002000"
            },
            "DeliveryDeadline": "2015-12-14T18:36:45",
            "EstimatedDeliveryDate": "2015-12-14T18:36:45",
            "FreightCostInCents": 2000,
            "ShippingCompany": "Empire",
            "ShoppingCartItemCollection": [
                {
                    "Description": "Red Lightsaber",
                    "DiscountAmountInCents": 0,
                    "ItemReference": "NumeroDoProduto",
                    "Name": "Lightsaber",
                    "Quantity": 1,
                    "TotalCostInCents": 18000,
                    "UnitCostInCents": 18000
                }
            ]
        }
    ]
}

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
  "ErrorReport": null,
  "InternalTime": 193,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "bfb4ccb4-0c41-4de0-8e10-6457181318a4",
  "CreditCardTransactionResultCollection": [
    {
      "AcquirerMessage": "Simulator|Transação de simulação autorizada com sucesso",
      "AcquirerName": "Simulator",
      "AcquirerReturnCode": "0",
      "AffiliationCode": "000000000",
      "AmountInCents": 100,
      "AuthorizationCode": "448584",
      "AuthorizedAmountInCents": 100,
      "CapturedAmountInCents": 100,
      "CreditCard": {
        "CreditCardBrand": "Mastercard",
        "InstantBuyKey": "7a34bc3f-daa0-4e37-ac6b-cf99867ec197",
        "IsExpiredCreditCard": false,
        "MaskedCreditCardNumber": "231011****1111"
      },
      "CreditCardOperation": "AuthAndCapture",
      "CreditCardTransactionStatus": "Captured",
      "ExternalTime": 0,
      "PaymentMethodName": "Simulator",
      "Success": true,
      "TransactionIdentifier": "61014",
      "TransactionKey": "20ba0520-7d09-44f8-8fbc-e4329e2b18d5",
      "TransactionKeyToAcquirer": "bd8bf2f8507c42bb",
      "TransactionReference": "ef0b2798-e90c-464f-a9ed-cde575ca69e2",
      "UniqueSequentialNumber": "360012",
    }
  ],
  "OrderResult": {
    "CreateDate": "2015-07-24T22:09:45",
    "OrderKey": "219d7581-78e2-4aa9-b708-b7c585780bfc",
    "OrderReference": "NumeroDoPedido"
  }
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "A bandeira Invalida atualmente não é suportada.",
        "ErrorCode": 400,
        "ErrorField": "CreditCardBrand",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 0,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "fb0f6d14-3564-4ac2-bc88-9d319816b966",
  "BuyerKey": "00000000-0000-0000-0000-000000000000",
}


{"_id":"5978f16cb8da85001f5081e6","category":"5978f16bb8da85001f5081d0","project":"57ed53f75760ab190017b45e","user":"55831751870ff41900de479e","parentDoc":null,"version":"5978f16bb8da85001f5081cd","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-07-07T22:26:44.165Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"auth":"required","params":[],"url":""},"isReference":true,"order":17,"body":"Fraudadores sempre estão mirando em plataformas de ecommerce utilizando diversas artifícios para fraudar transações! \n\nNossa equipe quer muito te ajudar a combater esse tipo de prática, por isso nós desenvolvemos um antifraude próprio para te proporcionar as funcionalidades de um antifraude de maneira simples, prática e automatizada em um só local!\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Integrando seu ecommerce com nosso antifraude\"\n}\n[/block]\nDe modo geral, os sistemas de antifraude precisam de informações adicionais para analisar suas transações com maior precisão.\n\nPara isso, precisamos que você nos envie novos campos (tags), além dos campos presentes em uma requisição básica. Esses campos são referentes às informações do comprador ( consumidor que está realizando a compra) e do carrinho de compras ( itens que estão sendo comprados).\n\nNo exemplo do envio de uma transação básica não era necessário enviar os dados do comprador e do carrinho de compras, porém agora vamos precisar dessas informações! Disponibilizamos um exemplo ilustrando como transacionar com os dados necessários para usar o antifraude.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Casos Especiais\",\n  \"body\": \"São alguns casos onde o fluxo que antifraude acontece de forma inversa.\\nOu seja, ao recebermos a transação, a enviamos direto para o Antifraude, caso a resposta seja positiva do Antifraude, processamos a transação.\\nFluxo:\\nA transação sempre deve vir com ``AuthAndCapture``;\\nNão haverá analise manual. O que diminui o tempo de resposta;\\nFluxo síncrono;\\nNão há post de notificação posterior;\\nTransações reprovadas pelo Antifraude ficam com o status não autorizadas, mesmo não tendo ido para a Stone. Neste caso o response da transação vai com:\\n`` \\\"AcquirerReturnCode\\\": null,``\\n`` \\\"AcquirerMessage\\\": null,``\\nJá se for aprovado pelo Antifraude e não autorizado pela adquirente vai preenchido.\"\n}\n[/block]","excerpt":"Utilizando nosso antifraude","slug":"antifraude","type":"basic","title":"Antifraude Stone","__v":0,"childrenPages":[]}

Antifraude Stone

Utilizando nosso antifraude

Fraudadores sempre estão mirando em plataformas de ecommerce utilizando diversas artifícios para fraudar transações!

Nossa equipe quer muito te ajudar a combater esse tipo de prática, por isso nós desenvolvemos um antifraude próprio para te proporcionar as funcionalidades de um antifraude de maneira simples, prática e automatizada em um só local!

Integrando seu ecommerce com nosso antifraude

De modo geral, os sistemas de antifraude precisam de informações adicionais para analisar suas transações com maior precisão.

Para isso, precisamos que você nos envie novos campos (tags), além dos campos presentes em uma requisição básica. Esses campos são referentes às informações do comprador ( consumidor que está realizando a compra) e do carrinho de compras ( itens que estão sendo comprados).

No exemplo do envio de uma transação básica não era necessário enviar os dados do comprador e do carrinho de compras, porém agora vamos precisar dessas informações! Disponibilizamos um exemplo ilustrando como transacionar com os dados necessários para usar o antifraude.

Casos Especiais

São alguns casos onde o fluxo que antifraude acontece de forma inversa.
Ou seja, ao recebermos a transação, a enviamos direto para o Antifraude, caso a resposta seja positiva do Antifraude, processamos a transação.
Fluxo:
A transação sempre deve vir com AuthAndCapture;
Não haverá analise manual. O que diminui o tempo de resposta;
Fluxo síncrono;
Não há post de notificação posterior;
Transações reprovadas pelo Antifraude ficam com o status não autorizadas, mesmo não tendo ido para a Stone. Neste caso o response da transação vai com:
"AcquirerReturnCode": null,
"AcquirerMessage": null,
Já se for aprovado pelo Antifraude e não autorizado pela adquirente vai preenchido.

{"_id":"5978f16cb8da85001f5081e7","category":"5978f16bb8da85001f5081d0","user":"55831751870ff41900de479e","parentDoc":null,"project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["5678121defb5ea0d005bbb1b","5678a89207bf6a0d0083edeb","568d4b0063fefd0d00d06979","568d570f22a4d4230041fdd7","56bc97ea3ad5140d0005528a"],"next":{"pages":[],"description":""},"createdAt":"2015-08-13T18:46:06.615Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"561f139acfc3610d00567176","examples":{"codes":[]},"method":"post","results":{"codes":[{"language":"json","status":201,"code":"{\n    \"BoletoTransactionResultCollection\": [],\n    \"BuyerKey\": \"4f26b38f-02f7-4d7f-879b-f5b08957e27f\",\n    \"CreditCardTransactionResultCollection\": [\n        {\n            \"AcquirerMessage\": \"Simulator|Transação de simulação autorizada com sucesso\",\n            \"AcquirerName\": \"Simulator\",\n            \"AcquirerReturnCode\": \"0\",\n            \"AffiliationCode\": \"000000000\",\n            \"AmountInCents\": 10000,\n            \"AuthorizationCode\": \"60056\",\n            \"AuthorizedAmountInCents\": 10000,\n            \"CapturedAmountInCents\": null,\n            \"CapturedDate\": null,\n            \"CreditCard\": {\n                \"CreditCardBrand\": \"Visa\",\n                \"InstantBuyKey\": \"b44691e0-ef18-476b-b4e1-42da866ab12f\",\n                \"IsExpiredCreditCard\": false,\n                \"MaskedCreditCardNumber\": \"411111****1111\"\n            },\n            \"CreditCardOperation\": \"AuthOnly\",\n            \"CreditCardTransactionStatus\": \"AuthorizedPendingCapture\",\n            \"DueDate\": null,\n            \"ExternalTime\": 0,\n            \"PaymentMethodName\": \"Simulator\",\n            \"RefundedAmountInCents\": null,\n            \"Success\": true,\n            \"TransactionIdentifier\": \"340674\",\n            \"TransactionKey\": \"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\",\n            \"TransactionKeyToAcquirer\": \"3fc3e1046ff0416d\",\n            \"TransactionReference\": \"136a3d1f-56e0-4f34-b401-0d58694fd6ea\",\n            \"UniqueSequentialNumber\": \"776516\",\n            \"VoidedAmountInCents\": null\n        }\n    ],\n    \"ErrorReport\": null,\n    \"InternalTime\": 2222,\n    \"MerchantKey\": \"7b379c45-57d6-4508-ae56-29bb0b3c9741\",\n    \"OrderResult\": {\n        \"CreateDate\": \"2015-12-14T20:14:15\",\n        \"OrderKey\": \"219d7581-78e2-4aa9-b708-b7c585780bfc\",\n        \"OrderReference\": \"NumeroDoPedido\"\n    },\n    \"RequestKey\": \"3edbe704-90f4-4dc9-91b2-071170172e47\"\n}"},{"language":"json","code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"A bandeira Invalida atualmente não é suportada.\",\n        \"ErrorCode\": 400,\n        \"ErrorField\": \"CreditCardBrand\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 0,\n  \"MerchantKey\": \"7b379c45-57d6-4508-ae56-29bb0b3c9741\",\n  \"RequestKey\": \"fb0f6d14-3564-4ac2-bc88-9d319816b966\",\n  \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n}","status":400}]},"auth":"required","params":[{"_id":"55d64719114e3e0d00462a7f","ref":"","in":"body","required":true,"desc":"Tipo do endereço","default":"","type":"string","name":"AddressCollection[AddressType]"},{"_id":"55d64719114e3e0d00462a7e","ref":"","in":"body","required":true,"desc":"Cidade","default":"","type":"string","name":"AddressCollection[City]"},{"_id":"55d64719114e3e0d00462a7d","ref":"","in":"body","required":false,"desc":"Complemento do endereço","default":"","type":"string","name":"AddressCollection[Complement]"},{"_id":"55d64719114e3e0d00462a7c","ref":"","in":"body","required":true,"desc":"País","default":"","type":"string","name":"AddressCollection[Country]"},{"_id":"55d64719114e3e0d00462a7b","ref":"","in":"body","required":true,"desc":"Bairro","default":"","type":"string","name":"AddressCollection[District]"},{"_id":"55d64719114e3e0d00462a7a","ref":"","in":"body","required":true,"desc":"Número","default":"","type":"string","name":"AddressCollection[Number]"},{"_id":"55d64e8eae529e0d00d34e42","ref":"","in":"body","required":true,"desc":"Estado (Enviar a sigla do estado)","default":"","type":"string","name":"AddressCollection[State]"},{"_id":"55d64e8eae529e0d00d34e41","ref":"","in":"body","required":true,"desc":"Rua","default":"","type":"string","name":"AddressCollection[Street]"},{"_id":"55d64e8eae529e0d00d34e40","ref":"","in":"body","required":true,"desc":"CEP","default":"","type":"string","name":"AddressCollection[ZipCode]"},{"_id":"55d64e8eae529e0d00d34e3f","ref":"","in":"body","required":true,"desc":"Número do documento informado (apenas números)","default":"","type":"string","name":"DocumentNumber"},{"_id":"55d64e8eae529e0d00d34e3e","ref":"","in":"body","required":true,"desc":"Tipo do documento informado","default":"","type":"string","name":"DocumentType"},{"_id":"55d64e8eae529e0d00d34e3d","ref":"","in":"body","required":true,"desc":"Email do cliente","default":"","type":"string","name":"Email"},{"_id":"55d64e8eae529e0d00d34e3c","ref":"","in":"body","required":true,"desc":"Tipo do email","default":"","type":"string","name":"EmailType"},{"_id":"55d64e8eae529e0d00d34e3b","ref":"","in":"body","required":true,"desc":"Gênero do cliente","default":"","type":"string","name":"Gender"},{"_id":"55d64e8eae529e0d00d34e3a","ref":"","in":"body","required":true,"desc":"Telefone residencial do cliente. Padrão obrigatório: 55(0xx)00000000","default":"","type":"string","name":"HomePhone"},{"_id":"55d64e8eae529e0d00d34e39","ref":"","in":"body","required":true,"desc":"Nome do cliente","default":"","type":"string","name":"Name"},{"_id":"55d64e8eae529e0d00d34e38","ref":"","in":"body","required":true,"desc":"Tipo de cliente","default":"","type":"string","name":"PersonType"},{"_id":"55b80b3caea7c8190058bb73","ref":"","in":"body","required":true,"desc":"Valor da transação em centavos. R$ 1,00 = 100","default":"","type":"int","name":"AmountInCents"},{"_id":"55b80b3caea7c8190058bb72","ref":"","in":"body","required":true,"desc":"Bandeira do cartão do cliente","default":"","type":"string","name":"CreditCard[CreditCardBrand]"},{"_id":"55b80b3caea7c8190058bb71","ref":"","in":"body","required":true,"desc":"Número do cartão do cliente. Informar apenas números.","default":"","type":"string","name":"CreditCard[CreditCardNumber]"},{"_id":"55b80b3caea7c8190058bb70","ref":"","in":"body","required":true,"desc":"Mês de expiração do cartão","default":"","type":"int","name":"CreditCard[ExpMonth]"},{"_id":"55b80b3caea7c8190058bb6f","ref":"","in":"body","required":true,"desc":"Ano de expiração do cartão","default":"","type":"int","name":"CreditCard[ExpYear]"},{"_id":"55b80b3caea7c8190058bb6e","ref":"","in":"body","required":true,"desc":"Código de segurança do cartão","default":"","type":"int","name":"CreditCard[SecurityCode]"},{"_id":"55b80b3caea7c8190058bb6d","ref":"","in":"body","required":true,"desc":"Nome do portador do cartão","default":"","type":"string","name":"CreditCard[HolderName]"},{"_id":"55b80b3caea7c8190058bb6c","ref":"","in":"body","required":false,"desc":"Tipo de operação a ser realizada","default":"AuthAndCapture","type":"string","name":"CreditCardOperation"},{"_id":"55b80b3caea7c8190058bb6b","ref":"","in":"body","required":false,"desc":"Número de Parcelas","default":"1","type":"int","name":"InstallmentCount"},{"_id":"55b80b3caea7c8190058bb69","ref":"","in":"body","required":false,"desc":"Identificador do pedido na sua base","default":"","type":"string","name":"OrderReference"},{"_id":"55b80b3caea7c8190058bb6a","ref":"","in":"body","required":false,"desc":"Identificador da transação na sua base","default":"","type":"string","name":"TransactionReference"},{"_id":"55b80b3caea7c8190058bb68","ref":"","in":"body","required":false,"desc":"Meio de pagamento que deve ser utilizado para a transação","default":"0","type":"int","name":"PaymentMethodCode"},{"_id":"55d654cb114e3e0d00462adb","ref":"","in":"body","required":true,"desc":"Endereço de entrega do cliente","default":"","type":"string","name":"DeliveryAddress[AddressType]"},{"_id":"55d654cb114e3e0d00462ada","ref":"","in":"body","required":true,"desc":"Cidade","default":"","type":"string","name":"DeliveryAddress[City]"},{"_id":"55d654cb114e3e0d00462ad9","ref":"","in":"body","required":false,"desc":"Complemento do endereço","default":"","type":"string","name":"DeliveryAddress[Complement]"},{"_id":"55d654cb114e3e0d00462ad8","ref":"","in":"body","required":true,"desc":"País","default":"","type":"string","name":"DeliveryAddress[Country]"},{"_id":"55d654cb114e3e0d00462ad7","ref":"","in":"body","required":true,"desc":"Bairro","default":"","type":"string","name":"DeliveryAddress[District]"},{"_id":"55d654cb114e3e0d00462ad6","ref":"","in":"body","required":true,"desc":"Número","default":"","type":"string","name":"DeliveryAddress[Number]"},{"_id":"55d654cb114e3e0d00462ad5","ref":"","in":"body","required":true,"desc":"Estado","default":"","type":"string","name":"DeliveryAddress[State]"},{"_id":"55d654cb114e3e0d00462ad4","ref":"","in":"body","required":true,"desc":"Rua","default":"","type":"string","name":"DeliveryAddress[Street]"},{"_id":"55d654cb114e3e0d00462ad3","ref":"","in":"body","required":true,"desc":"CEP","default":"","type":"string","name":"DeliveryAddress[ZipCode]"},{"_id":"55d64e8eae529e0d00d34e37","ref":"","in":"body","required":true,"desc":"Descrição do produto","default":"","type":"string","name":"ShoppingCartItemCollection[Description]"},{"_id":"55d64e8eae529e0d00d34e36","ref":"","in":"body","required":false,"desc":"Desconto do produto em centavos","default":"","type":"string","name":"ShoppingCartItemCollection[DiscountAmountInCents]"},{"_id":"55d64e8eae529e0d00d34e35","ref":"","in":"body","required":true,"desc":"Identificação do produto na plataforma da loja","default":"","type":"string","name":"ShoppingCartItemCollection[ItemReference]"},{"_id":"55d64e8eae529e0d00d34e34","ref":"","in":"body","required":true,"desc":"Nome do produto","default":"","type":"string","name":"ShoppingCartItemCollection[Name]"},{"_id":"55d64e8eae529e0d00d34e33","ref":"","in":"body","required":true,"desc":"Quantidade comprada pelo cliente","default":"","type":"string","name":"ShoppingCartItemCollection[Quantity]"},{"_id":"55d64e8eae529e0d00d34e32","ref":"","in":"body","required":true,"desc":"Valor total desse item no carrinho","default":"","type":"string","name":"ShoppingCartItemCollection[TotalCostInCents]"},{"_id":"55d64e8eae529e0d00d34e31","ref":"","in":"body","required":true,"desc":"Valor unitário desse item no carrinho","default":"","type":"string","name":"ShoppingCartItemCollection[UnitCostInCents]"}],"url":"/Sale"},"isReference":true,"order":18,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"#region Monta a requisicao\\n\\n// Cria o comprador.\\nBuyer buyer = new Buyer() {\\n    AddressCollection = new Collection<BuyerAddress>(),\\n    Birthdate = new DateTime(1990, 8, 20),\\n    BuyerReference = \\\"C3PO\\\",\\n    DocumentNumber = \\\"12345678901\\\",\\n    DocumentType = DocumentTypeEnum.CPF,\\n    Email = \\\"lskywalker@r2d2.com\\\",\\n    EmailType = EmailTypeEnum.Personal,\\n    Gender = GenderEnum.M,\\n    HomePhone = \\\"(21)123456789\\\",\\n    MobilePhone = \\\"(21)987654321\\\",\\n    Name = \\\"Luke Skywalker\\\",\\n    PersonType = PersonTypeEnum.Person,\\n    WorkPhone = \\\"(21)28467902\\\"\\n};\\n// Adiciona um endereço para o comprador.\\nbuyer.AddressCollection.Add(new BuyerAddress() {\\n    AddressType = AddressTypeEnum.Residential,\\n    City = \\\"Tatooine\\\",\\n    Complement = \\\"\\\",\\n    Country = CountryEnum.Brazil.ToString(),\\n    District = \\\"Mos Eisley\\\",\\n    Number = \\\"123\\\",\\n    State = \\\"RJ\\\",\\n    Street = \\\"Mos Eisley Cantina\\\",\\n    ZipCode = \\\"20001000\\\"\\n});\\n\\n// Cria a transação de cartão de crédito.\\nvar creditCardTransaction = new CreditCardTransaction() {\\n    AmountInCents = 10000,\\n    CreditCard = new CreditCard() {\\n        BillingAddress = new BillingAddress() {\\n            City = \\\"Tatooine\\\",\\n            Complement = \\\"\\\",\\n            Country = CountryEnum.Brazil.ToString(),\\n            District = \\\"Mos Eisley\\\",\\n            Number = \\\"123\\\",\\n            State = \\\"RJ\\\",\\n            Street = \\\"Mos Eisley Cantina\\\",\\n            ZipCode = \\\"20001000\\\"\\n        },\\n        CreditCardBrand = CreditCardBrandEnum.Visa,\\n        CreditCardNumber = \\\"4111111111111111\\\",\\n        ExpMonth = 10,\\n        ExpYear = 22,\\n        HolderName = \\\"LUKE SKYWALKER\\\",\\n        SecurityCode = \\\"123\\\"\\n    },\\n    InstallmentCount = 1\\n};\\n\\n// Opções da requisição (Opcional)\\n/*\\nSaleOptions saleOptions = new SaleOptions() {\\n    IsAntiFraudEnabled = true, // Habilita a integração com o serviço de anti fraude\\n};\\n*/\\n\\n// Cria o carrinho de compras.\\nShoppingCart shoppintCart = new ShoppingCart() {\\n    DeliveryAddress = new DeliveryAddress() {\\n        City = \\\"Galaxy far far away\\\",\\n        Complement = \\\"Bridge\\\",\\n        Country = CountryEnum.Brazil.ToString(),\\n        District = \\\"Command Room\\\",\\n        Number = \\\"321\\\",\\n        State = \\\"RJ\\\",\\n        Street = \\\"Death Star\\\",\\n        ZipCode = \\\"10002000\\\"\\n    },\\n    FreightCostInCents = 2000,\\n    ShoppingCartItemCollection = new Collection<ShoppingCartItem>()\\n};\\n\\n// Adiciona um produto no carrinho de compras.\\nshoppintCart.ShoppingCartItemCollection.Add(new ShoppingCartItem() {\\n    Description = \\\"Red Lightsaber\\\",\\n    ItemReference = \\\"NumeroDoProduto\\\",\\n    Name = \\\"Lightsaber\\\",\\n    Quantity = 1,\\n    TotalCostInCents = 18000,\\n});\\n\\n#endregion\\n\\n// Cria requisição.\\nvar createSaleRequest = new CreateSaleRequest() {\\n    Buyer = buyer,\\n    // Adiciona a transação de cartão de crédito na requisição.\\n    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { creditCardTransaction }),\\n    //Options = saleOptions, //Caso tenha sido criado, adicionar o objeto saleOptions\\n    Order = new Order() {\\n        OrderReference = \\\"NumeroDoPedido\\\"\\n    },\\n    ShoppingCartCollection = new Collection<ShoppingCart>(new ShoppingCart[] { shoppintCart })\\n};\\n\\n// Coloque a sua MerchantKey aqui.\\nGuid merchantKey = Guid.Parse(\\\"7b379c45-57d6-4508-ae56-29bb0b3c9741\\\");\\n\\n// Cria o client que enviará a transação.\\nvar serviceClient = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Autoriza a transação e recebe a resposta do gateway.\\nvar httpResponse = serviceClient.Sale.Create(createSaleRequest);\\n\\nConsole.WriteLine(\\\"Código retorno: {0}\\\", httpResponse.HttpStatusCode);\\nConsole.WriteLine(\\\"Chave do pedido: {0}\\\", httpResponse.Response.OrderResult.OrderKey);\\nif (httpResponse.Response.CreditCardTransactionResultCollection != null) {\\n    Console.WriteLine(\\\"Status transação: {0}\\\", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"<?php\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '\\\\vendor\\\\autoload.php');\\n\\n    // Define a url utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave de loja\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"7b379c45-57d6-4508-ae56-29bb0b3c9741\\\");\\n\\n    // Cria objeto da requisição\\n    $request = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequest();\\n\\n    // Dados do comprador\\n    $request->getBuyer()\\n    ->setName(\\\"Luke Skywalker\\\")\\n    ->setPersonType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\PersonTypeEnum::PERSON)\\n    ->setBuyerReference(\\\"C3PO\\\")\\n    ->setDocumentNumber(\\\"12345678901\\\")\\n    ->setDocumentType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\DocumentTypeEnum::CPF)\\n    ->setEmail(\\\"lskywalker@r2d2.com\\\")\\n    ->setEmailType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\EmailTypeEnum::PERSONAL)\\n    ->setGender(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\GenderEnum::MALE)\\n    ->setHomePhone(\\\"(21)123456789\\\")\\n    ->setMobilePhone(\\\"(21)987654321\\\")\\n    ->setWorkPhone(\\\"(21)28467902\\\")\\n    ->setBirthDate(\\\\DateTime::createFromFormat('d/m/Y', '20/08/1990'))\\n    ->setFacebookId(\\\"lukeskywalker8917\\\")\\n    ->setTwitterId(\\\"@lukeskywalker8917\\\")\\n    ->setCreateDateInMerchant(new \\\\DateTime())\\n    ->addAddress()\\n    ->setAddressType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\AddressTypeEnum::RESIDENTIAL)\\n    ->setStreet(\\\"Mos Eisley Cantina\\\")\\n    ->setNumber(\\\"123\\\")\\n    ->setComplement(\\\"\\\")\\n    ->setDistrict(\\\"Mos Eisley\\\")\\n    ->setCity(\\\"Tatooine\\\")\\n    ->setState(\\\"RJ\\\")\\n    ->setZipCode(\\\"20001000\\\")\\n    ->setCountry(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CountryEnum::BRAZIL);\\n\\n    // Dados da transação de cartão de crédito\\n    $creditCardTransaction = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequestData\\\\CreditCardTransaction();\\n    $request->addCreditCardTransaction($creditCardTransaction);\\n    $creditCardTransaction\\n    ->setAmountInCents(10000)\\n    ->setInstallmentCount(1)\\n    ->setCreditCardOperation(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CreditCardOperationEnum::AUTH_ONLY)\\n    ->setTransactionDateInMerchant(new DateTime())\\n    ->setTransactionReference(\\\"NumeroDaTransacao\\\")\\n    ->getCreditCard()\\n    ->setCreditCardBrand(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CreditCardBrandEnum::VISA)\\n    ->setCreditCardNumber(\\\"4111111111111111\\\")\\n    ->setExpMonth(10)\\n    ->setExpYear(2022)\\n    ->setHolderName(\\\"LUKE SKYWALKER\\\")\\n    ->setSecurityCode(\\\"123\\\")\\n    ->getBillingAddress()\\n    ->setAddressType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\AddressTypeEnum::BILLING)\\n    ->setStreet(\\\"Mos Eisley Cantina\\\")\\n    ->setNumber(\\\"123\\\")\\n    ->setComplement(\\\"\\\")\\n    ->setDistrict(\\\"Mos Eisley\\\")\\n    ->setCity(\\\"Tatooine\\\")\\n    ->setState(\\\"RJ\\\")\\n    ->setZipCode(\\\"20001000\\\")\\n    ->setCountry(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CountryEnum::BRAZIL);\\n\\n    //Opções do pedido (Opcional)\\n    //$request->getOptions()\\n    //->enableAntiFraud();\\n\\n    //Dados do pedido\\n    $request->getOrder()\\n    ->setOrderReference(\\\"NumeroDoPedido\\\");            \\n\\n    //Dados do Carrinho de compras\\n    $shoppingCart = $request->addShoppingCart();\\n    $shoppingCart->setDeliveryDeadline(DateTime::createFromFormat(\\\"Y-m-d H:i:s\\\", '2015-12-14 18:36:45'));\\n    $shoppingCart->setEstimatedDeliveryDate(DateTime::createFromFormat(\\\"Y-m-d H:i:s\\\", '2015-12-14 18:36:45'));\\n    $shoppingCart->setFreightCostInCents(2000);\\n    $shoppingCart->setShippingCompany(\\\"Empire\\\");\\n    $shoppingCart->getDeliveryAddress()\\n    ->setAddressType(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\AddressTypeEnum::SHIPPING)\\n    ->setStreet(\\\"Death Star\\\")\\n    ->setNumber(\\\"321\\\")\\n    ->setComplement(\\\"Bridge\\\")\\n    ->setDistrict(\\\"Command Room\\\")\\n    ->setCity(\\\"Galaxy far far away\\\")\\n    ->setState(\\\"RJ\\\")\\n    ->setZipCode(\\\"10002000\\\")\\n    ->setCountry(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\CountryEnum::BRAZIL);\\n\\n    //Adiciona um item ao carrinho\\n    $shoppingCart->addShoppingCartItem()\\n    ->setDescription(\\\"Red Lightsaber\\\")\\n    ->setDiscountAmountInCents(0)\\n    ->setItemReference(\\\"NumeroDoProduto\\\")\\n    ->setName(\\\"Lightsaber\\\")\\n    ->setQuantity(1)\\n    ->setUnitCostInCents(18000)\\n    ->setTotalCostInCents(18000);\\n\\n    // Cria um novo objeto ApiClient\\n    $client = new Gateway\\\\ApiClient();\\n\\n    // Faz a chamada de criação\\n    $response = $client->createSale($request);\\n\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\CreditCardError $error)\\n{\\n    $response = array(\\\"message\\\" => $error->getMessage());\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (\\\\Exception $ex)\\n{\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally\\n{\\n    header('Content-Type: application/json');\\n    var_dump($response);\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = '7b379c45-57d6-4508-ae56-29bb0b3c9741'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# create credit card transaction object\\ncreditCardTransaction = Gateway::CreditCardTransaction.new\\n\\n# 100 reais in cents \\ncreditCardTransaction.AmountInCents = 10000\\ncreditCardTransaction.CreditCard.BillingAddress.City = 'Tatooine'\\ncreditCardTransaction.CreditCard.BillingAddress.Complement = ''\\ncreditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'\\ncreditCardTransaction.CreditCard.BillingAddress.District = 'Mos Eisley'\\ncreditCardTransaction.CreditCard.BillingAddress.Number = '123'\\ncreditCardTransaction.CreditCard.BillingAddress.State = 'RJ'\\ncreditCardTransaction.CreditCard.BillingAddress.Street = 'Mos Eisley Cantina'\\ncreditCardTransaction.CreditCard.BillingAddress.ZipCode = '20001000'\\ncreditCardTransaction.CreditCard.CreditCardBrand = 'Visa'\\ncreditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'\\ncreditCardTransaction.CreditCard.ExpMonth = 10\\ncreditCardTransaction.CreditCard.ExpYear = 22\\ncreditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'\\ncreditCardTransaction.CreditCard.SecurityCode = '123'\\ncreditCardTransaction.InstallmentCount = 1\\n\\nshoppingCartItem = Gateway::ShoppingCartItemCollection.new\\nshoppingCartItem.Description = 'Red Lightsaber'\\nshoppingCartItem.DiscountAmountInCents = 0\\nshoppingCartItem.ItemReference = 'NumeroDoProduto'\\nshoppingCartItem.Name = 'Lightsaber'\\nshoppingCartItem.Quantity = 1\\nshoppingCartItem.TotalCostInCents = 18000\\nshoppingCartItem.UnitCostInCents = 0\\n\\nshoppingCartCollection = Gateway::ShoppingCartCollection.new\\nshoppingCartCollection.DeliveryAddress.City = 'Galaxy far far away'\\nshoppingCartCollection.DeliveryAddress.Complement = 'Bridge'\\nshoppingCartCollection.DeliveryAddress.Country = 'Brazil'\\nshoppingCartCollection.DeliveryAddress.District = 'Command Room'\\nshoppingCartCollection.DeliveryAddress.Number = '321'\\nshoppingCartCollection.DeliveryAddress.State = 'RJ'\\nshoppingCartCollection.DeliveryAddress.Street = 'Death Star'\\nshoppingCartCollection.DeliveryAddress.ZipCode = '10002000'\\nshoppingCartCollection.FreighCostInCents = 2000\\nshoppingCartCollection.ShoppingCartItemCollection << shoppingCartItem\\n\\n# creates request object for transaction creation\\ncreateSaleRequest = Gateway::CreateSaleRequest.new\\n\\nbuyerAddress = Gateway::BuyerAddress.new\\nbuyerAddress.AddressType = 'Residential'\\nbuyerAddress.City = 'Tatooine'\\nbuyerAddress.Complement = ''\\nbuyerAddress.Country = 'Brazil'\\nbuyerAddress.District = 'Mos Eisley'\\nbuyerAddress.Number = '123'\\nbuyerAddress.State = 'RJ'\\nbuyerAddress.Street = 'Mos Eisley Cantina'\\nbuyerAddress.ZipCode = '20001000'\\n\\ncreateSaleRequest.Buyer.AddressCollection << buyerAddress\\ncreateSaleRequest.Buyer.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime(\\\"%Y-%m-%dT%H:%M:%S\\\")\\ncreateSaleRequest.Buyer.BuyerReference = 'C3PO'\\ncreateSaleRequest.Buyer.DocumentNumber = '12345678901'\\ncreateSaleRequest.Buyer.DocumentType = 'CPF'\\ncreateSaleRequest.Buyer.Email = 'lskywalker@r2d2.com'\\ncreateSaleRequest.Buyer.EmailType = 'Personal'\\ncreateSaleRequest.Buyer.Gender = 'M'\\ncreateSaleRequest.Buyer.HomePhone = '(21)123456789'\\ncreateSaleRequest.Buyer.MobilePhone = '(21)987654321'\\ncreateSaleRequest.Buyer.Name = 'Luke Skywalker'\\ncreateSaleRequest.Buyer.PersonType = 'Person'\\ncreateSaleRequest.Buyer.WorkPhone = '(21)28467902'\\n\\n# adds to the credit card transaction collection\\ncreateSaleRequest.CreditCardTransactionCollection << creditCardTransaction\\ncreateSaleRequest.Order.OrderReference = 'NumeroDoPedido'\\n\\n#Enable antifraud analysis (Optional)\\n#createSaleRequest.Options.IsAntiFraudEnabled = true \\n\\n# adds shopping cart collection in the request\\ncreateSaleRequest.ShoppingCartCollection << shoppingCartCollection\\n\\n# make the request and returns a response hash\\nresponse = gateway.CreateSale(createSaleRequest)\\n\\n# prints the response\\nputs response\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# -*- coding: utf-8 -*-\\n\\nfrom uuid import UUID\\nfrom data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order, buyer_address, buyer, billing_address,sale_options, delivery_address, shopping_cart_item, shopping_cart\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\n\\n# Cria o endereco do comprador\\nbuyer_address_collection_data = [buyer_address(address_type = 'Residential', city = 'Tatooine', complement = '', country = 'Brazil', district = 'Mos Eisley', number = '123', state = 'RJ', street = 'Mos Eisley Cantina', zip_code = '20001000')]\\n\\n#Cria o comprador\\nbuyer_data = buyer(address_collection = buyer_address_collection_data, birth_date = '1990-08-20T00:00:00', buyer_reference = 'C3PO', document_number = '12345678901' , document_type = 'CPF', email = 'lskywalker@r2d2.com', email_type = 'Personal', gender = 'M', home_phone = '(21)123456789', mobile_phone = '(21)987654321', name = 'Luke Skywalker', person_type = 'Person', work_phone = '(21)28467902')\\n\\n# Criando a transacao de cartao de credito.\\n\\nbilling_address_data = billing_address(city = 'Tatooine', complement = '', country = 'Brazil', district = 'Mos Eisley', number = '123', state = 'RJ', street = 'Mos Eisley Cantina', zip_code = '20001000')\\n##Coleta os dados do cartão.\\ncreditcard_data = creditcard(billing_address= billing_address_data, creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2018,\\n                             security_code='123', holder_name='LUKE SKYWALKER')\\n## Cria a transação de cartao de credito.\\ntransaction_collection = [creditcard_transaction(10000, creditcard_data, 'AuthOnly')]\\n\\n\\n# Habilita o antiFraud (Opcional)\\n# sale_options_data = sale_options(is_anti_fraud_enabled = True)\\n\\n##Cria o numero do pedido\\norder_data = order(order_reference='NumeroDoPedido')\\n\\n\\n# Criando o carrinho de compra\\n## Cria o endereco de entrega para o carrinho de compras\\ndelivery_address_data = delivery_address(city = 'Galaxy far far away', complement = 'Bridge', country = 'Brazil', district = 'Command Room', number = '321', state = 'RJ', street = 'Death Star', zip_code = '10002000')\\n\\n## Cria a colecao de item do carrinho de compras \\nshopping_cart_item_collection_data = [shopping_cart_item(description = 'Red Lightsaber', discount_amount_in_cents = 0, item_reference = 'NumeroDoProduto', name = 'Lightsaber', quantity = 1, total_cost_in_cents = 18000, unit_cost_in_cents = 0)]\\n\\n## Cria o carrinho de compra\\nshopping_cart_collection_data = [shopping_cart(delivery_address = delivery_address_data, freight_cost_in_cents = 2000, shopping_cart_item_collection = shopping_cart_item_collection_data)]\\n\\n# Cria a requisicao\\nrequest = create_sale_request(creditcard_transaction_collection=transaction_collection, order = order_data, buyer = buyer_data, shopping_cart_collection = shopping_cart_collection_data)\\n\\n# Cria a requisicao (Com objeto de opções de antifraude)\\n#request = create_sale_request(creditcard_transaction_collection=transaction_collection, order = order_data, buyer = buyer_data, shopping_cart_collection = shopping_cart_collection_data, options = sale_options_data)\\n\\n# Coloque sua MerchantKey aqui.\\nmerchant_key = UUID('7b379c45-57d6-4508-ae56-29bb0b3c9741')\\nend_point = \\\"https://transaction.stone.com.br\\\"\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\n# envia a transação e recebe a resposta do gateway.\\nhttp_response = service_client.sale.create_with_request(request)\\n\\n#Obtem a resposta em json.\\njson_response = http_response.json()\\n\\nprint json_response\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja\\nUUID merchantKey = UUID.fromString(\\\"7b379c45-57d6-4508-ae56-29bb0b3c9741\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria objeto do endereço\\nBillingAddress billingAddress = new BillingAddress();\\nbillingAddress.setCity(\\\"Tatooine\\\");\\nbillingAddress.setComplement(\\\"\\\");\\nbillingAddress.setCountry(CountryEnum.Brazil);\\nbillingAddress.setDistrict(\\\"Mos Eisley\\\");\\nbillingAddress.setNumber(\\\"123\\\");\\nbillingAddress.setState(\\\"RJ\\\");\\nbillingAddress.setStreet(\\\"Mos Eisley Cantina\\\");\\nbillingAddress.setZipCode(\\\"20001000\\\");\\n\\n// Cria objeto de endereço do Buyer\\nBuyerAddress buyerAddress = new BuyerAddress();\\nbuyerAddress.setAddressType(AddressTypeEnum.Residential);\\nbuyerAddress.setCity(\\\"Tatooine\\\");\\nbuyerAddress.setComplement(\\\"\\\");\\nbuyerAddress.setCountry(CountryEnum.Brazil);\\nbuyerAddress.setDistrict(\\\"Mos Eisley\\\");\\nbuyerAddress.setNumber(\\\"123\\\");\\nbuyerAddress.setState(\\\"RJ\\\");\\nbuyerAddress.setStreet(\\\"Mos Eisley Cantina\\\");\\nbuyerAddress.setZipCode(\\\"20001000\\\");\\n\\n// Cria coleção de endereços do buyer\\nArrayList<BuyerAddress> buyerAddressCollection = new ArrayList<BuyerAddress>();\\nbuyerAddressCollection.add(buyerAddress);\\n\\n// Cria objeto do buyer\\nBuyer buyer = new Buyer();\\nbuyer.setAddressCollection(buyerAddressCollection);\\nbuyer.setBirthdate(Date.valueOf(\\\"1990-12-11\\\"));\\nbuyer.setBuyerReference(\\\"C3PO\\\");\\nbuyer.setDocumentNumber(\\\"12345678901\\\");\\nbuyer.setDocumentType(DocumentTypeEnum.CPF);\\nbuyer.setEmail(\\\"lskywalker@r2d2.com\\\");\\nbuyer.setEmailType(EmailTypeEnum.Personal);\\nbuyer.setGender(GenderEnum.M);\\nbuyer.setHomePhone(\\\"(21)123456789\\\");\\nbuyer.setMobilePhone(\\\"(21)987654321\\\");\\nbuyer.setName(\\\"Luke Skywalker\\\");\\nbuyer.setPersonType(PersonTypeEnum.Person);\\nbuyer.setWorkPhone(\\\"(21)28467902\\\");\\n\\n// Cria um cartão de crédito e define endereço de cobrança\\nCreditCard creditCard = new CreditCard();\\ncreditCard.setBillingAddress(billingAddress);\\ncreditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);\\ncreditCard.setCreditCardNumber(\\\"4111111111111111\\\");\\ncreditCard.setExpMonth(10);\\ncreditCard.setExpYear(22);\\ncreditCard.setHolderName(\\\"LUKE SKYWALKER\\\");\\ncreditCard.setSecurityCode(\\\"123\\\");\\n\\n// Cria a transação de cartão de crédito e define cartão criado anteriormente\\nCreditCardTransaction creditCardTransaction = new CreditCardTransaction();\\ncreditCardTransaction.setAmountInCents(10000L);\\ncreditCardTransaction.setCreditCard(creditCard);\\ncreditCardTransaction.setInstallmentCount(1);\\n\\n// Cria item o shopping cart\\nShoppingCartItem shoppingCartItem = new ShoppingCartItem();\\nshoppingCartItem.setDescription(\\\"Red Lightsaber\\\");\\nshoppingCartItem.setDiscountAmountInCents(0L);\\nshoppingCartItem.setItemReference(\\\"NumeroDoProduto\\\");\\nshoppingCartItem.setName(\\\"Lightsaber\\\");\\nshoppingCartItem.setQuantity(1);\\nshoppingCartItem.setTotalCostInCents(18000);\\nshoppingCartItem.setUnitCostInCents(0);\\n\\n// Cria shopping cart\\nShoppingCart shoppingCart = new ShoppingCart();\\nshoppingCart.setDeliveryAddress(new DeliveryAddress());\\nshoppingCart.getDeliveryAddress().setCity(\\\"Galaxy Far Far Away\\\");\\nshoppingCart.getDeliveryAddress().setComplement(\\\"Bridge\\\");\\nshoppingCart.getDeliveryAddress().setCountry(CountryEnum.Brazil);\\nshoppingCart.getDeliveryAddress().setDistrict(\\\"Command Room\\\");\\nshoppingCart.getDeliveryAddress().setNumber(\\\"321\\\");\\nshoppingCart.getDeliveryAddress().setState(\\\"RJ\\\");\\nshoppingCart.getDeliveryAddress().setStreet(\\\"Death Star\\\");\\nshoppingCart.getDeliveryAddress().setZipCode(\\\"10002000\\\");\\nshoppingCart.setFreightCostInCents(2000);\\nshoppingCart.setShoppingCartItemCollection(new ArrayList<>());\\nshoppingCart.getShoppingCartItemCollection().add(shoppingCartItem);\\n\\n// Cria o objeto order para adicionar o Order Reference\\nOrder order = new Order();\\norder.setOrderReference(\\\"NúmeroDoPedido\\\");\\n\\n// Cria o Sale Request para enviar o objeto de request\\nCreateSaleRequest createSaleRequest = new CreateSaleRequest();\\ncreateSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());\\ncreateSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);\\ncreateSaleRequest.setOrder(order);\\ncreateSaleRequest.setShoppingCartCollection(new ArrayList<>());\\ncreateSaleRequest.getShoppingCartCollection().add(shoppingCart);\\n\\n//Parâmetros opcionais para análise antifraude\\n//createSaleRequest.setOptions(new SaleOptions());\\n//createSaleRequest.getOptions().setIsAntiFraudEnabled(Boolean.TRUE);\\n\\n// Cria o cliente que vai enviar a transação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\n// Submete a transação e retorna a resposta do gateway\\nHttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse\\n        = serviceClient.getSale().Create(createSaleRequest);\",\n      \"language\": \"java\",\n      \"name\": null\n    },\n    {\n      \"code\": \"{\\n    \\\"Buyer\\\": {\\n        \\\"AddressCollection\\\": [\\n            {\\n                \\\"AddressType\\\": \\\"Residential\\\",\\n                \\\"City\\\": \\\"Tatooine\\\",\\n                \\\"Complement\\\": \\\"\\\",\\n                \\\"Country\\\": \\\"Brazil\\\",\\n                \\\"District\\\": \\\"Mos Eisley\\\",\\n                \\\"Number\\\": \\\"123\\\",\\n                \\\"State\\\": \\\"RJ\\\",\\n                \\\"Street\\\": \\\"Mos Eisley Cantina\\\",\\n                \\\"ZipCode\\\": \\\"20001000\\\"\\n            }\\n        ],\\n        \\\"Birthdate\\\": \\\"1990-08-20T00:00:00\\\",\\n        \\\"BuyerReference\\\": \\\"C3PO\\\",\\n        \\\"DocumentNumber\\\": \\\"12345678901\\\",\\n        \\\"DocumentType\\\": \\\"CPF\\\",\\n        \\\"Email\\\": \\\"lskywalker@r2d2.com\\\",\\n        \\\"EmailType\\\": \\\"Personal\\\",\\n        \\\"Gender\\\": \\\"M\\\",\\n        \\\"HomePhone\\\": \\\"(21)123456789\\\",\\n        \\\"MobilePhone\\\": \\\"(21)987654321\\\",\\n        \\\"Name\\\": \\\"Luke Skywalker\\\",\\n        \\\"PersonType\\\": \\\"Person\\\",\\n        \\\"WorkPhone\\\": \\\"(21)28467902\\\"\\n    },\\n    \\\"CreditCardTransactionCollection\\\": [\\n        {\\n            \\\"AmountInCents\\\": 10000,\\n            \\\"CreditCard\\\": {\\n                \\\"BillingAddress\\\": {\\n                    \\\"City\\\": \\\"Tatooine\\\",\\n                    \\\"Complement\\\": \\\"\\\",\\n                    \\\"Country\\\": \\\"Brazil\\\",\\n                    \\\"District\\\": \\\"Mos Eisley\\\",\\n                    \\\"Number\\\": \\\"123\\\",\\n                    \\\"State\\\": \\\"RJ\\\",\\n                    \\\"Street\\\": \\\"Mos Eisley Cantina\\\",\\n                    \\\"ZipCode\\\": \\\"20001000\\\"\\n                },\\n                \\\"CreditCardBrand\\\": \\\"Visa\\\",\\n                \\\"CreditCardNumber\\\": \\\"4111111111111111\\\",\\n                \\\"ExpMonth\\\": 10,\\n                \\\"ExpYear\\\": 22,\\n                \\\"HolderName\\\": \\\"LUKE SKYWALKER\\\",\\n                \\\"SecurityCode\\\": \\\"123\\\"\\n            },\\n            \\\"InstallmentCount\\\": 1\\n        }\\n    ],\\n    \\\"Order\\\": {\\n        \\\"OrderReference\\\": \\\"NumeroDoPedido\\\"\\n    },\\n    \\\"ShoppingCartCollection\\\": [\\n        {\\n            \\\"DeliveryAddress\\\": {\\n                \\\"City\\\": \\\"Galaxy far far away\\\",\\n                \\\"Complement\\\": \\\"Bridge\\\",\\n                \\\"Country\\\": \\\"Brazil\\\",\\n                \\\"District\\\": \\\"Command Room\\\",\\n                \\\"Number\\\": \\\"321\\\",\\n                \\\"State\\\": \\\"RJ\\\",\\n                \\\"Street\\\": \\\"Death Star\\\",\\n                \\\"ZipCode\\\": \\\"10002000\\\"\\n            },\\n            \\\"FreightCostInCents\\\": 2000,\\n            \\\"ShoppingCartItemCollection\\\": [\\n                {\\n                    \\\"Description\\\": \\\"Red Lightsaber\\\",\\n                    \\\"DiscountAmountInCents\\\": 0,\\n                    \\\"ItemReference\\\": \\\"NumeroDoProduto\\\",\\n                    \\\"Name\\\": \\\"Lightsaber\\\",\\n                    \\\"Quantity\\\": 1,\\n                    \\\"TotalCostInCents\\\": 18000,\\n                    \\\"UnitCostInCents\\\": 0\\n                }\\n            ]\\n        }\\n    ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nOs exemplos acima mostram como você deve configurar as tags no envio da sua requisição para utilizar o antifraude.\n\nÉ **essencial** que sua requisição possua os **dados do comprador** e os **dados do carrinho de compras**! Então, é muito importante que o seu ecommerce esteja preparado e tenha um seção de cadastro completa para que o cliente consiga inserir todas as informações básicas necessárias.\n\nCaso a transação seja aprovada pelo nosso antifraude ela será capturada automaticamente mudando o status para: `Captured`. Se a sua transação for recusada ela será cancelada automaticamente alterando o status para `Voided` (Cancelada) ou `Refunded` (Estornada).\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Post de Notificação Obrigatório\",\n  \"body\": \"O cliente que optar por utilizar o serviço de antifraude, deverá ter um endpoint para receber o [POST de notificação](/docs/posts-de-notificação). Pois caso a transação seja aprovada, irá receber um POST informando que a transação foi capturada(Captured), caso seja recusada irá receber um POST informando que o status da transação foi mudada para cancelada(Voided) ou estornada(Refunded).\"\n}\n[/block]","excerpt":"Enviando uma requisição com dados para o antifraude","slug":"requisição-para-o-antifraude","type":"post","title":"Transacionando com o antifraude","__v":0,"childrenPages":[]}

postTransacionando com o antifraude

Enviando uma requisição com dados para o antifraude

Body Params

AddressCollection[AddressType]:
required
string
Tipo do endereço
AddressCollection[City]:
required
string
Cidade
AddressCollection[Complement]:
string
Complemento do endereço
AddressCollection[Country]:
required
string
País
AddressCollection[District]:
required
string
Bairro
AddressCollection[Number]:
required
string
Número
AddressCollection[State]:
required
string
Estado (Enviar a sigla do estado)
AddressCollection[Street]:
required
string
Rua
AddressCollection[ZipCode]:
required
string
CEP
DocumentNumber:
required
string
Número do documento informado (apenas números)
DocumentType:
required
string
Tipo do documento informado
Email:
required
string
Email do cliente
EmailType:
required
string
Tipo do email
Gender:
required
string
Gênero do cliente
HomePhone:
required
string
Telefone residencial do cliente. Padrão obrigatório: 55(0xx)00000000
Name:
required
string
Nome do cliente
PersonType:
required
string
Tipo de cliente
AmountInCents:
required
integer
Valor da transação em centavos. R$ 1,00 = 100
CreditCard[CreditCardBrand]:
required
string
Bandeira do cartão do cliente
CreditCard[CreditCardNumber]:
required
string
Número do cartão do cliente. Informar apenas números.
CreditCard[ExpMonth]:
required
integer
Mês de expiração do cartão
CreditCard[ExpYear]:
required
integer
Ano de expiração do cartão
CreditCard[SecurityCode]:
required
integer
Código de segurança do cartão
CreditCard[HolderName]:
required
string
Nome do portador do cartão
CreditCardOperation:
stringAuthAndCapture
Tipo de operação a ser realizada
InstallmentCount:
integer1
Número de Parcelas
OrderReference:
string
Identificador do pedido na sua base
TransactionReference:
string
Identificador da transação na sua base
PaymentMethodCode:
integer0
Meio de pagamento que deve ser utilizado para a transação
DeliveryAddress[AddressType]:
required
string
Endereço de entrega do cliente
DeliveryAddress[City]:
required
string
Cidade
DeliveryAddress[Complement]:
string
Complemento do endereço
DeliveryAddress[Country]:
required
string
País
DeliveryAddress[District]:
required
string
Bairro
DeliveryAddress[Number]:
required
string
Número
DeliveryAddress[State]:
required
string
Estado
DeliveryAddress[Street]:
required
string
Rua
DeliveryAddress[ZipCode]:
required
string
CEP
ShoppingCartItemCollection[Description]:
required
string
Descrição do produto
ShoppingCartItemCollection[DiscountAmountInCents]:
string
Desconto do produto em centavos
ShoppingCartItemCollection[ItemReference]:
required
string
Identificação do produto na plataforma da loja
ShoppingCartItemCollection[Name]:
required
string
Nome do produto
ShoppingCartItemCollection[Quantity]:
required
string
Quantidade comprada pelo cliente
ShoppingCartItemCollection[TotalCostInCents]:
required
string
Valor total desse item no carrinho
ShoppingCartItemCollection[UnitCostInCents]:
required
string
Valor unitário desse item no carrinho
#region Monta a requisicao

// Cria o comprador.
Buyer buyer = new Buyer() {
    AddressCollection = new Collection<BuyerAddress>(),
    Birthdate = new DateTime(1990, 8, 20),
    BuyerReference = "C3PO",
    DocumentNumber = "12345678901",
    DocumentType = DocumentTypeEnum.CPF,
    Email = "lskywalker@r2d2.com",
    EmailType = EmailTypeEnum.Personal,
    Gender = GenderEnum.M,
    HomePhone = "(21)123456789",
    MobilePhone = "(21)987654321",
    Name = "Luke Skywalker",
    PersonType = PersonTypeEnum.Person,
    WorkPhone = "(21)28467902"
};
// Adiciona um endereço para o comprador.
buyer.AddressCollection.Add(new BuyerAddress() {
    AddressType = AddressTypeEnum.Residential,
    City = "Tatooine",
    Complement = "",
    Country = CountryEnum.Brazil.ToString(),
    District = "Mos Eisley",
    Number = "123",
    State = "RJ",
    Street = "Mos Eisley Cantina",
    ZipCode = "20001000"
});

// Cria a transação de cartão de crédito.
var creditCardTransaction = new CreditCardTransaction() {
    AmountInCents = 10000,
    CreditCard = new CreditCard() {
        BillingAddress = new BillingAddress() {
            City = "Tatooine",
            Complement = "",
            Country = CountryEnum.Brazil.ToString(),
            District = "Mos Eisley",
            Number = "123",
            State = "RJ",
            Street = "Mos Eisley Cantina",
            ZipCode = "20001000"
        },
        CreditCardBrand = CreditCardBrandEnum.Visa,
        CreditCardNumber = "4111111111111111",
        ExpMonth = 10,
        ExpYear = 22,
        HolderName = "LUKE SKYWALKER",
        SecurityCode = "123"
    },
    InstallmentCount = 1
};

// Opções da requisição (Opcional)
/*
SaleOptions saleOptions = new SaleOptions() {
    IsAntiFraudEnabled = true, // Habilita a integração com o serviço de anti fraude
};
*/

// Cria o carrinho de compras.
ShoppingCart shoppintCart = new ShoppingCart() {
    DeliveryAddress = new DeliveryAddress() {
        City = "Galaxy far far away",
        Complement = "Bridge",
        Country = CountryEnum.Brazil.ToString(),
        District = "Command Room",
        Number = "321",
        State = "RJ",
        Street = "Death Star",
        ZipCode = "10002000"
    },
    FreightCostInCents = 2000,
    ShoppingCartItemCollection = new Collection<ShoppingCartItem>()
};

// Adiciona um produto no carrinho de compras.
shoppintCart.ShoppingCartItemCollection.Add(new ShoppingCartItem() {
    Description = "Red Lightsaber",
    ItemReference = "NumeroDoProduto",
    Name = "Lightsaber",
    Quantity = 1,
    TotalCostInCents = 18000,
});

#endregion

// Cria requisição.
var createSaleRequest = new CreateSaleRequest() {
    Buyer = buyer,
    // Adiciona a transação de cartão de crédito na requisição.
    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { creditCardTransaction }),
    //Options = saleOptions, //Caso tenha sido criado, adicionar o objeto saleOptions
    Order = new Order() {
        OrderReference = "NumeroDoPedido"
    },
    ShoppingCartCollection = new Collection<ShoppingCart>(new ShoppingCart[] { shoppintCart })
};

// Coloque a sua MerchantKey aqui.
Guid merchantKey = Guid.Parse("7b379c45-57d6-4508-ae56-29bb0b3c9741");

// 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) {
    Console.WriteLine("Status transação: {0}", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);
}
<?php
try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '\vendor\autoload.php');

    // Define a url utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave de loja
    \Gateway\ApiClient::setMerchantKey("7b379c45-57d6-4508-ae56-29bb0b3c9741");

    // Cria objeto da requisição
    $request = new \Gateway\One\DataContract\Request\CreateSaleRequest();

    // Dados do comprador
    $request->getBuyer()
    ->setName("Luke Skywalker")
    ->setPersonType(\Gateway\One\DataContract\Enum\PersonTypeEnum::PERSON)
    ->setBuyerReference("C3PO")
    ->setDocumentNumber("12345678901")
    ->setDocumentType(\Gateway\One\DataContract\Enum\DocumentTypeEnum::CPF)
    ->setEmail("lskywalker@r2d2.com")
    ->setEmailType(\Gateway\One\DataContract\Enum\EmailTypeEnum::PERSONAL)
    ->setGender(\Gateway\One\DataContract\Enum\GenderEnum::MALE)
    ->setHomePhone("(21)123456789")
    ->setMobilePhone("(21)987654321")
    ->setWorkPhone("(21)28467902")
    ->setBirthDate(\DateTime::createFromFormat('d/m/Y', '20/08/1990'))
    ->setFacebookId("lukeskywalker8917")
    ->setTwitterId("@lukeskywalker8917")
    ->setCreateDateInMerchant(new \DateTime())
    ->addAddress()
    ->setAddressType(\Gateway\One\DataContract\Enum\AddressTypeEnum::RESIDENTIAL)
    ->setStreet("Mos Eisley Cantina")
    ->setNumber("123")
    ->setComplement("")
    ->setDistrict("Mos Eisley")
    ->setCity("Tatooine")
    ->setState("RJ")
    ->setZipCode("20001000")
    ->setCountry(\Gateway\One\DataContract\Enum\CountryEnum::BRAZIL);

    // Dados da transação de cartão de crédito
    $creditCardTransaction = new \Gateway\One\DataContract\Request\CreateSaleRequestData\CreditCardTransaction();
    $request->addCreditCardTransaction($creditCardTransaction);
    $creditCardTransaction
    ->setAmountInCents(10000)
    ->setInstallmentCount(1)
    ->setCreditCardOperation(\Gateway\One\DataContract\Enum\CreditCardOperationEnum::AUTH_ONLY)
    ->setTransactionDateInMerchant(new DateTime())
    ->setTransactionReference("NumeroDaTransacao")
    ->getCreditCard()
    ->setCreditCardBrand(\Gateway\One\DataContract\Enum\CreditCardBrandEnum::VISA)
    ->setCreditCardNumber("4111111111111111")
    ->setExpMonth(10)
    ->setExpYear(2022)
    ->setHolderName("LUKE SKYWALKER")
    ->setSecurityCode("123")
    ->getBillingAddress()
    ->setAddressType(\Gateway\One\DataContract\Enum\AddressTypeEnum::BILLING)
    ->setStreet("Mos Eisley Cantina")
    ->setNumber("123")
    ->setComplement("")
    ->setDistrict("Mos Eisley")
    ->setCity("Tatooine")
    ->setState("RJ")
    ->setZipCode("20001000")
    ->setCountry(\Gateway\One\DataContract\Enum\CountryEnum::BRAZIL);

    //Opções do pedido (Opcional)
    //$request->getOptions()
    //->enableAntiFraud();

    //Dados do pedido
    $request->getOrder()
    ->setOrderReference("NumeroDoPedido");            

    //Dados do Carrinho de compras
    $shoppingCart = $request->addShoppingCart();
    $shoppingCart->setDeliveryDeadline(DateTime::createFromFormat("Y-m-d H:i:s", '2015-12-14 18:36:45'));
    $shoppingCart->setEstimatedDeliveryDate(DateTime::createFromFormat("Y-m-d H:i:s", '2015-12-14 18:36:45'));
    $shoppingCart->setFreightCostInCents(2000);
    $shoppingCart->setShippingCompany("Empire");
    $shoppingCart->getDeliveryAddress()
    ->setAddressType(\Gateway\One\DataContract\Enum\AddressTypeEnum::SHIPPING)
    ->setStreet("Death Star")
    ->setNumber("321")
    ->setComplement("Bridge")
    ->setDistrict("Command Room")
    ->setCity("Galaxy far far away")
    ->setState("RJ")
    ->setZipCode("10002000")
    ->setCountry(\Gateway\One\DataContract\Enum\CountryEnum::BRAZIL);

    //Adiciona um item ao carrinho
    $shoppingCart->addShoppingCartItem()
    ->setDescription("Red Lightsaber")
    ->setDiscountAmountInCents(0)
    ->setItemReference("NumeroDoProduto")
    ->setName("Lightsaber")
    ->setQuantity(1)
    ->setUnitCostInCents(18000)
    ->setTotalCostInCents(18000);

    // Cria um novo objeto ApiClient
    $client = new Gateway\ApiClient();

    // Faz a chamada de criação
    $response = $client->createSale($request);

}
catch (\Gateway\One\DataContract\Report\CreditCardError $error)
{
    $response = array("message" => $error->getMessage());
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (\Exception $ex)
{
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    header('Content-Type: application/json');
    var_dump($response);
}
require 'stone_ecommerce'

# variable with merchant key
merchantKey = '7b379c45-57d6-4508-ae56-29bb0b3c9741'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# create credit card transaction object
creditCardTransaction = Gateway::CreditCardTransaction.new

# 100 reais in cents 
creditCardTransaction.AmountInCents = 10000
creditCardTransaction.CreditCard.BillingAddress.City = 'Tatooine'
creditCardTransaction.CreditCard.BillingAddress.Complement = ''
creditCardTransaction.CreditCard.BillingAddress.Country = 'Brazil'
creditCardTransaction.CreditCard.BillingAddress.District = 'Mos Eisley'
creditCardTransaction.CreditCard.BillingAddress.Number = '123'
creditCardTransaction.CreditCard.BillingAddress.State = 'RJ'
creditCardTransaction.CreditCard.BillingAddress.Street = 'Mos Eisley Cantina'
creditCardTransaction.CreditCard.BillingAddress.ZipCode = '20001000'
creditCardTransaction.CreditCard.CreditCardBrand = 'Visa'
creditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'
creditCardTransaction.CreditCard.ExpMonth = 10
creditCardTransaction.CreditCard.ExpYear = 22
creditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'
creditCardTransaction.CreditCard.SecurityCode = '123'
creditCardTransaction.InstallmentCount = 1

shoppingCartItem = Gateway::ShoppingCartItemCollection.new
shoppingCartItem.Description = 'Red Lightsaber'
shoppingCartItem.DiscountAmountInCents = 0
shoppingCartItem.ItemReference = 'NumeroDoProduto'
shoppingCartItem.Name = 'Lightsaber'
shoppingCartItem.Quantity = 1
shoppingCartItem.TotalCostInCents = 18000
shoppingCartItem.UnitCostInCents = 0

shoppingCartCollection = Gateway::ShoppingCartCollection.new
shoppingCartCollection.DeliveryAddress.City = 'Galaxy far far away'
shoppingCartCollection.DeliveryAddress.Complement = 'Bridge'
shoppingCartCollection.DeliveryAddress.Country = 'Brazil'
shoppingCartCollection.DeliveryAddress.District = 'Command Room'
shoppingCartCollection.DeliveryAddress.Number = '321'
shoppingCartCollection.DeliveryAddress.State = 'RJ'
shoppingCartCollection.DeliveryAddress.Street = 'Death Star'
shoppingCartCollection.DeliveryAddress.ZipCode = '10002000'
shoppingCartCollection.FreighCostInCents = 2000
shoppingCartCollection.ShoppingCartItemCollection << shoppingCartItem

# creates request object for transaction creation
createSaleRequest = Gateway::CreateSaleRequest.new

buyerAddress = Gateway::BuyerAddress.new
buyerAddress.AddressType = 'Residential'
buyerAddress.City = 'Tatooine'
buyerAddress.Complement = ''
buyerAddress.Country = 'Brazil'
buyerAddress.District = 'Mos Eisley'
buyerAddress.Number = '123'
buyerAddress.State = 'RJ'
buyerAddress.Street = 'Mos Eisley Cantina'
buyerAddress.ZipCode = '20001000'

createSaleRequest.Buyer.AddressCollection << buyerAddress
createSaleRequest.Buyer.Birthdate = DateTime.new(1990,8,20,0,0,0).strftime("%Y-%m-%dT%H:%M:%S")
createSaleRequest.Buyer.BuyerReference = 'C3PO'
createSaleRequest.Buyer.DocumentNumber = '12345678901'
createSaleRequest.Buyer.DocumentType = 'CPF'
createSaleRequest.Buyer.Email = 'lskywalker@r2d2.com'
createSaleRequest.Buyer.EmailType = 'Personal'
createSaleRequest.Buyer.Gender = 'M'
createSaleRequest.Buyer.HomePhone = '(21)123456789'
createSaleRequest.Buyer.MobilePhone = '(21)987654321'
createSaleRequest.Buyer.Name = 'Luke Skywalker'
createSaleRequest.Buyer.PersonType = 'Person'
createSaleRequest.Buyer.WorkPhone = '(21)28467902'

# adds to the credit card transaction collection
createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
createSaleRequest.Order.OrderReference = 'NumeroDoPedido'

#Enable antifraud analysis (Optional)
#createSaleRequest.Options.IsAntiFraudEnabled = true 

# adds shopping cart collection in the request
createSaleRequest.ShoppingCartCollection << shoppingCartCollection

# make the request and returns a response hash
response = gateway.CreateSale(createSaleRequest)

# prints the response
puts response
# -*- coding: utf-8 -*-

from uuid import UUID
from data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order, buyer_address, buyer, billing_address,sale_options, delivery_address, shopping_cart_item, shopping_cart
from stoneEcommercePython  import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum

# Cria o endereco do comprador
buyer_address_collection_data = [buyer_address(address_type = 'Residential', city = 'Tatooine', complement = '', country = 'Brazil', district = 'Mos Eisley', number = '123', state = 'RJ', street = 'Mos Eisley Cantina', zip_code = '20001000')]

#Cria o comprador
buyer_data = buyer(address_collection = buyer_address_collection_data, birth_date = '1990-08-20T00:00:00', buyer_reference = 'C3PO', document_number = '12345678901' , document_type = 'CPF', email = 'lskywalker@r2d2.com', email_type = 'Personal', gender = 'M', home_phone = '(21)123456789', mobile_phone = '(21)987654321', name = 'Luke Skywalker', person_type = 'Person', work_phone = '(21)28467902')

# Criando a transacao de cartao de credito.

billing_address_data = billing_address(city = 'Tatooine', complement = '', country = 'Brazil', district = 'Mos Eisley', number = '123', state = 'RJ', street = 'Mos Eisley Cantina', zip_code = '20001000')
##Coleta os dados do cartão.
creditcard_data = creditcard(billing_address= billing_address_data, creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2018,
                             security_code='123', holder_name='LUKE SKYWALKER')
## Cria a transação de cartao de credito.
transaction_collection = [creditcard_transaction(10000, creditcard_data, 'AuthOnly')]


# Habilita o antiFraud (Opcional)
# sale_options_data = sale_options(is_anti_fraud_enabled = True)

##Cria o numero do pedido
order_data = order(order_reference='NumeroDoPedido')


# Criando o carrinho de compra
## Cria o endereco de entrega para o carrinho de compras
delivery_address_data = delivery_address(city = 'Galaxy far far away', complement = 'Bridge', country = 'Brazil', district = 'Command Room', number = '321', state = 'RJ', street = 'Death Star', zip_code = '10002000')

## Cria a colecao de item do carrinho de compras 
shopping_cart_item_collection_data = [shopping_cart_item(description = 'Red Lightsaber', discount_amount_in_cents = 0, item_reference = 'NumeroDoProduto', name = 'Lightsaber', quantity = 1, total_cost_in_cents = 18000, unit_cost_in_cents = 0)]

## Cria o carrinho de compra
shopping_cart_collection_data = [shopping_cart(delivery_address = delivery_address_data, freight_cost_in_cents = 2000, shopping_cart_item_collection = shopping_cart_item_collection_data)]

# Cria a requisicao
request = create_sale_request(creditcard_transaction_collection=transaction_collection, order = order_data, buyer = buyer_data, shopping_cart_collection = shopping_cart_collection_data)

# Cria a requisicao (Com objeto de opções de antifraude)
#request = create_sale_request(creditcard_transaction_collection=transaction_collection, order = order_data, buyer = buyer_data, shopping_cart_collection = shopping_cart_collection_data, options = sale_options_data)

# Coloque sua MerchantKey aqui.
merchant_key = UUID('7b379c45-57d6-4508-ae56-29bb0b3c9741')
end_point = "https://transaction.stone.com.br"
service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

# envia a transação e recebe a resposta do gateway.
http_response = service_client.sale.create_with_request(request)

#Obtem a resposta em json.
json_response = http_response.json()

print json_response
// Define loja
UUID merchantKey = UUID.fromString("7b379c45-57d6-4508-ae56-29bb0b3c9741"); // Chave da Loja - MerchantKey

// Cria objeto do endereço
BillingAddress billingAddress = new BillingAddress();
billingAddress.setCity("Tatooine");
billingAddress.setComplement("");
billingAddress.setCountry(CountryEnum.Brazil);
billingAddress.setDistrict("Mos Eisley");
billingAddress.setNumber("123");
billingAddress.setState("RJ");
billingAddress.setStreet("Mos Eisley Cantina");
billingAddress.setZipCode("20001000");

// Cria objeto de endereço do Buyer
BuyerAddress buyerAddress = new BuyerAddress();
buyerAddress.setAddressType(AddressTypeEnum.Residential);
buyerAddress.setCity("Tatooine");
buyerAddress.setComplement("");
buyerAddress.setCountry(CountryEnum.Brazil);
buyerAddress.setDistrict("Mos Eisley");
buyerAddress.setNumber("123");
buyerAddress.setState("RJ");
buyerAddress.setStreet("Mos Eisley Cantina");
buyerAddress.setZipCode("20001000");

// Cria coleção de endereços do buyer
ArrayList<BuyerAddress> buyerAddressCollection = new ArrayList<BuyerAddress>();
buyerAddressCollection.add(buyerAddress);

// Cria objeto do buyer
Buyer buyer = new Buyer();
buyer.setAddressCollection(buyerAddressCollection);
buyer.setBirthdate(Date.valueOf("1990-12-11"));
buyer.setBuyerReference("C3PO");
buyer.setDocumentNumber("12345678901");
buyer.setDocumentType(DocumentTypeEnum.CPF);
buyer.setEmail("lskywalker@r2d2.com");
buyer.setEmailType(EmailTypeEnum.Personal);
buyer.setGender(GenderEnum.M);
buyer.setHomePhone("(21)123456789");
buyer.setMobilePhone("(21)987654321");
buyer.setName("Luke Skywalker");
buyer.setPersonType(PersonTypeEnum.Person);
buyer.setWorkPhone("(21)28467902");

// Cria um cartão de crédito e define endereço de cobrança
CreditCard creditCard = new CreditCard();
creditCard.setBillingAddress(billingAddress);
creditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);
creditCard.setCreditCardNumber("4111111111111111");
creditCard.setExpMonth(10);
creditCard.setExpYear(22);
creditCard.setHolderName("LUKE SKYWALKER");
creditCard.setSecurityCode("123");

// Cria a transação de cartão de crédito e define cartão criado anteriormente
CreditCardTransaction creditCardTransaction = new CreditCardTransaction();
creditCardTransaction.setAmountInCents(10000L);
creditCardTransaction.setCreditCard(creditCard);
creditCardTransaction.setInstallmentCount(1);

// Cria item o shopping cart
ShoppingCartItem shoppingCartItem = new ShoppingCartItem();
shoppingCartItem.setDescription("Red Lightsaber");
shoppingCartItem.setDiscountAmountInCents(0L);
shoppingCartItem.setItemReference("NumeroDoProduto");
shoppingCartItem.setName("Lightsaber");
shoppingCartItem.setQuantity(1);
shoppingCartItem.setTotalCostInCents(18000);
shoppingCartItem.setUnitCostInCents(0);

// Cria shopping cart
ShoppingCart shoppingCart = new ShoppingCart();
shoppingCart.setDeliveryAddress(new DeliveryAddress());
shoppingCart.getDeliveryAddress().setCity("Galaxy Far Far Away");
shoppingCart.getDeliveryAddress().setComplement("Bridge");
shoppingCart.getDeliveryAddress().setCountry(CountryEnum.Brazil);
shoppingCart.getDeliveryAddress().setDistrict("Command Room");
shoppingCart.getDeliveryAddress().setNumber("321");
shoppingCart.getDeliveryAddress().setState("RJ");
shoppingCart.getDeliveryAddress().setStreet("Death Star");
shoppingCart.getDeliveryAddress().setZipCode("10002000");
shoppingCart.setFreightCostInCents(2000);
shoppingCart.setShoppingCartItemCollection(new ArrayList<>());
shoppingCart.getShoppingCartItemCollection().add(shoppingCartItem);

// Cria o objeto order para adicionar o Order Reference
Order order = new Order();
order.setOrderReference("NúmeroDoPedido");

// Cria o Sale Request para enviar o objeto de request
CreateSaleRequest createSaleRequest = new CreateSaleRequest();
createSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());
createSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);
createSaleRequest.setOrder(order);
createSaleRequest.setShoppingCartCollection(new ArrayList<>());
createSaleRequest.getShoppingCartCollection().add(shoppingCart);

//Parâmetros opcionais para análise antifraude
//createSaleRequest.setOptions(new SaleOptions());
//createSaleRequest.getOptions().setIsAntiFraudEnabled(Boolean.TRUE);

// Cria o cliente que vai enviar a transação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

// Submete a transação e retorna a resposta do gateway
HttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse
        = serviceClient.getSale().Create(createSaleRequest);
{
    "Buyer": {
        "AddressCollection": [
            {
                "AddressType": "Residential",
                "City": "Tatooine",
                "Complement": "",
                "Country": "Brazil",
                "District": "Mos Eisley",
                "Number": "123",
                "State": "RJ",
                "Street": "Mos Eisley Cantina",
                "ZipCode": "20001000"
            }
        ],
        "Birthdate": "1990-08-20T00:00:00",
        "BuyerReference": "C3PO",
        "DocumentNumber": "12345678901",
        "DocumentType": "CPF",
        "Email": "lskywalker@r2d2.com",
        "EmailType": "Personal",
        "Gender": "M",
        "HomePhone": "(21)123456789",
        "MobilePhone": "(21)987654321",
        "Name": "Luke Skywalker",
        "PersonType": "Person",
        "WorkPhone": "(21)28467902"
    },
    "CreditCardTransactionCollection": [
        {
            "AmountInCents": 10000,
            "CreditCard": {
                "BillingAddress": {
                    "City": "Tatooine",
                    "Complement": "",
                    "Country": "Brazil",
                    "District": "Mos Eisley",
                    "Number": "123",
                    "State": "RJ",
                    "Street": "Mos Eisley Cantina",
                    "ZipCode": "20001000"
                },
                "CreditCardBrand": "Visa",
                "CreditCardNumber": "4111111111111111",
                "ExpMonth": 10,
                "ExpYear": 22,
                "HolderName": "LUKE SKYWALKER",
                "SecurityCode": "123"
            },
            "InstallmentCount": 1
        }
    ],
    "Order": {
        "OrderReference": "NumeroDoPedido"
    },
    "ShoppingCartCollection": [
        {
            "DeliveryAddress": {
                "City": "Galaxy far far away",
                "Complement": "Bridge",
                "Country": "Brazil",
                "District": "Command Room",
                "Number": "321",
                "State": "RJ",
                "Street": "Death Star",
                "ZipCode": "10002000"
            },
            "FreightCostInCents": 2000,
            "ShoppingCartItemCollection": [
                {
                    "Description": "Red Lightsaber",
                    "DiscountAmountInCents": 0,
                    "ItemReference": "NumeroDoProduto",
                    "Name": "Lightsaber",
                    "Quantity": 1,
                    "TotalCostInCents": 18000,
                    "UnitCostInCents": 0
                }
            ]
        }
    ]
}

Os exemplos acima mostram como você deve configurar as tags no envio da sua requisição para utilizar o antifraude.

É essencial que sua requisição possua os dados do comprador e os dados do carrinho de compras! Então, é muito importante que o seu ecommerce esteja preparado e tenha um seção de cadastro completa para que o cliente consiga inserir todas as informações básicas necessárias.

Caso a transação seja aprovada pelo nosso antifraude ela será capturada automaticamente mudando o status para: Captured. Se a sua transação for recusada ela será cancelada automaticamente alterando o status para Voided (Cancelada) ou Refunded (Estornada).

Post de Notificação Obrigatório

O cliente que optar por utilizar o serviço de antifraude, deverá ter um endpoint para receber o POST de notificação. Pois caso a transação seja aprovada, irá receber um POST informando que a transação foi capturada(Captured), caso seja recusada irá receber um POST informando que o status da transação foi mudada para cancelada(Voided) ou estornada(Refunded).

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
    "BoletoTransactionResultCollection": [],
    "BuyerKey": "4f26b38f-02f7-4d7f-879b-f5b08957e27f",
    "CreditCardTransactionResultCollection": [
        {
            "AcquirerMessage": "Simulator|Transação de simulação autorizada com sucesso",
            "AcquirerName": "Simulator",
            "AcquirerReturnCode": "0",
            "AffiliationCode": "000000000",
            "AmountInCents": 10000,
            "AuthorizationCode": "60056",
            "AuthorizedAmountInCents": 10000,
            "CapturedAmountInCents": null,
            "CapturedDate": null,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "InstantBuyKey": "b44691e0-ef18-476b-b4e1-42da866ab12f",
                "IsExpiredCreditCard": false,
                "MaskedCreditCardNumber": "411111****1111"
            },
            "CreditCardOperation": "AuthOnly",
            "CreditCardTransactionStatus": "AuthorizedPendingCapture",
            "DueDate": null,
            "ExternalTime": 0,
            "PaymentMethodName": "Simulator",
            "RefundedAmountInCents": null,
            "Success": true,
            "TransactionIdentifier": "340674",
            "TransactionKey": "20ba0520-7d09-44f8-8fbc-e4329e2b18d5",
            "TransactionKeyToAcquirer": "3fc3e1046ff0416d",
            "TransactionReference": "136a3d1f-56e0-4f34-b401-0d58694fd6ea",
            "UniqueSequentialNumber": "776516",
            "VoidedAmountInCents": null
        }
    ],
    "ErrorReport": null,
    "InternalTime": 2222,
    "MerchantKey": "7b379c45-57d6-4508-ae56-29bb0b3c9741",
    "OrderResult": {
        "CreateDate": "2015-12-14T20:14:15",
        "OrderKey": "219d7581-78e2-4aa9-b708-b7c585780bfc",
        "OrderReference": "NumeroDoPedido"
    },
    "RequestKey": "3edbe704-90f4-4dc9-91b2-071170172e47"
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "A bandeira Invalida atualmente não é suportada.",
        "ErrorCode": 400,
        "ErrorField": "CreditCardBrand",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 0,
  "MerchantKey": "7b379c45-57d6-4508-ae56-29bb0b3c9741",
  "RequestKey": "fb0f6d14-3564-4ac2-bc88-9d319816b966",
  "BuyerKey": "00000000-0000-0000-0000-000000000000",
}


{"_id":"5978f16bb8da85001f5081d7","category":"5978f16bb8da85001f5081d1","parentDoc":null,"project":"57ed53f75760ab190017b45e","user":"55831751870ff41900de479e","version":"5978f16bb8da85001f5081cd","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-07-07T22:25:31.892Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":19,"body":"Cada vez mais os ecommerces estão optando por utilizar a recorrência de pagamentos. Seus maiores adeptos são lojas que possuem assinaturas de bebidas, roupas e até academias,escolas e cursos de idiomas utilizam essa funcionalidade.\n\nCriar um pedido com recorrência é bem simples, é só preenchar as informações referentes à recorrência - ``Recurrency`` (Recorrência) - no campo ``CreditCardTransactionCollection``.","excerpt":"Utilizando recorrência em seus pagamentos","slug":"recorrencia","type":"basic","title":"Pagamentos com recorrência","__v":0,"childrenPages":[]}

Pagamentos com recorrência

Utilizando recorrência em seus pagamentos

Cada vez mais os ecommerces estão optando por utilizar a recorrência de pagamentos. Seus maiores adeptos são lojas que possuem assinaturas de bebidas, roupas e até academias,escolas e cursos de idiomas utilizam essa funcionalidade.

Criar um pedido com recorrência é bem simples, é só preenchar as informações referentes à recorrência - Recurrency (Recorrência) - no campo CreditCardTransactionCollection.

{"_id":"5978f16bb8da85001f5081d8","category":"5978f16bb8da85001f5081d1","user":"55831751870ff41900de479e","parentDoc":null,"project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["56186cb49420c40d00510821","5618774c4d867c0d008e2272","561d37c673f1a01700141639","56461cf37e875a0d00ee73a6","5646244dbb7ad50d00e9c5a1","5646245e83218f19006e7dbf","567130b35e49250d006647ae","567841323473bc0d008e12ff","5678aac43473bc0d008e139e","56bc9939752c130d008d190d"],"next":{"pages":[],"description":""},"createdAt":"2015-07-28T22:23:04.892Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"method":"post","results":{"codes":[{"language":"json","status":201,"name":"","code":"{\n    \"BoletoTransactionResultCollection\": [],\n    \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n    \"CreditCardTransactionResultCollection\": [\n        {\n            \"AcquirerMessage\": \"Simulator|Transação de simulação autorizada com sucesso\",\n            \"AcquirerName\": \"Simulator\",\n            \"AcquirerReturnCode\": \"0\",\n            \"AffiliationCode\": \"000000000\",\n            \"AmountInCents\": 10000,\n            \"AuthorizationCode\": \"655247\",\n            \"AuthorizedAmountInCents\": 10000,\n            \"CapturedAmountInCents\": 10000,\n            \"CapturedDate\": \"2015-12-14T21:57:01\",\n            \"CreditCard\": {\n                \"CreditCardBrand\": \"Visa\",\n                \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n                \"IsExpiredCreditCard\": false,\n                \"MaskedCreditCardNumber\": \"411111****1111\"\n            },\n            \"CreditCardOperation\": \"AuthAndCapture\",\n            \"CreditCardTransactionStatus\": \"Captured\",\n            \"DueDate\": \"2015-12-14T19:57:02\",\n            \"ExternalTime\": 0,\n            \"PaymentMethodName\": \"Simulator\",\n            \"RefundedAmountInCents\": null,\n            \"Success\": true,\n            \"TransactionIdentifier\": \"842067\",\n            \"TransactionKey\": \"439d3042-7d90-4158-9322-6b1656781694\",\n            \"TransactionKeyToAcquirer\": \"439d30427d904158\",\n            \"TransactionReference\": \"768a9716-8347-4f15-8912-defd81a5f5df\",\n            \"UniqueSequentialNumber\": \"849131\",\n            \"VoidedAmountInCents\": null\n        },\n        {\n            \"AcquirerMessage\": null,\n            \"AcquirerName\": \"Simulator\",\n            \"AcquirerReturnCode\": null,\n            \"AffiliationCode\": \"000000000\",\n            \"AmountInCents\": 10000,\n            \"AuthorizationCode\": null,\n            \"AuthorizedAmountInCents\": null,\n            \"CapturedAmountInCents\": null,\n            \"CapturedDate\": null,\n            \"CreditCard\": {\n                \"CreditCardBrand\": \"Visa\",\n                \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n                \"IsExpiredCreditCard\": false,\n                \"MaskedCreditCardNumber\": \"411111****1111\"\n            },\n            \"CreditCardOperation\": \"AuthAndCapture\",\n            \"CreditCardTransactionStatus\": \"PendingAuthorize\",\n            \"DueDate\": \"2016-01-14T19:57:02\",\n            \"ExternalTime\": 0,\n            \"PaymentMethodName\": \"Simulator\",\n            \"RefundedAmountInCents\": null,\n            \"Success\": true,\n            \"TransactionIdentifier\": null,\n            \"TransactionKey\": \"e88adc8b-1796-4cbf-8e96-524d9193b3c6\",\n            \"TransactionKeyToAcquirer\": \"e88adc8b17964cbf\",\n            \"TransactionReference\": \"768a9716-8347-4f15-8912-defd81a5f5df\",\n            \"UniqueSequentialNumber\": null,\n            \"VoidedAmountInCents\": null\n        },\n        {\n            \"AcquirerMessage\": null,\n            \"AcquirerName\": \"Simulator\",\n            \"AcquirerReturnCode\": null,\n            \"AffiliationCode\": \"000000000\",\n            \"AmountInCents\": 10000,\n            \"AuthorizationCode\": null,\n            \"AuthorizedAmountInCents\": null,\n            \"CapturedAmountInCents\": null,\n            \"CapturedDate\": null,\n            \"CreditCard\": {\n                \"CreditCardBrand\": \"Visa\",\n                \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n                \"IsExpiredCreditCard\": false,\n                \"MaskedCreditCardNumber\": \"411111****1111\"\n            },\n            \"CreditCardOperation\": \"AuthAndCapture\",\n            \"CreditCardTransactionStatus\": \"PendingAuthorize\",\n            \"DueDate\": \"2016-02-14T19:57:02\",\n            \"ExternalTime\": 0,\n            \"PaymentMethodName\": \"Simulator\",\n            \"RefundedAmountInCents\": null,\n            \"Success\": true,\n            \"TransactionIdentifier\": null,\n            \"TransactionKey\": \"446b4176-79cd-4767-96e8-fa418b2ad2c3\",\n            \"TransactionKeyToAcquirer\": \"446b417679cd4767\",\n            \"TransactionReference\": \"768a9716-8347-4f15-8912-defd81a5f5df\",\n            \"UniqueSequentialNumber\": null,\n            \"VoidedAmountInCents\": null\n        },\n        {\n            \"AcquirerMessage\": null,\n            \"AcquirerName\": \"Simulator\",\n            \"AcquirerReturnCode\": null,\n            \"AffiliationCode\": \"000000000\",\n            \"AmountInCents\": 10000,\n            \"AuthorizationCode\": null,\n            \"AuthorizedAmountInCents\": null,\n            \"CapturedAmountInCents\": null,\n            \"CapturedDate\": null,\n            \"CreditCard\": {\n                \"CreditCardBrand\": \"Visa\",\n                \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n                \"IsExpiredCreditCard\": false,\n                \"MaskedCreditCardNumber\": \"411111****1111\"\n            },\n            \"CreditCardOperation\": \"AuthAndCapture\",\n            \"CreditCardTransactionStatus\": \"PendingAuthorize\",\n            \"DueDate\": \"2016-03-14T19:57:02\",\n            \"ExternalTime\": 0,\n            \"PaymentMethodName\": \"Simulator\",\n            \"RefundedAmountInCents\": null,\n            \"Success\": true,\n            \"TransactionIdentifier\": null,\n            \"TransactionKey\": \"d1a03c9e-26c6-481f-9267-e01662e22a27\",\n            \"TransactionKeyToAcquirer\": \"d1a03c9e26c6481f\",\n            \"TransactionReference\": \"768a9716-8347-4f15-8912-defd81a5f5df\",\n            \"UniqueSequentialNumber\": null,\n            \"VoidedAmountInCents\": null\n        },\n        {\n            \"AcquirerMessage\": null,\n            \"AcquirerName\": \"Simulator\",\n            \"AcquirerReturnCode\": null,\n            \"AffiliationCode\": \"000000000\",\n            \"AmountInCents\": 10000,\n            \"AuthorizationCode\": null,\n            \"AuthorizedAmountInCents\": null,\n            \"CapturedAmountInCents\": null,\n            \"CapturedDate\": null,\n            \"CreditCard\": {\n                \"CreditCardBrand\": \"Visa\",\n                \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n                \"IsExpiredCreditCard\": false,\n                \"MaskedCreditCardNumber\": \"411111****1111\"\n            },\n            \"CreditCardOperation\": \"AuthAndCapture\",\n            \"CreditCardTransactionStatus\": \"PendingAuthorize\",\n            \"DueDate\": \"2016-04-14T19:57:02\",\n            \"ExternalTime\": 0,\n            \"PaymentMethodName\": \"Simulator\",\n            \"RefundedAmountInCents\": null,\n            \"Success\": true,\n            \"TransactionIdentifier\": null,\n            \"TransactionKey\": \"2605eeee-0910-444a-8c8d-748557c1028c\",\n            \"TransactionKeyToAcquirer\": \"2605eeee0910444a\",\n            \"TransactionReference\": \"768a9716-8347-4f15-8912-defd81a5f5df\",\n            \"UniqueSequentialNumber\": null,\n            \"VoidedAmountInCents\": null\n        }\n    ],\n    \"ErrorReport\": null,\n    \"InternalTime\": 1116,\n    \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n    \"OrderResult\": {\n        \"CreateDate\": \"2015-12-14T21:57:01\",\n        \"OrderKey\": \"219d7581-78e2-4aa9-b708-b7c585780bfc\",\n        \"OrderReference\": \"NumeroDoPedido\"\n    },\n    \"RequestKey\": \"f6435375-ff40-4eb9-96e6-01b0949c4e74\"\n}"},{"code":"{}","language":"json","status":400,"name":""}]},"settings":"561f139acfc3610d00567176","examples":{"codes":[]},"auth":"required","params":[{"_id":"55f0642b10cacb23007bfcaf","ref":"","in":"body","required":false,"desc":"Data do início da recorrência","default":"","type":"datetime","name":"Recurrency[DateToStartBilling]"},{"_id":"55f07569da97fe2f007b4eb9","ref":"","in":"body","required":false,"desc":"Frequência","default":"Enum","type":"string","name":"Recurrency[Frequency]"},{"_id":"55f07569da97fe2f007b4eb8","ref":"","in":"body","required":false,"desc":"Intervalo de cobrança dada a frequência","default":"","type":"string","name":"Recurrency[Interval]"},{"_id":"55f07569da97fe2f007b4eb7","ref":"","in":"body","required":false,"desc":"Ativar a transação de R$ 1,00 para validar o cartão","default":"false","type":"string","name":"Recurrency[OneDollarAuth]"},{"_id":"55f07569da97fe2f007b4eb6","ref":"","in":"body","required":false,"desc":"Quantidade de vezes que será cobrado","default":"0","type":"string","name":"Recurrency[Recurrences]"}],"url":"/Sale"},"isReference":true,"order":20,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Cria a transação.\\nvar transaction = new CreditCardTransaction() {\\n    AmountInCents = 10000,\\n    CreditCard = new CreditCard() {\\n        CreditCardBrand = CreditCardBrandEnum.Visa,\\n        CreditCardNumber = \\\"4111111111111111\\\",\\n        ExpMonth = 10,\\n        ExpYear = 22,\\n        HolderName = \\\"LUKE SKYWALKER\\\",\\n        SecurityCode = \\\"123\\\"\\n    },\\n    InstallmentCount = 1,\\n    Recurrency = new Recurrency() {\\n        DateToStartBilling = DateTime.Now,\\n        Frequency = FrequencyEnum.Monthly,\\n        Interval = 1,\\n        Recurrences = 5\\n    }\\n};\\n\\n// Cria requisição.\\nvar createSaleRequest = new CreateSaleRequest() {\\n    // Adiciona a transação na requisição.\\n    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { transaction }),\\n    Order = new Order() {\\n        OrderReference = \\\"NumeroDoPedido\\\"\\n    }\\n};\\n\\n// Coloque a sua MerchantKey aqui.\\nGuid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n// Cria o client que enviará a transação.\\nvar serviceClient = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Autoriza a transação e recebe a resposta do gateway.\\nvar httpResponse = serviceClient.Sale.Create(createSaleRequest);\\n\\nConsole.WriteLine(\\\"Código retorno: {0}\\\", httpResponse.HttpStatusCode);\\nConsole.WriteLine(\\\"Chave do pedido: {0}\\\", httpResponse.Response.OrderResult.OrderKey);\\nif (httpResponse.Response.CreditCardTransactionResultCollection != null) {\\n    foreach (var transactionResult in httpResponse.Response.CreditCardTransactionResultCollection) {\\n        Console.WriteLine(\\\"Status transação: {0} - Data cobrança: {1}\\\", transactionResult.CreditCardTransactionStatus, transactionResult.DueDate);\\n    }\\n}\",\n      \"language\": \"csharp\",\n      \"name\": \"C#\"\n    },\n    {\n      \"code\": \"<?php\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a url utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave da loja\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria objeto requisição\\n    $createSaleRequest = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequest();\\n\\n    // Cria objeto do cartão de crédito\\n    $creditCard = \\\\Gateway\\\\One\\\\Helper\\\\CreditCardHelper::createCreditCard(\\\"4111 1111 1111 1111\\\", \\\"LUKE SKYWALKER\\\", \\\"10/2022\\\", \\\"123\\\");\\n\\n    // Dados da transação de cartão de crédito\\n    $creditCardTransaction = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequestData\\\\CreditCardTransaction();\\n    $creditCardTransaction\\n    ->setAmountInCents(10000)\\n    ->setInstallmentCount(1)\\n    ->setCreditCard($creditCard)\\n    ;\\n\\n    // Dados da recorrência\\n    $creditCardTransaction->getRecurrency()\\n    ->setDateToStartBilling(new \\\\DateTime())\\n    ->setFrequency(\\\\Gateway\\\\One\\\\DataContract\\\\Enum\\\\FrequencyEnum::MONTHLY)\\n    ->setInterval(1)\\n    ->setRecurrences(5);\\n\\n    // Define dados da transação\\n    $createSaleRequest->addCreditCardTransaction($creditCardTransaction);\\n        \\n    //Define dados do pedido\\n    $createSaleRequest->getOrder()\\n    ->setOrderReference('NumeroDoPedido');\\n\\n    // Cria um objeto ApiClient\\n    $apiClient = new \\\\Gateway\\\\ApiClient();\\n\\n    // Faz a chamada para criação\\n    $response = $apiClient->createSale($createSaleRequest);\\n\\n    // Mapeia resposta\\n    $httpStatusCode = $response->isSuccess() ? 201 : 401;\\n    \\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\CreditCardError $error)\\n{\\n    $response = array(\\\"message\\\" => $error->getMessage());\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (\\\\Exception $ex)\\n{\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally\\n{\\n    header('Content-Type: application/json');\\n    var_dump($response);\\n}\\n?>\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\ncreditCardTransactionItem = Gateway::CreditCardTransaction.new\\ncreditCardTransactionItem.AmountInCents = 10000\\ncreditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'\\ncreditCardTransactionItem.CreditCard.CreditCardNumber = '4111111111111111'\\ncreditCardTransactionItem.CreditCard.ExpMonth = 10\\ncreditCardTransactionItem.CreditCard.ExpYear = 22\\ncreditCardTransactionItem.CreditCard.HolderName = 'LUKE SKYWALKER'\\ncreditCardTransactionItem.CreditCard.SecurityCode = '123'\\ncreditCardTransactionItem.InstallmentCount = 1\\ncreditCardTransactionItem.Recurrency.DateToStartBilling = DateTime.new(2015,12,14,19,57,2).strftime(\\\"%Y-%m-%dT%H:%M:%S\\\")\\ncreditCardTransactionItem.Recurrency.Frequency = 'Monthly'\\ncreditCardTransactionItem.Recurrency.Interval = 1\\ncreditCardTransactionItem.Recurrency.Recurrences = 5\\n\\ncreateSaleRequest = Gateway::CreateSaleRequest.new\\ncreateSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem\\ncreateSaleRequest.Order.OrderReference = 'NumeroDoPedido'\\n\\n# make the request and returns a response hash\\nresponse = gateway.CreateSale(createSaleRequest)\\n\\n# prints the response\\nputs response\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# -*- coding: utf-8 -*-\\n\\nfrom uuid import UUID\\nfrom data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order, recurrency\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\nfrom datetime import datetime\\n\\n#Coleta os dados do cartão.\\ncreditcard_data = creditcard(creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2018,\\n                             security_code='123', holder_name='LUKE SKYWALKER')\\n\\n# Cria os dados da recorrência.\\nrecurrency_data = recurrency(frequency = 'Monthly', interval = 1, date_to_start_billing = datetime.now().strftime(\\\"%Y-%m-%dT%H:%M:%S\\\"), recurrences = 5, one_dollar_auth = True)\\n\\n#Cria a transação.\\ntransaction_collection = [creditcard_transaction(10000, creditcard_data, recurrency = recurrency_data)]\\n\\n#Cria o numero do pedido\\noptions_request = order(order_reference='NumeroDoPedido')\\n\\n###Cria a request.\\nrequest = create_sale_request(creditcard_transaction_collection=transaction_collection, order=options_request)\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\nhttp_response = service_client.sale.create_with_request(request)\\n\\njson_response = http_response.json()\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja\\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria um cartão de crédito e define endereço de cobrança\\nCreditCard creditCard = new CreditCard();\\ncreditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);\\ncreditCard.setCreditCardNumber(\\\"4111111111111111\\\");\\ncreditCard.setExpMonth(10);\\ncreditCard.setExpYear(22);\\ncreditCard.setHolderName(\\\"LUKE SKYWALKER\\\");\\ncreditCard.setSecurityCode(\\\"123\\\");\\n\\n// Cria a transação de cartão de crédito e define cartão criado anteriormente\\nCreditCardTransaction creditCardTransaction = new CreditCardTransaction();\\ncreditCardTransaction.setAmountInCents(10000L);\\ncreditCardTransaction.setCreditCard(creditCard);\\ncreditCardTransaction.setInstallmentCount(1);\\ncreditCardTransaction.setRecurrency(new DataContracts.Recurrency.Recurrency());\\ncreditCardTransaction.getRecurrency().setDateToStartBilling(Date.valueOf(\\\"2015-12-14\\\"));\\ncreditCardTransaction.getRecurrency().setFrequency(FrequencyEnum.Monthly);\\ncreditCardTransaction.getRecurrency().setInterval(1);\\ncreditCardTransaction.getRecurrency().setRecurrences(5);\\n\\n// Cria o objeto order para adicionar o Order Reference\\nOrder order = new Order();\\norder.setOrderReference(\\\"NúmeroDoPedido\\\");\\n\\n// Cria o Sale Request para enviar o objeto de request\\nCreateSaleRequest createSaleRequest = new CreateSaleRequest();\\ncreateSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());\\ncreateSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);\\ncreateSaleRequest.setOrder(order);\\n\\n// Cria o cliente que vai enviar a transação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\n// Submete a transação e retorna a resposta do gateway\\nHttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse\\n        = serviceClient.getSale().Create(createSaleRequest);\\n\\nreturn httpResponse.getRawResponse();\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"{\\n    \\\"CreditCardTransactionCollection\\\": [\\n        {\\n            \\\"AmountInCents\\\": 10000,\\n            \\\"CreditCard\\\": {\\n                \\\"CreditCardBrand\\\": \\\"Visa\\\",\\n                \\\"CreditCardNumber\\\": \\\"4111111111111111\\\",\\n                \\\"ExpMonth\\\": 10,\\n                \\\"ExpYear\\\": 22,\\n                \\\"HolderName\\\": \\\"LUKE SKYWALKER\\\",\\n                \\\"SecurityCode\\\": \\\"123\\\"\\n            },\\n            \\\"InstallmentCount\\\": 1,\\n            \\\"Recurrency\\\": {\\n                \\\"DateToStartBilling\\\": \\\"2015-12-14T19:57:02\\\",\\n                \\\"Frequency\\\": \\\"Monthly\\\",\\n                \\\"Interval\\\": 1,\\n                \\\"Recurrences\\\": 5\\n            }\\n        }\\n    ],\\n    \\\"Options\\\": {},\\n    \\\"Order\\\": {\\n        \\\"OrderReference\\\": \\\"NumeroDoPedido\\\"\\n    }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nA transação com recorrência é apenas uma [transação normal](doc:realizando-transacoes) caracterizada como uma recorrência. Para isso, basta inserir ``Recurrency`` no campo ``CreditCardTransactionCollection``.\n\nAo enviar a requisição de transação com recorrência, você deve informar alguns campos específicos:\n\n* **DateToStartBilling**, a data que a recorrência será iniciada;\n\n* **Frequency**, a frequência que será cobrada, ``Daily`` (Diária), ``Weekly`` (Semanal),``Monthly``(Mensal), ``Yearly``(Anual)\n\n* **Interval**, o intervalo entre a frequência (Nesse caso, se a frequência for mensal, e você enviar 2 no intervalo, será feita uma cobrança a cada dois meses.)\n\n* **OneDollarAuth**, para transações de recorrência é comum realizar uma validação no cartão do cliente, portanto é só informar ``True``, caso queira essa transação de R$ 1,00 ou ``False`` caso não queira.\n\n* **Recurrences** , corresponde ao número de recorrências que serão criadas, caso seja informado 0, será criada uma recorrência infinita.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Recorrência e cartões expirados\",\n  \"body\": \"Caso uma recorrência seja criada com um número de recorrências (Recurrences) que ultrapasse a data de validade do cartão de crédito, as transações posteriores à data de validade do cartão não serão criadas. Ex.: Ao criar uma recorrência com 12 cobranças em 03/2016 e a data de validade do cartão é 08/2016, serão criadas apenas 6 transações.\"\n}\n[/block]\n Todas as transações serão criadas, no momento da criação da transação de recorrência. Por exemplo, se você enviar Recurrences = 4, 4 transações serão criadas.\n\nEm geral, a recorrência é criada na hora em que a compra é efetuada, então a primeira transação vai ser autorizada e seguirá o fluxo padrão de transações e, por outro lado, as outras 3 transações receberão o status ``PendingAuthorize`` (Autorização Pendente), já que só serão cobradas no próximo DueDate ( data de agendamento ).\n\nGostaríamos de enfatizar também que, caso você também envie a opção OneDollarAuth, uma transação no valor de R$ 1,00 será criada juntamente com as 4 com o intuito de validar o cartão.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Recorrências infinitas\",\n  \"body\": \"Nosso sistema é estruturado de forma que se você nos enviar 0 no campo Recurrences serão criadas infinitas recorrências da seguinte maneira: Num primeiro momento 12 transações são criadas e conforme as cobranças ocorrerem uma nova transação será adicionada para você.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Cancelamento de recorrência\"\n}\n[/block]\nAssim como uma transação normal, também é possível cancelar uma recorrência. O [processo](doc:cancelamento) é semelhante ao de uma transação normal.\n\nPara ilustrar esse conceito, vamos supor que, no mês de agosto, você cancela uma recorrência. Nesse caso, todas as transações passadas registradas como recorrência (inclusive as do mês de abril ) são mantidas e todas as transações registradas como recorrência para o futuro são canceladas e, caso deseje que elas ainda ocorram, terá de criá-las novamente.","excerpt":"","slug":"criando-uma-recorrência","type":"post","title":"Criando uma recorrência","__v":0,"childrenPages":[]}

postCriando uma recorrência


Body Params

Recurrency[DateToStartBilling]:
datetime
Data do início da recorrência
Recurrency[Frequency]:
stringEnum
Frequência
Recurrency[Interval]:
string
Intervalo de cobrança dada a frequência
Recurrency[OneDollarAuth]:
stringfalse
Ativar a transação de R$ 1,00 para validar o cartão
Recurrency[Recurrences]:
string0
Quantidade de vezes que será cobrado
// 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,
    Recurrency = new Recurrency() {
        DateToStartBilling = DateTime.Now,
        Frequency = FrequencyEnum.Monthly,
        Interval = 1,
        Recurrences = 5
    }
};

// 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("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

// 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) {
    foreach (var transactionResult in httpResponse.Response.CreditCardTransactionResultCollection) {
        Console.WriteLine("Status transação: {0} - Data cobrança: {1}", transactionResult.CreditCardTransactionStatus, transactionResult.DueDate);
    }
}
<?php
try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a url utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave da loja
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria objeto requisição
    $createSaleRequest = new \Gateway\One\DataContract\Request\CreateSaleRequest();

    // Cria objeto do cartão de crédito
    $creditCard = \Gateway\One\Helper\CreditCardHelper::createCreditCard("4111 1111 1111 1111", "LUKE SKYWALKER", "10/2022", "123");

    // Dados da transação de cartão de crédito
    $creditCardTransaction = new \Gateway\One\DataContract\Request\CreateSaleRequestData\CreditCardTransaction();
    $creditCardTransaction
    ->setAmountInCents(10000)
    ->setInstallmentCount(1)
    ->setCreditCard($creditCard)
    ;

    // Dados da recorrência
    $creditCardTransaction->getRecurrency()
    ->setDateToStartBilling(new \DateTime())
    ->setFrequency(\Gateway\One\DataContract\Enum\FrequencyEnum::MONTHLY)
    ->setInterval(1)
    ->setRecurrences(5);

    // Define dados da transação
    $createSaleRequest->addCreditCardTransaction($creditCardTransaction);
        
    //Define dados do pedido
    $createSaleRequest->getOrder()
    ->setOrderReference('NumeroDoPedido');

    // Cria um objeto ApiClient
    $apiClient = new \Gateway\ApiClient();

    // Faz a chamada para criação
    $response = $apiClient->createSale($createSaleRequest);

    // Mapeia resposta
    $httpStatusCode = $response->isSuccess() ? 201 : 401;
    
}
catch (\Gateway\One\DataContract\Report\CreditCardError $error)
{
    $response = array("message" => $error->getMessage());
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (\Exception $ex)
{
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    header('Content-Type: application/json');
    var_dump($response);
}
?>
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

creditCardTransactionItem = Gateway::CreditCardTransaction.new
creditCardTransactionItem.AmountInCents = 10000
creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
creditCardTransactionItem.CreditCard.CreditCardNumber = '4111111111111111'
creditCardTransactionItem.CreditCard.ExpMonth = 10
creditCardTransactionItem.CreditCard.ExpYear = 22
creditCardTransactionItem.CreditCard.HolderName = 'LUKE SKYWALKER'
creditCardTransactionItem.CreditCard.SecurityCode = '123'
creditCardTransactionItem.InstallmentCount = 1
creditCardTransactionItem.Recurrency.DateToStartBilling = DateTime.new(2015,12,14,19,57,2).strftime("%Y-%m-%dT%H:%M:%S")
creditCardTransactionItem.Recurrency.Frequency = 'Monthly'
creditCardTransactionItem.Recurrency.Interval = 1
creditCardTransactionItem.Recurrency.Recurrences = 5

createSaleRequest = Gateway::CreateSaleRequest.new
createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
createSaleRequest.Order.OrderReference = 'NumeroDoPedido'

# make the request and returns a response hash
response = gateway.CreateSale(createSaleRequest)

# prints the response
puts response
# -*- coding: utf-8 -*-

from uuid import UUID
from data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order, recurrency
from stoneEcommercePython  import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum
from datetime import datetime

#Coleta os dados do cartão.
creditcard_data = creditcard(creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2018,
                             security_code='123', holder_name='LUKE SKYWALKER')

# Cria os dados da recorrência.
recurrency_data = recurrency(frequency = 'Monthly', interval = 1, date_to_start_billing = datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), recurrences = 5, one_dollar_auth = True)

#Cria a transação.
transaction_collection = [creditcard_transaction(10000, creditcard_data, recurrency = recurrency_data)]

#Cria o numero do pedido
options_request = order(order_reference='NumeroDoPedido')

###Cria a request.
request = create_sale_request(creditcard_transaction_collection=transaction_collection, order=options_request)

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

http_response = service_client.sale.create_with_request(request)

json_response = http_response.json()
// Define loja
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria um cartão de crédito e define endereço de cobrança
CreditCard creditCard = new CreditCard();
creditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);
creditCard.setCreditCardNumber("4111111111111111");
creditCard.setExpMonth(10);
creditCard.setExpYear(22);
creditCard.setHolderName("LUKE SKYWALKER");
creditCard.setSecurityCode("123");

// Cria a transação de cartão de crédito e define cartão criado anteriormente
CreditCardTransaction creditCardTransaction = new CreditCardTransaction();
creditCardTransaction.setAmountInCents(10000L);
creditCardTransaction.setCreditCard(creditCard);
creditCardTransaction.setInstallmentCount(1);
creditCardTransaction.setRecurrency(new DataContracts.Recurrency.Recurrency());
creditCardTransaction.getRecurrency().setDateToStartBilling(Date.valueOf("2015-12-14"));
creditCardTransaction.getRecurrency().setFrequency(FrequencyEnum.Monthly);
creditCardTransaction.getRecurrency().setInterval(1);
creditCardTransaction.getRecurrency().setRecurrences(5);

// Cria o objeto order para adicionar o Order Reference
Order order = new Order();
order.setOrderReference("NúmeroDoPedido");

// Cria o Sale Request para enviar o objeto de request
CreateSaleRequest createSaleRequest = new CreateSaleRequest();
createSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());
createSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);
createSaleRequest.setOrder(order);

// Cria o cliente que vai enviar a transação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

// Submete a transação e retorna a resposta do gateway
HttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse
        = serviceClient.getSale().Create(createSaleRequest);

return httpResponse.getRawResponse();
{
    "CreditCardTransactionCollection": [
        {
            "AmountInCents": 10000,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "CreditCardNumber": "4111111111111111",
                "ExpMonth": 10,
                "ExpYear": 22,
                "HolderName": "LUKE SKYWALKER",
                "SecurityCode": "123"
            },
            "InstallmentCount": 1,
            "Recurrency": {
                "DateToStartBilling": "2015-12-14T19:57:02",
                "Frequency": "Monthly",
                "Interval": 1,
                "Recurrences": 5
            }
        }
    ],
    "Options": {},
    "Order": {
        "OrderReference": "NumeroDoPedido"
    }
}

A transação com recorrência é apenas uma transação normal caracterizada como uma recorrência. Para isso, basta inserir Recurrency no campo CreditCardTransactionCollection.

Ao enviar a requisição de transação com recorrência, você deve informar alguns campos específicos:

  • DateToStartBilling, a data que a recorrência será iniciada;

  • Frequency, a frequência que será cobrada, Daily (Diária), Weekly (Semanal),Monthly(Mensal), Yearly(Anual)

  • Interval, o intervalo entre a frequência (Nesse caso, se a frequência for mensal, e você enviar 2 no intervalo, será feita uma cobrança a cada dois meses.)

  • OneDollarAuth, para transações de recorrência é comum realizar uma validação no cartão do cliente, portanto é só informar True, caso queira essa transação de R$ 1,00 ou False caso não queira.

  • Recurrences , corresponde ao número de recorrências que serão criadas, caso seja informado 0, será criada uma recorrência infinita.

Recorrência e cartões expirados

Caso uma recorrência seja criada com um número de recorrências (Recurrences) que ultrapasse a data de validade do cartão de crédito, as transações posteriores à data de validade do cartão não serão criadas. Ex.: Ao criar uma recorrência com 12 cobranças em 03/2016 e a data de validade do cartão é 08/2016, serão criadas apenas 6 transações.

Todas as transações serão criadas, no momento da criação da transação de recorrência. Por exemplo, se você enviar Recurrences = 4, 4 transações serão criadas.

Em geral, a recorrência é criada na hora em que a compra é efetuada, então a primeira transação vai ser autorizada e seguirá o fluxo padrão de transações e, por outro lado, as outras 3 transações receberão o status PendingAuthorize (Autorização Pendente), já que só serão cobradas no próximo DueDate ( data de agendamento ).

Gostaríamos de enfatizar também que, caso você também envie a opção OneDollarAuth, uma transação no valor de R$ 1,00 será criada juntamente com as 4 com o intuito de validar o cartão.

Recorrências infinitas

Nosso sistema é estruturado de forma que se você nos enviar 0 no campo Recurrences serão criadas infinitas recorrências da seguinte maneira: Num primeiro momento 12 transações são criadas e conforme as cobranças ocorrerem uma nova transação será adicionada para você.

Cancelamento de recorrência

Assim como uma transação normal, também é possível cancelar uma recorrência. O processo é semelhante ao de uma transação normal.

Para ilustrar esse conceito, vamos supor que, no mês de agosto, você cancela uma recorrência. Nesse caso, todas as transações passadas registradas como recorrência (inclusive as do mês de abril ) são mantidas e todas as transações registradas como recorrência para o futuro são canceladas e, caso deseje que elas ainda ocorram, terá de criá-las novamente.

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
    "BoletoTransactionResultCollection": [],
    "BuyerKey": "00000000-0000-0000-0000-000000000000",
    "CreditCardTransactionResultCollection": [
        {
            "AcquirerMessage": "Simulator|Transação de simulação autorizada com sucesso",
            "AcquirerName": "Simulator",
            "AcquirerReturnCode": "0",
            "AffiliationCode": "000000000",
            "AmountInCents": 10000,
            "AuthorizationCode": "655247",
            "AuthorizedAmountInCents": 10000,
            "CapturedAmountInCents": 10000,
            "CapturedDate": "2015-12-14T21:57:01",
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
                "IsExpiredCreditCard": false,
                "MaskedCreditCardNumber": "411111****1111"
            },
            "CreditCardOperation": "AuthAndCapture",
            "CreditCardTransactionStatus": "Captured",
            "DueDate": "2015-12-14T19:57:02",
            "ExternalTime": 0,
            "PaymentMethodName": "Simulator",
            "RefundedAmountInCents": null,
            "Success": true,
            "TransactionIdentifier": "842067",
            "TransactionKey": "439d3042-7d90-4158-9322-6b1656781694",
            "TransactionKeyToAcquirer": "439d30427d904158",
            "TransactionReference": "768a9716-8347-4f15-8912-defd81a5f5df",
            "UniqueSequentialNumber": "849131",
            "VoidedAmountInCents": null
        },
        {
            "AcquirerMessage": null,
            "AcquirerName": "Simulator",
            "AcquirerReturnCode": null,
            "AffiliationCode": "000000000",
            "AmountInCents": 10000,
            "AuthorizationCode": null,
            "AuthorizedAmountInCents": null,
            "CapturedAmountInCents": null,
            "CapturedDate": null,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
                "IsExpiredCreditCard": false,
                "MaskedCreditCardNumber": "411111****1111"
            },
            "CreditCardOperation": "AuthAndCapture",
            "CreditCardTransactionStatus": "PendingAuthorize",
            "DueDate": "2016-01-14T19:57:02",
            "ExternalTime": 0,
            "PaymentMethodName": "Simulator",
            "RefundedAmountInCents": null,
            "Success": true,
            "TransactionIdentifier": null,
            "TransactionKey": "e88adc8b-1796-4cbf-8e96-524d9193b3c6",
            "TransactionKeyToAcquirer": "e88adc8b17964cbf",
            "TransactionReference": "768a9716-8347-4f15-8912-defd81a5f5df",
            "UniqueSequentialNumber": null,
            "VoidedAmountInCents": null
        },
        {
            "AcquirerMessage": null,
            "AcquirerName": "Simulator",
            "AcquirerReturnCode": null,
            "AffiliationCode": "000000000",
            "AmountInCents": 10000,
            "AuthorizationCode": null,
            "AuthorizedAmountInCents": null,
            "CapturedAmountInCents": null,
            "CapturedDate": null,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
                "IsExpiredCreditCard": false,
                "MaskedCreditCardNumber": "411111****1111"
            },
            "CreditCardOperation": "AuthAndCapture",
            "CreditCardTransactionStatus": "PendingAuthorize",
            "DueDate": "2016-02-14T19:57:02",
            "ExternalTime": 0,
            "PaymentMethodName": "Simulator",
            "RefundedAmountInCents": null,
            "Success": true,
            "TransactionIdentifier": null,
            "TransactionKey": "446b4176-79cd-4767-96e8-fa418b2ad2c3",
            "TransactionKeyToAcquirer": "446b417679cd4767",
            "TransactionReference": "768a9716-8347-4f15-8912-defd81a5f5df",
            "UniqueSequentialNumber": null,
            "VoidedAmountInCents": null
        },
        {
            "AcquirerMessage": null,
            "AcquirerName": "Simulator",
            "AcquirerReturnCode": null,
            "AffiliationCode": "000000000",
            "AmountInCents": 10000,
            "AuthorizationCode": null,
            "AuthorizedAmountInCents": null,
            "CapturedAmountInCents": null,
            "CapturedDate": null,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
                "IsExpiredCreditCard": false,
                "MaskedCreditCardNumber": "411111****1111"
            },
            "CreditCardOperation": "AuthAndCapture",
            "CreditCardTransactionStatus": "PendingAuthorize",
            "DueDate": "2016-03-14T19:57:02",
            "ExternalTime": 0,
            "PaymentMethodName": "Simulator",
            "RefundedAmountInCents": null,
            "Success": true,
            "TransactionIdentifier": null,
            "TransactionKey": "d1a03c9e-26c6-481f-9267-e01662e22a27",
            "TransactionKeyToAcquirer": "d1a03c9e26c6481f",
            "TransactionReference": "768a9716-8347-4f15-8912-defd81a5f5df",
            "UniqueSequentialNumber": null,
            "VoidedAmountInCents": null
        },
        {
            "AcquirerMessage": null,
            "AcquirerName": "Simulator",
            "AcquirerReturnCode": null,
            "AffiliationCode": "000000000",
            "AmountInCents": 10000,
            "AuthorizationCode": null,
            "AuthorizedAmountInCents": null,
            "CapturedAmountInCents": null,
            "CapturedDate": null,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
                "IsExpiredCreditCard": false,
                "MaskedCreditCardNumber": "411111****1111"
            },
            "CreditCardOperation": "AuthAndCapture",
            "CreditCardTransactionStatus": "PendingAuthorize",
            "DueDate": "2016-04-14T19:57:02",
            "ExternalTime": 0,
            "PaymentMethodName": "Simulator",
            "RefundedAmountInCents": null,
            "Success": true,
            "TransactionIdentifier": null,
            "TransactionKey": "2605eeee-0910-444a-8c8d-748557c1028c",
            "TransactionKeyToAcquirer": "2605eeee0910444a",
            "TransactionReference": "768a9716-8347-4f15-8912-defd81a5f5df",
            "UniqueSequentialNumber": null,
            "VoidedAmountInCents": null
        }
    ],
    "ErrorReport": null,
    "InternalTime": 1116,
    "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
    "OrderResult": {
        "CreateDate": "2015-12-14T21:57:01",
        "OrderKey": "219d7581-78e2-4aa9-b708-b7c585780bfc",
        "OrderReference": "NumeroDoPedido"
    },
    "RequestKey": "f6435375-ff40-4eb9-96e6-01b0949c4e74"
}
{}


{"_id":"5978f16eb8da85001f5081f9","category":"5978f16bb8da85001f5081d2","parentDoc":null,"project":"57ed53f75760ab190017b45e","user":"55831751870ff41900de479e","version":"5978f16bb8da85001f5081cd","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-07-07T22:25:17.565Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":21,"body":"Nosso Gateway também permite que você guarde os dados do cartão do seus clientes para facilitar a realização de compras futuras ou recorrências!\n\nPara que isso aconteça, transformamos os dados do cartão do seu cliente em um token e vamos te enviá-lo na resposta de cada transação. O nome desse token é **InstantBuyKey**.","excerpt":"Como manter cartão do seu cliente seguro e facilitar compras futuras ao mesmo tempo!","slug":"instant-buy-tokenizacao","type":"basic","title":"Tokenização","__v":0,"childrenPages":[]}

Tokenização

Como manter cartão do seu cliente seguro e facilitar compras futuras ao mesmo tempo!

Nosso Gateway também permite que você guarde os dados do cartão do seus clientes para facilitar a realização de compras futuras ou recorrências!

Para que isso aconteça, transformamos os dados do cartão do seu cliente em um token e vamos te enviá-lo na resposta de cada transação. O nome desse token é InstantBuyKey.

{"_id":"5978f16eb8da85001f5081fa","category":"5978f16bb8da85001f5081d2","parentDoc":null,"project":"57ed53f75760ab190017b45e","user":"55831751870ff41900de479e","version":"5978f16bb8da85001f5081cd","updates":["560cb3488753612100214265","56461ca0bb7ad50d00e9c593","5672cdd71e18b60d00b04a06","5678477de5da8d0d00591c4d","5678afb53473bc0d008e13a0","5682dc3670331a0d00484a2e","56bc9a15fd10700d00e9aaf0"],"next":{"pages":[],"description":""},"createdAt":"2015-09-15T20:11:28.128Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":201,"code":"{\n    \"BoletoTransactionResultCollection\": [],\n    \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n    \"CreditCardTransactionResultCollection\": [\n        {\n            \"AcquirerMessage\": \"Simulator|Transação de simulação autorizada com sucesso\",\n            \"AcquirerName\": \"Simulator\",\n            \"AcquirerReturnCode\": \"0\",\n            \"AffiliationCode\": \"000000000\",\n            \"AmountInCents\": 10000,\n            \"AuthorizationCode\": \"104901\",\n            \"AuthorizedAmountInCents\": 10000,\n            \"CapturedAmountInCents\": 10000,\n            \"CapturedDate\": \"2015-12-15T19:47:57\",\n            \"CreditCard\": {\n                \"CreditCardBrand\": \"Visa\",\n                \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n                \"IsExpiredCreditCard\": false,\n                \"MaskedCreditCardNumber\": \"411111****1111\"\n            },\n            \"CreditCardOperation\": \"AuthAndCapture\",\n            \"CreditCardTransactionStatus\": \"Captured\",\n            \"DueDate\": null,\n            \"ExternalTime\": 0,\n            \"PaymentMethodName\": \"Simulator\",\n            \"RefundedAmountInCents\": null,\n            \"Success\": true,\n            \"TransactionIdentifier\": \"356704\",\n            \"TransactionKey\": \"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\",\n            \"TransactionKeyToAcquirer\": \"aec4acbd4f994cd3\",\n            \"TransactionReference\": \"d6adf879-9362-4e48-a2a1-a69d020c6641\",\n            \"UniqueSequentialNumber\": \"339701\",\n            \"VoidedAmountInCents\": null\n        }\n    ],\n    \"ErrorReport\": null,\n    \"InternalTime\": 124,\n    \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n    \"OrderResult\": {\n        \"CreateDate\": \"2015-12-15T19:47:56\",\n        \"OrderKey\": \"219d7581-78e2-4aa9-b708-b7c585780bfc\",\n        \"OrderReference\": \"NumeroDoPedido\"\n    },\n    \"RequestKey\": \"51cbe2ab-c925-47dd-b634-b4b4ee81eb2d\"\n}","language":"json"},{"status":400,"language":"json","code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"A bandeira Invalida atualmente não é suportada.\",\n        \"ErrorCode\": 400,\n        \"ErrorField\": \"CreditCardBrand\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 0,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"fb0f6d14-3564-4ac2-bc88-9d319816b966\",\n  \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",\n}"}]},"settings":"561f139acfc3610d00567176","examples":{"codes":[]},"method":"post","auth":"required","params":[{"_id":"55b80b3caea7c8190058bb73","ref":"","in":"body","required":true,"desc":"Valor da transação em centavos. R$ 1,00 = 100","default":"","type":"int","name":"AmountInCents"},{"_id":"55f87defa3271b0d00498d96","ref":"","in":"body","required":true,"desc":"Token (InstantBuyKey) do cliente","default":"","type":"string","name":"CreditCard[InstantBuyKey]"},{"_id":"55b80b3caea7c8190058bb6e","ref":"","in":"body","required":true,"desc":"Código de segurança do cartão","default":"","type":"int","name":"CreditCard[SecurityCode]"},{"_id":"55b80b3caea7c8190058bb6c","ref":"","in":"body","required":false,"desc":"Tipo de operação a ser realizada","default":"AuthAndCapture","type":"string","name":"CreditCardOperation"},{"_id":"55b80b3caea7c8190058bb6b","ref":"","in":"body","required":false,"desc":"Número de Parcelas","default":"1","type":"int","name":"InstallmentCount"},{"_id":"55b80b3caea7c8190058bb68","ref":"","in":"body","required":false,"desc":"Meio de pagamento que deve ser utilizado para a transação","default":"0","type":"int","name":"Options[PaymentMethodCode]"},{"_id":"55b80b3caea7c8190058bb6a","ref":"","in":"body","required":false,"desc":"Identificador da transação na sua base","default":"","type":"string","name":"TransactionReference"},{"_id":"55b80b3caea7c8190058bb69","ref":"","in":"body","required":false,"desc":"Identificador do pedido na sua base","default":"","type":"string","name":"Order[OrderReference]"}],"url":"/Sale"},"isReference":true,"order":22,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Cria a transação.\\nvar transaction = new CreditCardTransaction() {\\n    AmountInCents = 10000,\\n    CreditCard = new CreditCard() {\\n        // Chave do cartão (InstantBuyKey)\\n        InstantBuyKey = Guid.Parse(\\\"3b3b5b62-6660-428d-905e-96f49d46ae28\\\")\\n    },\\n    InstallmentCount = 1\\n};\\n\\n// Cria requisição.\\nvar createSaleRequest = new CreateSaleRequest() {\\n    // Adiciona a transação na requisição.\\n    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { transaction }),\\n    Order = new Order() {\\n        OrderReference = \\\"NumeroDoPedido\\\"\\n    }\\n};\\n\\n// Coloque a sua MerchantKey aqui.\\nGuid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n// Cria o client que enviará a transação.\\nvar serviceClient = new GatewayServiceClient(merchantKey, new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Autoriza a transação e recebe a resposta do gateway.\\nvar httpResponse = serviceClient.Sale.Create(createSaleRequest);\\n\\nConsole.WriteLine(\\\"Código retorno: {0}\\\", httpResponse.HttpStatusCode);\\nConsole.WriteLine(\\\"Chave do pedido: {0}\\\", httpResponse.Response.OrderResult.OrderKey);\\nif (httpResponse.Response.CreditCardTransactionResultCollection != null) {\\n    Console.WriteLine(\\\"Status transação: {0}\\\", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);\\n}\",\n      \"language\": \"csharp\"\n    },\n    {\n      \"code\": \"<?php\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a url utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave da loja\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria objeto requisição\\n    $createSaleRequest = new \\\\Gateway\\\\One\\\\DataContract\\\\Request\\\\CreateSaleRequest();\\n\\n    // Define dados da transação\\n    $createSaleRequest->addCreditCardTransaction()\\n        ->setAmountInCents(10000)\\n        ->setInstallmentCount(1)\\n        ->getCreditCard()\\n        ->setInstantBuyKey(\\\"3b3b5b62-6660-428d-905e-96f49d46ae28\\\")\\n        ;\\n\\n    //Define dados do pedido\\n    $createSaleRequest->getOrder()\\n    ->setOrderReference('NumeroDoPedido');\\n\\n    // Cria um objeto ApiClient\\n    $apiClient = new \\\\Gateway\\\\ApiClient();\\n\\n    // Faz a chamada para criação\\n    $response = $apiClient->createSale($createSaleRequest);\\n    \\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\CreditCardError $error)\\n{\\n    $response = array(\\\"message\\\" => $error->getMessage());\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\ApiError $error)\\n{\\n    $response = array(\\\"message\\\" => $error->errorCollection->ErrorItemCollection[0]->Description);\\n}\\ncatch (\\\\Exception $ex)\\n{\\n    $response = array(\\\"message\\\" => \\\"Ocorreu um erro inesperado.\\\");\\n}\\nfinally\\n{\\n    header('Content-Type: application/json');\\n    var_dump($response);\\n}\\n?>\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"require 'stone_ecommerce'\\n\\n# variable with merchant key\\nmerchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'\\n\\n# instantiate class with request methods\\n# :sandbox for sandbox ambient \\n# :production for production ambient\\ngateway = Gateway::Gateway.new(:sandbox, merchantKey)\\n\\n# create credit card transaction object\\ncreditCardTransaction = Gateway::CreditCardTransaction.new\\ncreditCardTransaction.AmountInCents = 10000\\ncreditCardTransaction.CreditCard.InstantBuyKey = '3b3b5b62-6660-428d-905e-96f49d46ae28'\\ncreditCardTransaction.InstallmentCount = 1\\n\\n# creates request object for transaction creation\\ncreateSaleRequest = Gateway::CreateSaleRequest.new\\ncreateSaleRequest.CreditCardTransactionCollection << creditCardTransaction\\ncreateSaleRequest.Order.OrderReference = 'NumeroDoPedido'\\n\\n# make the request and returns a response hash\\nresponse = gateway.CreateSale(createSaleRequest)\\n\\n# prints the response\\nputs response\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# -*- coding: utf-8 -*-\\n\\nfrom uuid import UUID\\nfrom data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order, creditcard_instant_buy\\nfrom stoneEcommercePython  import GatewayServiceClient\\nfrom enum_types import PlatformEnvironment, HttpContentTypeEnum\\n\\n#Coleta os dados do cartão.\\ncreditcard_data = creditcard_instant_buy(instant_buy_key = '3b3b5b62-6660-428d-905e-96f49d46ae28')\\n\\n#Cria a transação.\\ntransaction_collection = [creditcard_transaction(10000, creditcard_data)]\\n\\n#Cria o numero do pedido\\noptions_request = order(order_reference='NumeroDoPedido')\\n\\n#Cria a request.\\nrequest = create_sale_request(creditcard_transaction_collection=transaction_collection, order=options_request)\\n\\nmerchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')\\nend_point = \\\"https://transaction.stone.com.br\\\"\\n\\nservice_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)\\n\\nhttp_response = service_client.sale.create_with_request(request)\\n\\njson_response = http_response.json()\\n\\nprint json_response\\n\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"// Define loja\\nUUID merchantKey = UUID.fromString(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\"); // Chave da Loja - MerchantKey\\n\\n// Cria um cartão de crédito e define endereço de cobrança\\nCreditCard creditCard = new CreditCard();\\ncreditCard.setInstantBuyKey(UUID.fromString(\\\"3b3b5b62-6660-428d-905e-96f49d46ae28\\\"));\\n\\n// Cria a transação de cartão de crédito e define cartão criado anteriormente\\nCreditCardTransaction creditCardTransaction = new CreditCardTransaction();\\ncreditCardTransaction.setAmountInCents(10000L);\\ncreditCardTransaction.setCreditCard(creditCard);\\ncreditCardTransaction.setInstallmentCount(1);\\n\\n// Cria o objeto order para adicionar o Order Reference\\nOrder order = new Order();\\norder.setOrderReference(\\\"NúmeroDoPedido\\\");\\n\\n// Cria o Sale Request para enviar o objeto de request\\nCreateSaleRequest createSaleRequest = new CreateSaleRequest();\\ncreateSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());\\ncreateSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);\\ncreateSaleRequest.setOrder(order);\\n\\n// Cria o cliente que vai enviar a transação\\nGatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, \\\"https://transaction.stone.com.br\\\");\\n\\n// Submete a transação e retorna a resposta do gateway\\nHttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse\\n        = serviceClient.getSale().Create(createSaleRequest);\\n\\nreturn httpResponse.getRawResponse();\",\n      \"language\": \"java\",\n      \"name\": null\n    },\n    {\n      \"code\": \"{\\n    \\\"CreditCardTransactionCollection\\\": [\\n        {\\n            \\\"AmountInCents\\\": 10000,\\n            \\\"CreditCard\\\": {\\n                \\\"InstantBuyKey\\\": \\\"3b3b5b62-6660-428d-905e-96f49d46ae28\\\"\\n            },\\n            \\\"InstallmentCount\\\": 1\\n        }\\n    ],\\n    \\\"Order\\\": {\\n        \\\"OrderReference\\\": \\\"NumeroDoPedido\\\"\\n    }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nNossa transação com token é muito parecida com uma [transação normal](doc:criando-transacoes), com a diferença de que você não precisa enviar os dados do cartão! É só substituir os dados do cartão pelo token (InstantBuyKey), como ilustrado acima.","excerpt":"Exemplo de requisição de transação de cartão de crédito com token","slug":"enviando-uma-transação-com-instantbuy","type":"post","title":"Transação com token","__v":0,"childrenPages":[]}

postTransação com token

Exemplo de requisição de transação de cartão de crédito com token

Body Params

AmountInCents:
required
integer
Valor da transação em centavos. R$ 1,00 = 100
CreditCard[InstantBuyKey]:
required
string
Token (InstantBuyKey) do cliente
CreditCard[SecurityCode]:
required
integer
Código de segurança do cartão
CreditCardOperation:
stringAuthAndCapture
Tipo de operação a ser realizada
InstallmentCount:
integer1
Número de Parcelas
Options[PaymentMethodCode]:
integer0
Meio de pagamento que deve ser utilizado para a transação
TransactionReference:
string
Identificador da transação na sua base
Order[OrderReference]:
string
Identificador do pedido na sua base
// Cria a transação.
var transaction = new CreditCardTransaction() {
    AmountInCents = 10000,
    CreditCard = new CreditCard() {
        // Chave do cartão (InstantBuyKey)
        InstantBuyKey = Guid.Parse("3b3b5b62-6660-428d-905e-96f49d46ae28")
    },
    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("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

// 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) {
    Console.WriteLine("Status transação: {0}", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);
}
<?php
try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a url utilizada
    \Gateway\ApiClient::setBaseUrl("https://transaction.stone.com.br");

    // Define a chave da loja
    \Gateway\ApiClient::setMerchantKey("F2A1F485-CFD4-49F5-8862-0EBC438AE923");

    // Cria objeto requisição
    $createSaleRequest = new \Gateway\One\DataContract\Request\CreateSaleRequest();

    // Define dados da transação
    $createSaleRequest->addCreditCardTransaction()
        ->setAmountInCents(10000)
        ->setInstallmentCount(1)
        ->getCreditCard()
        ->setInstantBuyKey("3b3b5b62-6660-428d-905e-96f49d46ae28")
        ;

    //Define dados do pedido
    $createSaleRequest->getOrder()
    ->setOrderReference('NumeroDoPedido');

    // Cria um objeto ApiClient
    $apiClient = new \Gateway\ApiClient();

    // Faz a chamada para criação
    $response = $apiClient->createSale($createSaleRequest);
    
}
catch (\Gateway\One\DataContract\Report\CreditCardError $error)
{
    $response = array("message" => $error->getMessage());
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (\Exception $ex)
{
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    header('Content-Type: application/json');
    var_dump($response);
}
?>
require 'stone_ecommerce'

# variable with merchant key
merchantKey = 'F2A1F485-CFD4-49F5-8862-0EBC438AE923'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# create credit card transaction object
creditCardTransaction = Gateway::CreditCardTransaction.new
creditCardTransaction.AmountInCents = 10000
creditCardTransaction.CreditCard.InstantBuyKey = '3b3b5b62-6660-428d-905e-96f49d46ae28'
creditCardTransaction.InstallmentCount = 1

# creates request object for transaction creation
createSaleRequest = Gateway::CreateSaleRequest.new
createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
createSaleRequest.Order.OrderReference = 'NumeroDoPedido'

# make the request and returns a response hash
response = gateway.CreateSale(createSaleRequest)

# prints the response
puts response
# -*- coding: utf-8 -*-

from uuid import UUID
from data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order, creditcard_instant_buy
from stoneEcommercePython  import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum

#Coleta os dados do cartão.
creditcard_data = creditcard_instant_buy(instant_buy_key = '3b3b5b62-6660-428d-905e-96f49d46ae28')

#Cria a transação.
transaction_collection = [creditcard_transaction(10000, creditcard_data)]

#Cria o numero do pedido
options_request = order(order_reference='NumeroDoPedido')

#Cria a request.
request = create_sale_request(creditcard_transaction_collection=transaction_collection, order=options_request)

merchant_key = UUID('F2A1F485-CFD4-49F5-8862-0EBC438AE923')
end_point = "https://transaction.stone.com.br"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

http_response = service_client.sale.create_with_request(request)

json_response = http_response.json()

print json_response
// Define loja
UUID merchantKey = UUID.fromString("F2A1F485-CFD4-49F5-8862-0EBC438AE923"); // Chave da Loja - MerchantKey

// Cria um cartão de crédito e define endereço de cobrança
CreditCard creditCard = new CreditCard();
creditCard.setInstantBuyKey(UUID.fromString("3b3b5b62-6660-428d-905e-96f49d46ae28"));

// Cria a transação de cartão de crédito e define cartão criado anteriormente
CreditCardTransaction creditCardTransaction = new CreditCardTransaction();
creditCardTransaction.setAmountInCents(10000L);
creditCardTransaction.setCreditCard(creditCard);
creditCardTransaction.setInstallmentCount(1);

// Cria o objeto order para adicionar o Order Reference
Order order = new Order();
order.setOrderReference("NúmeroDoPedido");

// Cria o Sale Request para enviar o objeto de request
CreateSaleRequest createSaleRequest = new CreateSaleRequest();
createSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());
createSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);
createSaleRequest.setOrder(order);

// Cria o cliente que vai enviar a transação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://transaction.stone.com.br");

// Submete a transação e retorna a resposta do gateway
HttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse
        = serviceClient.getSale().Create(createSaleRequest);

return httpResponse.getRawResponse();
{
    "CreditCardTransactionCollection": [
        {
            "AmountInCents": 10000,
            "CreditCard": {
                "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28"
            },
            "InstallmentCount": 1
        }
    ],
    "Order": {
        "OrderReference": "NumeroDoPedido"
    }
}

Nossa transação com token é muito parecida com uma transação normal, com a diferença de que você não precisa enviar os dados do cartão! É só substituir os dados do cartão pelo token (InstantBuyKey), como ilustrado acima.

Definition

{{ api_url }}{{ page_api_url }}

Result Format

{
    "BoletoTransactionResultCollection": [],
    "BuyerKey": "00000000-0000-0000-0000-000000000000",
    "CreditCardTransactionResultCollection": [
        {
            "AcquirerMessage": "Simulator|Transação de simulação autorizada com sucesso",
            "AcquirerName": "Simulator",
            "AcquirerReturnCode": "0",
            "AffiliationCode": "000000000",
            "AmountInCents": 10000,
            "AuthorizationCode": "104901",
            "AuthorizedAmountInCents": 10000,
            "CapturedAmountInCents": 10000,
            "CapturedDate": "2015-12-15T19:47:57",
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "InstantBuyKey": "3b3b5b62-6660-428d-905e-96f49d46ae28",
                "IsExpiredCreditCard": false,
                "MaskedCreditCardNumber": "411111****1111"
            },
            "CreditCardOperation": "AuthAndCapture",
            "CreditCardTransactionStatus": "Captured",
            "DueDate": null,
            "ExternalTime": 0,
            "PaymentMethodName": "Simulator",
            "RefundedAmountInCents": null,
            "Success": true,
            "TransactionIdentifier": "356704",
            "TransactionKey": "20ba0520-7d09-44f8-8fbc-e4329e2b18d5",
            "TransactionKeyToAcquirer": "aec4acbd4f994cd3",
            "TransactionReference": "d6adf879-9362-4e48-a2a1-a69d020c6641",
            "UniqueSequentialNumber": "339701",
            "VoidedAmountInCents": null
        }
    ],
    "ErrorReport": null,
    "InternalTime": 124,
    "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
    "OrderResult": {
        "CreateDate": "2015-12-15T19:47:56",
        "OrderKey": "219d7581-78e2-4aa9-b708-b7c585780bfc",
        "OrderReference": "NumeroDoPedido"
    },
    "RequestKey": "51cbe2ab-c925-47dd-b634-b4b4ee81eb2d"
}
{
  "ErrorReport": {
    "Category": "RequestError",
    "ErrorItemCollection": [
      {
        "Description": "A bandeira Invalida atualmente não é suportada.",
        "ErrorCode": 400,
        "ErrorField": "CreditCardBrand",
        "SeverityCode": "Error"
      }
    ]
  },
  "InternalTime": 0,
  "MerchantKey": "F2A1F485-CFD4-49F5-8862-0EBC438AE923",
  "RequestKey": "fb0f6d14-3564-4ac2-bc88-9d319816b966",
  "BuyerKey": "00000000-0000-0000-0000-000000000000",
}


{"_id":"5978f16eb8da85001f5081fb","category":"5978f16bb8da85001f5081d2","parentDoc":null,"user":"55831751870ff41900de479e","project":"57ed53f75760ab190017b45e","version":"5978f16bb8da85001f5081cd","updates":["560c2f60e6112f2300b8d9e1","560cb237875361210021425c","56461c6e9f3f550d00fa3d96","5672d39e3cab740d00d15a42","567843a13473bc0d008e130a","5678ae483473bc0d008e139f","56bc99a75e104b0d00e7afbb"],"next":{"pages":[],"description":""},"createdAt":"2015-07-28T22:09:52.960Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"561f139acfc3610d00567176","examples":{"codes":[]},"method":"get","results":{"codes":[{"name":"","code":"{\n    \"CreditCardDataCollection\": [\n        {\n            \"CreditCardBrand\": \"Visa\",\n            \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",\n            \"IsExpiredCreditCard\": false,\n            \"MaskedCreditCardNumber\": \"****1111\"\n        }\n    ],\n    \"CreditCardDataCount\": 1,\n    \"ErrorReport\": null,\n    \"InternalTime\": 27,\n    \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n    \"RequestKey\": \"196728b1-7c82-400c-899b-9c76187f4966\"\n}","language":"json","status":200},{"name":"","code":"{\n  \"ErrorReport\": {\n    \"Category\": \"RequestError\",\n    \"ErrorItemCollection\": [\n      {\n        \"Description\": \"InstantBuyKey inválido.\",\n        \"ErrorCode\": 404,\n        \"ErrorField\": \"GetInstantBuyDataRequest.InstantBuyKey\",\n        \"SeverityCode\": \"Error\"\n      }\n    ]\n  },\n  \"InternalTime\": 43,\n  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",\n  \"RequestKey\": \"8a7a93d1-24c4-4fe8-9ecc-c162649aa642\",\n  \"CreditCardDataCollection\": [],\n  \"CreditCardDataCount\": 0\n}","language":"json","status":400}]},"auth":"required","params":[],"url":"/CreditCard/{InstantBuyKey}"},"isReference":true,"order":23,"body":"[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Guid merchantKey = Guid.Parse(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\nGuid instantBuyKey = Guid.Parse(\\\"3b3b5b62-6660-428d-905e-96f49d46ae28\\\");\\n\\n// Cria o cliente para obter os dados do cartão.\\nvar client = new GatewayServiceClient(merchantKey,new Uri(\\\"https://transaction.stone.com.br\\\"));\\n\\n// Obtém os dados do cartão de crédito no gateway.\\nvar httpResponse = client.CreditCard.GetInstantBuyData(instantBuyKey);\\n\\nif (httpResponse.HttpStatusCode == HttpStatusCode.OK\\n    && httpResponse.Response.CreditCardDataCollection.Any() == true) {\\n        Console.WriteLine(\\\"Número cartão: {0}\\\", httpResponse.Response.CreditCardDataCollection.FirstOrDefault().MaskedCreditCardNumber);\\n}\",\n      \"language\": \"csharp\",\n      \"name\": \"C#\"\n    },\n    {\n      \"code\": \"<?php\\n\\ntry\\n{\\n    // Carrega dependências\\n    require_once(dirname(__FILE__) . '/vendor/autoload.php');\\n\\n    // Define a url utilizada\\n    \\\\Gateway\\\\ApiClient::setBaseUrl(\\\"https://transaction.stone.com.br\\\");\\n\\n    // Define a chave da loja\\n    \\\\Gateway\\\\ApiClient::setMerchantKey(\\\"F2A1F485-CFD4-49F5-8862-0EBC438AE923\\\");\\n\\n    // Cria um objeto ApiClient\\n    $client = new \\\\Gateway\\\\ApiClient();\\n\\n    // Faz a chamada para criação\\n    $response = $client->GetCreditCard(\\\"3b3b5b62-6660-428d-905e-96f49d46ae28\\\");\\n\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\CreditCardError $error)\\n{\\n    $response = array(\\\"message\\\" => $error->getMessage());\\n}\\ncatch (\\\\Gateway\\\\One\\\\DataContract\\\\Report\\\\Ap