Evento payment.intent.updated
Disparado quando um campo público ou um estado intermediário de um
payment_intent muda. Isso inclui tanto alterações feitas por
POST /v1/payment-intents/:id quanto
mudanças produzidas por ações de lifecycle, como a confirmação de um Pix.
data.object traz o estado atual completo.
Quando presente, data.previous_attributes traz apenas os campos alterados,
com os valores anteriores. Atualizações assíncronas que só têm o snapshot atual
podem não incluir esse diff.
Use este evento para manter cache, pedido e conciliação em sincronia enquanto o
intent ainda não chegou a um desfecho. A resposta direta da operação não traz
diff; quando a Chargefy preservou o snapshot anterior, o diff aparece aqui, no
webhook.
Quando a confirmação de um Pix muda o status de
requires_confirmation para
requires_action, payment.intent.updated é emitido. Nesse caso,
data.previous_attributes.status vem como requires_confirmation,
data.object.status vem como requires_action e data.object.next_action
contém o Pix que deve ser apresentado ao comprador.data.previous_attributes é histórico. Para atualizar seu banco, use sempre o
objeto completo em data.object como fonte do estado atual.Quando acontece
Como processar
- Registre o
iddo evento (evt_*) para processar o webhook de forma idempotente. - Atualize o registro local usando
data.object.id(pi_*) e o objeto completo dedata.object. - Quando presente, use
data.previous_attributespara auditoria, logs e notificações condicionais. - Recalcule totais locais quando
amount_detailsoupayment_method_optionsaparecerem no diff. - Não libere pedido apenas por
payment.intent.updated; usepayment.intent.succeededpara conclusão. - Use
metadata,customereinvoicepara localizar o pedido ou fatura correspondente.
Campos importantes
Transições e status
payment.intent.updated pode representar uma mudança de campos ou uma transição
intermediária de status. Quando data.previous_attributes estiver presente e
status não aparecer nele, o estado do intent não mudou naquele diff. Quando o
bloco inteiro estiver ausente, use data.object como estado atual e não infira
se houve ou não transição apenas pela ausência do histórico.
Exemplo: confirmação de Pix
Páginas relacionadas
Objeto Payment Intent
Contrato completo de
data.object.Atualizar Payment Intent
Campos editáveis e estados permitidos.
Formato dos eventos
Envelope, objeto completo e regras de
previous_attributes.Implementar Payment Intents
Como sincronizar mudanças sem concluir a operação cedo demais.

