一、先确认验证码请求是否真正产生
用户点击“发送验证码”后,前端请求可能被页面校验、风控、频率限制或服务端异常拦截。企业应先确认是否创建了业务请求、是否进入消息队列、是否调用短信API,以及平台是否返回message ID。
用户请求手机号和操作是否通过前端校验?
业务服务频控、风控和账户状态是否允许发送?
短信接口请求是否成功并返回message ID?
状态回执最终是delivered、failed还是expired?
二、检查手机号和国家码
国际号码应使用正确国家码和本地号码结构。常见问题包括国家码遗漏、重复国家码、保留本地前缀、手机号少位或多位,以及用户选择的国家与号码不一致。
- 在页面上显示掩码号码供用户确认。
- 服务端统一转换为E.164格式。
- 不要只依赖前端完成号码校验。
- 检查号码是否长期失败或进入抑制名单。
- 确认号码类型能够接收短信。
三、频率限制和反欺诈规则
验证码系统通常会限制单号码、用户、IP和设备的请求次数。如果用户频繁点击,后续请求可能被拒绝或延迟。
系统应向正常用户显示清晰但不过度暴露安全规则的提示。风控日志需要记录拦截原因,帮助客服区分“短信发送失败”和“请求根本没有进入短信平台”。
四、模板和Sender ID问题
验证码模板应简短、品牌清楚,不包含营销文案或可疑链接。Sender ID需要符合目标国家规则,部分市场要求预注册。
| 现象 | 可能原因 | 处理方向 |
|---|---|---|
| 所有号码都失败 | 模板、账户、密钥或平台配置 | 检查API响应和账户状态 |
| 单一国家失败 | Sender ID、国家规则或路由 | 核对注册和国家配置 |
| 单一运营商失败 | 运营商过滤或通道异常 | 按运营商和错误码排查 |
| 只有个别号码失败 | 号码或设备状态 | 检查号码有效性和终端环境 |
五、路由延迟和状态回执
API返回成功只表示平台接收了请求。企业应查看最终状态回执和实际送达时间。长期处于pending可能是队列积压、回调缺失或运营商状态延迟。
提交到发送判断企业或平台队列等待
发送到送达判断运营商和设备延迟
失败码识别号码、内容或路由问题
验证成功率判断用户是否完成实际操作
六、用户设备侧检查
- 确认设备有移动网络信号且未处于飞行模式。
- 检查短信垃圾箱、拦截功能和黑名单。
- 双卡设备确认目标号码对应SIM卡正常。
- 检查号码是否停机、漫游受限或长期无信号。
- 重启设备或重新连接移动网络后再次尝试。
设备问题通常不能通过连续发送多条验证码解决。连续重发还可能触发更严格的频率限制。
七、推荐排查顺序
- 确认用户输入的手机号和国家正确。
- 查询业务请求、风控和频率限制日志。
- 确认短信API是否返回message ID。
- 查看最终回执、错误码和时间线。
- 比较同国家、运营商和模板的其他号码。
- 检查Sender ID、模板和路由配置。
- 确认用户设备、信号和拦截设置。
- 修复后小规模测试,再恢复正式流量。
八、备用验证和用户体验
重要业务可以提供备用验证方式,但不应在页面加载时同时向多个渠道发送验证码。只有主渠道超时或用户明确选择后再启用备用方式。
- 设置合理倒计时,不允许立即连续重发。
- 提示用户确认掩码手机号。
- 明确最新验证码和旧验证码的失效规则。
- 提供客服或备用验证入口。
- 监控用户实际验证成功率和放弃率。