Pincode de coleta
Modelos de PIN de 4 dígitos validados no momento da coleta — quem é dono do PIN (transportadora ou Abbiamo) decide o fluxo.
Pincode de coleta é um código numérico curto (4 dígitos) validado no momento em que o motorista chega à origem (a loja) para confirmar que o motorista certo está pegando o pedido certo. É usado por embarcadores que precisam de uma camada extra de verificação anti-fraude / compliance no handover entre a loja e o motorista.
A Abbiamo suporta dois modelos coexistentes de pincode de coleta. A escolha é parte do acordo comercial entre embarcador e transportadora, e é configurada por integração. As transportadoras só precisam saber que o mesmo campo no payload da Solicitação de entrega (logistic_data.pickup_verification.pincode_owner) indica qual fluxo se aplica a cada entrega.
Modelo tradicional — pincode_owner = "carrier"
A transportadora gera o PIN como parte do próprio fluxo de coleta.
- A Abbiamo despacha a entrega para a transportadora com
pickup_verification.pincode = trueepincode_owner = "carrier". Nenhum valor de PIN é enviado. - A transportadora gera o PIN internamente e o devolve para a Abbiamo no primeiro evento de status enviado após o motorista sair em direção ao ponto de coleta — geralmente
at-pickup-pointoucollecting-delivery— no campocollect_verification_code. - A Abbiamo exibe o código para o operador da loja no dashboard. O operador entrega o código ao motorista (geralmente verbalmente no balcão).
- O motorista digita o código no app da própria transportadora. A validação acontece dentro do sistema da transportadora.
- A transportadora envia o evento de status
collectedquando a coleta é finalizada.
Este é o modelo já em produção hoje para transportadoras que suportam pincode de coleta.
Modelo motorista → loja — pincode_owner = "abbiamo"
A Abbiamo é dona do PIN e valida localmente.
- No momento em que a Abbiamo despacha uma entrega para a transportadora, ela gera um PIN de 4 dígitos único por entrega (um pedido pode ter múltiplos envios, cada um com seu próprio PIN) e persiste. A entrega é então despachada com
pickup_verification.pincode = true,pincode_owner = "abbiamo"epincode_valuecontendo o código de 4 dígitos. - A transportadora exibe o
pincode_valuepara o motorista no app dela — o motorista leva o código consigo até o ponto de coleta. - Na loja, o motorista informa o código para o operador. O operador digita o código no dashboard da Abbiamo.
- A Abbiamo valida o código localmente contra a própria cópia.
- Se o código bater, a Abbiamo dispara o webhook Validação do pincode de coleta sincronicamente para a transportadora. A transportadora destrava o motorista no app dela e responde
200 / driver_unlockedna mesma resposta HTTP. - A Abbiamo transita a entrega para
COLLECTEDe libera a coleta no lado da loja.
Este modelo é exigido por embarcadores que precisam ser a fonte da verdade do PIN — geralmente por motivos de auditoria, prevenção de fraude ou regulatórios.
Comparação lado a lado
| Aspecto | pincode_owner = "carrier" | pincode_owner = "abbiamo" |
|---|---|---|
| Quem gera o PIN | Transportadora | Abbiamo (ou o embarcador, repassado via Abbiamo) |
| Como o PIN chega na Abbiamo | Eventos de status com collect_verification_code | Gerado dentro da Abbiamo no momento do despacho (um PIN por entrega) |
| Como o PIN chega na transportadora | A transportadora já tem (gerou internamente) | pickup_verification.pincode_value na Solicitação de entrega |
| Quem mostra o PIN para quem | Dashboard mostra ao operador → operador fala ao motorista | App da transportadora mostra ao motorista → motorista fala ao operador |
| Onde acontece a validação | Dentro do app da transportadora (motorista digita lá) | Dentro da Abbiamo (operador digita no dashboard) |
| Novo webhook da Abbiamo | Nenhum (eventos de status já existentes bastam) | PICKUP_PIN_VALIDATION_REQUEST — síncrono, a resposta decide o resultado |
| Status na transportadora | Igual às integrações de pickup pincode atuais | Exige ler pincode_value e expor o novo handler de webhook síncrono |
Como configurar
O modelo usado em cada entrega é decidido pela configuração da integração filial × transportadora do lado da Abbiamo — a transportadora não precisa fazer nada por pedido para escolher entre os dois. Para habilitar o modelo motorista → loja para um embarcador específico, a transportadora precisa:
- Implementar a leitura de
pickup_verification.pincode_valuena Solicitação de entrega e exibi-lo ao motorista no app. - Implementar o handler Validação do pincode de coleta atendendo aos requisitos de idempotência e timeout documentados lá.
- Falar com carrier@abbiamolog.com para virar a chave da integração para
pincode_owner = "abbiamo"no embarcador específico.
Transportadoras que ainda não implementaram o modelo motorista → loja continuam recebendo pincode_owner = "carrier" (ou nenhum bloco pickup_verification quando pickup pincode não é usado) para todos os seus embarcadores — sem breaking change.