CIT vs. MIT
Toda relação de credencial armazenada começa com uma Customer Initiated Transaction (CIT), durante a qual o cliente está presente e autoriza explicitamente as cobranças futuras.CIT — cliente presente
O cliente está concluindo ativamente o checkout. Você coleta o cartão via um nonce novo (ou número de cartão bruto) e define
cardOnFile.usage: "first". A resposta devolve card.networkTransactionId e card.networkReferenceId — salve os dois valores no seu banco de dados. Você vai precisar deles para toda MIT posterior.MIT — iniciada pelo lojista
O cliente não está presente. Você passa o vault token salvo mais os campos de credencial armazenada, incluindo o
networkTransactionId e o networkReferenceId da CIT original. As redes de cartão usam essas referências para vincular a cobrança ao mandato autorizado.O objeto cardOnFile
Adicione um bloco cardOnFile dentro do objeto card tanto na CIT quanto em toda MIT. O próprio cardOnFile é opcional (o Therius deriva um padrão a partir do contexto — um tokenize novo versus uma reutilização de tokenData — quando omitido), mas, uma vez enviado, usage, initiatedBy e type são os três campos que juntos classificam a cobrança para as redes de cartão.
initiatedBy usa "cardholder", não "customer" — corresponda ao valor exato do enum.exceptionReason é opcional e ocupa um eixo próprio, independente de type — não substitui type, adiciona um rótulo de exceção de negócio por cima. A maioria das cobranças MIT posteriores nunca o envia; defina-o apenas quando a cobrança específica se enquadrar em uma destas categorias definidas pela bandeira:
Exemplo de CIT inicial
Colete o cartão normalmente (usando um nonce do SDK ou dados de cartão brutos em um servidor em conformidade com PCI), tokenize-o definindotokenize: true, e inclua o bloco cardOnFile.
Salvando um cartão sem conhecer o padrão de cobrança futuro
Se você está salvando no vault um cartão e ainda não sabe se ele vai virar uma assinatura recorrente, um plano de parcelas ou uma cobrança única não programada, declare-o como"type": "unscheduled" — a categoria que as redes de cartão reservam para “uso futuro autorizado pelo portador, padrão ainda não determinado”. Salve o networkTransactionId/networkReferenceId retornados de qualquer forma; você vai precisar deles seja qual for a MIT que enviar no futuro.
Se o cartão só for reutilizado em um futuro checkout com o cliente presente — o cliente o escolhe entre seus métodos salvos e confirma a cobrança ele mesmo, nunca cobrado sem presença por você — você não precisa de nenhum bloco
cardOnFile. Basta enviar tokenize: true com shopper.id. cardOnFile só importa quando uma MIT vai acontecer.Exemplo de MIT posterior — renovação recorrente
Em toda cobrança posterior — uma renovação, uma parcela, um acréscimo não programado — passe o vault token mais os campos de credencial armazenada e as referências de rede da CIT original. Este exemplo mostra uma renovação recorrente (estilo assinatura); troquetype por installment ou unscheduled para corresponder ao mandato estabelecido na CIT.
O motor de assinaturas do Therius gerencia as credenciais armazenadas internamente para todas as renovações de assinatura. Você nunca precisa fornecer
cardOnFile nem campos de referência de rede ao usar a API de assinaturas — este guia só é relevante se você estiver construindo a sua própria lógica de faturamento fora do motor de assinaturas.Tipos de credencial
Recorrente
Use
"type": "recurring" para cobranças de valor fixo que se repetem em um cronograma previsível — mensalidades de SaaS, renovações anuais, taxas de associação.Parcela
Use
"type": "installment" quando um cliente autoriza um pagamento dividido em um número fixo de cobranças — por exemplo, três pagamentos mensais por uma única compra.Não programada
Use
"type": "unscheduled" para cobranças que são autorizadas com antecedência mas disparadas por um evento definido pelo lojista — faturamento por uso, recargas de conta, taxas de conveniência, ou um cartão salvo para uso futuro antes de conhecer seu padrão definitivo.exceptionReason — um eixo separado e opcional de type, usado apenas quando uma MIT específica se enquadra em uma categoria de exceção definida pela bandeira.

