Skip to main content
Checkout QR é o fluxo em que um canal autenticado inicia uma venda, mostra um QR Code para o passageiro e o Customer autenticado vincula a sessão pelo app do cliente. A venda pode ser confirmada em dinheiro ou com crédito corporativo autorizado pelo próprio Customer.

Fluxo

Estados da sessão

Os estados abaixo são calculados a partir de linkedAt, preparedAt, confirmedAt, canceledAt e expiresAt; não há campo status persistido na sessão.

Responsabilidades

Dinheiro vs crédito

Validações

  • O QR Code deve pertencer a uma sessão ativa, não expirada e não confirmada.
  • O Customer deve estar autenticado no app do cliente.
  • A sessão só pode ser vinculada por um Customer autenticado uma vez; tentativa de trocar o vínculo deve cancelar a sessão e criar outra.
  • O usuário autenticado deve estar autorizado para a Trip selecionada.
  • A Trip precisa estar elegível para venda embarcada, conforme política operacional da cooperativa.
  • O ticket continua exigindo itinerary, passageiro, assento disponível e regras de benefício compatíveis.
  • Vendas com paymentMethod = CREDIT_GRANT devem validar saldo ativo do Customer e criar movimentos de reserva/captura no Credit Grant.
  • Vendas com paymentMethod = CASH não dependem de gateway e não aguardam webhook para emissão.

Dados que não devem ser persistidos

  • Saldo disponível do Customer na sessão; calcular a partir de CreditGrant.
  • Estado de envio da prestação de contas; a confirmação CASH já cria o CashSettlement pendente.
  • CREDIT_GRANT em PaymentMethod; crédito corporativo permanece no domínio Credit Grant.
Veja a modelagem em CheckoutSession.