Flux
- L'app appelle
createVerificationSession(storage, config)→ obtient untokenavec une sessionpending(15 minutes par défaut). buildWhatsAppVerificationLink(token, config)construit un lienhttps://wa.me/<numéro>?text=...affiché sur un bouton "Vérifier avec WhatsApp".- Le client clique, WhatsApp s'ouvre avec le message déjà rempli, il appuie sur Envoyer.
- Le webhook Meta reçoit le message entrant et appelle
resolveVerificationsFromWebhook(storage, payload): le token est retrouvé dans le texte, la session passe àverifiedavecphone= numéro de l'expéditeur — jamais saisi par le client. - L'app appelle
getVerificationSession(storage, token)(poll ou SSE) jusqu'à voirstatus === "verified". - Optionnel : si
shouldSendConfirmationReply(config)est vrai, renvoyer un message de confirmation dans la fenêtre de service ouverte à l'étape 4.
Pourquoi aucun OTP n'est nécessaire
WhatsApp garantit que le champ from d'un message entrant est bien le numéro réel de l'expéditeur. Recevoir le message contenant le token suffit donc comme preuve de possession — inutile de renvoyer un code à vérifier en retour.