Sessão do cliente
Tudo sobre quem compra na loja: segundo fator, aparelhos conectados, visitante sem conta e verificações de contato.
Esta seção cobre a conta e a sessão de quem compra na loja (o cliente, na vitrine). O login, o cadastro e a renovação de token ficam em Autenticação; aqui está o que o cliente faz depois de entrar e o que o visitante, que ainda não tem conta, precisa para comprar.
As rotas ficam em /api/v1/storefront/. A loja é identificada pelo domínio da chamada (veja Multi-loja) e o cliente logado se identifica com Authorization: Bearer <access_token> (veja Tokens e escopos).
Como funciona
Um comprador passa, em geral, por este caminho:
- Chega sem contaO front-end cria um
X-Session-ID, monta o carrinho e guarda dados no perfil do visitante. - Prova o contatoSe a loja exige, confirma o e-mail por código.
- CompraFecha o pedido de visitante, ou cria uma conta e entra (veja Autenticação).
- Protege a conta
Conceitos principais
Cliente, visitante e administrador
O cliente tem conta e token e usa /api/v1/storefront/.... O visitante compra sem conta. O administrador e o seller (lojista) usam /api/v1/admin/... e /api/v1/vendor/...; veja Os três atores.
Sessão
Cada login cria uma sessão presa ao refresh_token. A sessão não é o access_token: encerrar a sessão impede a renovação, e o access token já emitido vale até expirar.
Dinheiro e datas
Valores monetários são inteiros em centavos (2190 = R$ 21,90). Datas são RFC 3339 em UTC. Veja Ids, dinheiro e datas.
Endpoints
| Método | Rota | Para quê | Autenticação |
|---|---|---|---|
| POST | /api/v1/storefront/2fa/setup | Gera o segredo do autenticador. | Cliente |
| POST | /api/v1/storefront/2fa/confirm | Confirma o código e ativa o 2FA. | Cliente |
| POST | /api/v1/storefront/2fa/disable | Desliga o 2FA. | Cliente |
| GET | /api/v1/storefront/2fa/status | Diz se o 2FA está ativo. | Cliente |
| GET | /api/v1/storefront/sessions | Lista as sessões abertas. | Cliente |
| DELETE | /api/v1/storefront/sessions/{id} | Encerra uma sessão. | Cliente |
| DELETE | /api/v1/storefront/sessions | Encerra todas as sessões. | Cliente |
| GET | /api/v1/storefront/guest/profile | Lê o perfil do visitante. | X-Session-ID |
| PUT | /api/v1/storefront/guest/profile | Salva ou mescla o perfil. | X-Session-ID |
| DELETE | /api/v1/storefront/guest/profile | Apaga o perfil. | X-Session-ID |
| POST | /api/v1/storefront/guest/orders | Cria o pedido de um visitante. | X-Session-ID |
| POST | /api/v1/storefront/otp/send | Envia o código de verificação. | Pública |
| POST | /api/v1/storefront/otp/verify | Confere o código. | Pública |
| GET | /api/v1/storefront/otp/status | Consulta se está verificado. | Pública |
| GET | /api/v1/storefront/register/cnpj/{cnpj} | Consulta o CNPJ para o cadastro. | Pública |
Erros comuns
- Mandar o mesmo
X-Session-IDpara vários visitantes. Cada visitante precisa de um UUID próprio. - Derivar o
X-Session-IDde e-mail, CPF ou contador: quem adivinhar lê o perfil daquela sessão. - Chamar
2fa/setupde novo para "ver o QR code outra vez": isso troca o segredo e desliga o 2FA até o próximoconfirm. - Tratar o
200deotp/verifycomo sucesso sem lerverified. - Esperar que encerrar uma sessão derrube o access token na hora.
- Enviar
itemsno pedido de visitante que não batem com o carrinho (409 cart_mismatch).