Você está na versão correta da documentação?

Verifique na sua [Dashboard](🔗), em _Ver minha conta > Configurações > API Keys_, a versão da API que você está usando. Você deve usar a documentação correspondente. Para saber mais, veja: [Versionamento](🔗).

## Realizando uma transação

Após [obter](🔗) os dados do cartão, gerar o `card_hash` e enviá-lo para o seu servidor, você deve realizar a transação junto à API Pagar.me, que então efetua o fluxo de cobrança no cartão do cliente.

Abaixo você encontrará o exemplo de uma transação de cartão de crédito de uma companhia com o antifraude habilitado.

Quando submeter informações sobre o comprador?

Os campos `customer`, `billing` e `items` são obrigatórios no caso de transações de cartão de crédito de companhias com o antifraude habilitado. O campo `shipping` é opcional e deve ser preenchido no caso da venda de um bem físico. Para mais informações, clique [**aqui**](🔗)



É dessa forma que você consegue criar uma transação de cartão de crédito. Viu como é simples? ;-)

## Parâmetros de uma transação

Descrição dos parâmetros passados no exemplo:

ParâmetroPadrãoDescrição
amount
Valor total a ser cobrado (em centavos). Ex: R$14,99 = `1499`
card_hash
Representação segura dos dados de cartão de crédito
installments1Número de parcelas a serem cobradas no cartão de crédito
payment_methodcredit_cardMeio de pagamento que será utilizado
postback_url
URL para receber notificações sobre alterações no status da transação
soft_descriptor
Texto (de até 13 caracteres, somente letras e números) que aparecerá na fatura do cartão do cliente ao lado do nome da sua loja
customer
Objeto que deve possuir as informações do cliente. Obrigatório com o antifraude habilitado. Para mais informações, clique [**aqui**](🔗)
billing
Objeto que deve possuir as informações de cobrança da transação. Obrigatório com o antifraude habilitado. Para mais informações, clique [**aqui**](🔗)
shipping
Objeto que deve possuir as informações de envio do que foi comprado. Deve ser preenchido no caso da venda de um bem físico. Para mais informações, clique [**aqui**](🔗)
items
Objeto que deve possuir as informações sobre os produtos comprados. Obrigatório com o antifraude habilitado. Para mais informações, clique [**aqui**](🔗)
metadata
Objeto JSON para você receber dados de sua plataforma, como: id do pedido, descrição do produto/serviço, etc
session
Valor único que identifica a sessão do usuário acessando o site

Aprenda mais sobre a lista completa de parâmetros em: [Criar transação](🔗)

## Observações

### **[card_hash](🔗)**

Vale ressaltar:

Após gerado, o `card_hash` tem validade de 5 minutos. Além disso, ele pode ser utilizado uma única vez.

### **Análises antifraude com transações assíncronas**

Análise manual pelo antifraude

Caso a sua loja esteja habilitada com análise manual pelo antifraude, é imprescindível que toda transação possua o campo [async](🔗) com o valor `true`. É necessário também fornecer um [postback_url](🔗), através do qual você receberá atualizações sobre o status da transação.

### **Dados de customer**

Por que passar os dados do cliente (customer, billing, shipping e items) na transação?

São dados essenciais para que o antifraude consiga avaliar a transação e evitar compras ilegítimas.

### **Ao usar os exemplos**

Mudança de API KEY:

Não se esqueça de substituir `ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0` pela sua [Chave de API](🔗), que está disponível em sua [Dashboard](🔗).

### **Status de uma transação após ser criada**

Após realizar uma transação de Cartão de crédito, ela fica com o status `paid`, indicando que o cartão do usuário foi debitado com sucesso. No entanto, caso ela seja recusada pelo banco emissor, fica com o status `refused`. Você pode aprender mais sobre os possíveis status de uma transação em: [Status das transações](🔗)

## Simulações em teste

### Como simular uma transação recusada pelo banco emissor?

Testando transações recusadas

No ambiente de testes, você pode simular uma transação recusada pelo banco emissor. Basta passar um `card_cvv` que começa com o número `6`.

### Como simular uma transação recusada pelo antifraude ?

Testando transação recusada por antifraude

Você pode fazer este teste passando um `document_number` igual à `11111111111`.

## Capturando uma transação posteriormente

Com a API Pagar.me, você pode separar o processo de autorização (reserva de saldo no cartão) e captura (confirmação para cobrança em fatura). Isso é feito através de um parâmetro chamado `capture`.

O primeiro passo é passar este parâmetro como `false` no momento da criação de uma transação, como é mostrado nesse exemplo:



Desta forma, a API Pagar.me retorna uma transação com status `authorized`, assim como no exemplo a seguir:



### **Chamada para fazer a captura**

Posteriormente, você pode **confirmar** e pedir a captura. É importante lembrar que isso precisa ser feito até [5 dias](🔗) após a autorização. Confirme a captura com a seguinte chamada:



Perceba que, no caminho da request, é necessário especificar o `ID` da transação que foi criada anteriormente.

## Captura parcial

Também pela API Pagar.me é possível especificar o quanto você gostaria de efetivamente capturar desta transação. Para isso você precisa apenas especificar o parâmetro amount, como no exemplo a seguir:



Quando uma captura parcial é feita, você consegue ver o resultado refletido no campo paid_amount da transaction, como o exemplo a seguir:



Vale ressaltar

A captura parcial só é permitida para transações criadas usando uma API Key, tanto para cartão de crédito ou boleto.

Logo, para transações feitas com o [Checkout Pagar.Me](🔗), o valor de captura deve ser sempre igual ao total do carrinho de compras em sua plataforma.

## Captura com split rules e metadata

Em um [Marketplace](🔗), é no momento da captura que você precisa passar os dados de [Split Rules](🔗) — isto é, as regras de divisão de uma transação.

Além disso, é também na captura que você precisa enviar os parâmetros de [metadata](🔗) com informações de sua plataforma. Veja os exemplos:



## Criando um cartão para one-click buy

Com a API Pagar.me você consegue criar um cartão para possíveis cobranças posteriores em transações e assinaturas. Para fazer isso, você precisa primeiramente de um `card_hash`, como mostra o exemplo a seguir:



O que todos estes exemplos retornam em comum é um `card_id`, dado que funciona como um ID para o cartão criado. Com ele, você consegue criar transações e assinaturas da mesma maneira que faz com `card_hash`. Exemplo de Card ID: **card_cj2ebvhnm011lkd6dj683vn0j **

### **As vantagens de um Card ID**

  • Ele pode ser usado indefinidamente, ou enquanto o cartão em si tenha validade com o banco emissor.

  • Pode ser armazenado em sua base de dados, pois não expira após 5 minutos como acontece com o Card Hash.