payment_intent fica em pending com o documento renderizado em
next_action, e o payment.intent.succeeded chega via webhook quando o
banco confirma.
Pré-requisitos
Boleto exige endereço completo do comprador por regulamentação FEBRABAN. Ao confirmar uma checkout session compayment_method: "boleto", os seguintes
campos são obrigatórios:
Falhar qualquer um retorna um erro
422 por parâmetros inválidos.
POST /v1/payment-intents aceita cartão e Pix no fluxo direto. Um payment
intent de boleto nasce por checkout hospedado ou invoice; não envie
payment_method_types: ["boleto"] no create direto.Lifecycle
Lendo next_action.boleto_display_details
Trate
hosted_voucher_url e pdf como campos independentes, mesmo quando as
duas URLs apontarem para o mesmo documento.Auto-expiração
A Chargefy agenda automaticamente um job para encerrar a tentativa no momento deexpires_at se o pagamento não tiver sido confirmado. O vencimento encerra
o boleto, não o Payment Intent. Quando isso ocorre:
- O intent volta a
requires_payment_methodepayment.intent.updatedé emitido; a expiração não cancela o intent. charge.failedé emitido compayment_error.message: "Boleto expired without payment".- O documento atual é invalidado quando possível e
next_actionvolta anull.
Reemitir um boleto vencido (regenerate)
Depois que um boleto vence, usePOST /v1/payment-intents/{id}/regenerate_boleto
para emitir outro dentro do mesmo Payment Intent. Um boleto pending ou
processing ainda pode ser pago e não é reemitido. Mantém:
- Mesmo ID de
payment_intente mesmoclient_secret. - Mesmo vínculo com a checkout session (se aplicável).
- Novo
latest_charge, novonext_action, novoexpires_at.
429 caso contrário).
Sem limite total de reemissões.
