POST /v1/charges com payment_method: "credit_card" e um objeto
card. O restante da chamada é igual ao PIX — mesmos amount, items, customer e
Idempotency-Key.
Os valores aqui são inteiros em centavos: R$ 100,00 se envia como
10000. Decimais são
recusados com 422, e o porquê está em Valores em centavos.A regra
O número do cartão não entra nessa chamada. O que entra é umtoken de uso único, produzido no
navegador pela biblioteca de tokenização da Pagar.me, ou o id de um
cartão guardado.
Cobrança de R$ 100,00 em 3x
card numa cobrança PIX volta 422, e omiti-lo numa de cartão também. A dupla
payment_method + card anda junta.
Ao contrário do PIX, uma recusa cria cobrança
Esta é a distinção que mais gera chamado. Um422 significa que nada foi criado — o corpo não
passou na validação. Um 402 card_declined significa que a cobrança existe, com status
failed, e o seu ch_ está em error.details.charge_id.
402
ch_ junto do pedido. Ele aparece em GET /v1/charges, conta na sua taxa de aprovação e
é por ele que o suporte encontra a tentativa — jogar a resposta fora deixa você sem nada para
mostrar quando o comprador jurar que tentou pagar.
A message é nossa e é a que você pode mostrar ao comprador. O decline_code é da operadora, e
serve para o seu time entender o padrão das recusas, não para virar texto na tela.
Parcelas e juros
installments é obrigatório. Mesmo à vista, mande 1 — deixá-lo de fora não vira um padrão
implícito, volta 422.
A grade de parcelas não é fixa: ela muda por bandeira e por valor, e quem a calcula somos nós.
Consulte-a em GET /v1/installments e mostre ao comprador os
valores que vieram de lá.
O juro, quando houver, é cobrado do comprador e soma ao total. Ele volta em card.interest, em
centavos, e o amount da cobrança continua sendo o preço do seu produto — é o que faz a sua
conciliação fechar sem descobrir a diferença no fim do mês.
O que a resposta traz
Toda cobrança tem o objetocard. Numa cobrança PIX ele vem com os membros nulos, o que evita que o
seu código precise checar a existência do objeto antes de ler um campo.
Numa venda no cartão ele traz bandeira, quatro últimos dígitos, titular, parcelas, juros, o
resultado da autenticação do portador e o authorized_at.
authorized_at não é paid_at. A autorização reserva o limite no cartão; a captura é o que
move o dinheiro. Quem confirma a venda para o seu sistema continua sendo o webhook
charge.paid.O que dá errado
Uma venda no cartão também pode entrar em
in_analysis antes de decidir. Ela não está paga nem
recusada: a análise de fraude segurou o pagamento e o desfecho chega por
charge.in_analysis e depois por charge.paid ou
charge.failed. Ver Ciclo de vida.
Veja também
Autenticação do portador
Quando o 3DS entra e o que ele muda numa contestação.
Cofre de cartões
Cobrar de novo sem pedir nada ao comprador.
Ciclo de vida
Os dez estados, incluindo
in_analysis e chargedback.Ficou algo de fora? Chame no WhatsApp. Se o assunto for uma chamada específica, informe o horário dela; se for uma entrega de webhook, informe o
X-Vext-Delivery — é por ele que localizamos a tentativa, a resposta do seu servidor e o horário.