第一次下单 +372 之前,清单上应该有什么?
大多数失败的测试,根源都在于请求号码之前就缺了某样东西。先逐项核对:
- API 密钥:在开发者控制台创建。每个密钥带有
or_live_前缀,并作为 Bearer 令牌传递;每个账户最多 10 个,CI 运行器值得拥有专属密钥。 - webhook 端点:如果你更希望被回调而不是轮询,就要准备好端点,并把密钥保存在服务器端。每个账户允许 5 个端点。
- 正确的 ID:在所有请求中爱沙尼亚都是
ee,服务 ID 来自GET /api/v1/services。 - 实时价格检查:调用
GET /api/v1/prices?country=ee&service=<id>,让任务在动用钱包资金之前就知道成本。 - 沙盒(如果你还在接线调试):应请求,开发账户可以切换为沙盒模式,它会端到端返回模拟的号码和验证码,不会动用你的余额。
- 请求频率预算:API 允许每个账户每分钟 300 个请求,除非测试套件轮询过于随意,否则绰绰有余。
OTP API 集成指南对每一项都有更深入的介绍。
如何完整地跑一遍爱沙尼亚 OTP API 请求?
清单核对完毕后,调用顺序很短:
- 发送
POST /api/v1/activations,请求体为{"service": "<id>", "country": "ee"}。响应中包含激活 ID 和 +372 号码,把号码填入被测的注册或登录表单。 - 在被测应用中触发验证短信。
- 等待验证码。你的端点会收到
activation.sms_received,或者你以合理的间隔调用GET /api/v1/activations/{id}。 - 在应用中提交验证码,并以激活 ID 为键记录结果。
- 如果测试路径改变、不再需要这个号码,调用
POST /api/v1/activations/{id}/cancel,占用会立即释放。
对于 webhook 投递,读取 X-OTPRoute-Signature 请求头(t=<unix>,v1=<hex>),用端点密钥对 <t>.<raw body> 计算 HMAC-SHA256,以恒定时间比较,并丢弃时间戳过旧的请求。用 HMAC 保护 OTP webhook演示了一个参考处理程序。写入操作要以激活 ID 保证幂等,因为重试可能把同一个事件投递两次。
哪些服务可以向爱沙尼亚验证号码发送验证码?
爱沙尼亚的实时快照列出了超过 1,700 个服务。热门线路包括 WhatsApp、Telegram、Google (Gmail & YouTube)、Facebook、Instagram、LinkedIn、Microsoft & Outlook、Amazon、Discord、Signal、Uber、Airbnb 和 ChatGPT (OpenAI)。
库存会在一天中变化,今天早上能收到的线路,到晚上可能就紧张了。请以 GET /api/v1/countries 和价格接口为准,不要把清单硬编码进测试夹具。
+372 号码应该如何存储和校验?
爱沙尼亚是处理起来较简单的编号方案之一,这恰恰是偷懒的校验器会出问题的原因。这里没有需要去掉的中继前缀:本地写法的号码,就是你附在 +372 之后的那些数字。手机号通常以 5 开头,长度为七位或八位,所以坚持固定本地长度的正则表达式会拒绝有效输入。
表单和数据库的实用规则:
- 存储完整的 E.164 字符串,例如
+3725xxxxxxx,如果客服需要,另外保存用户的原始输入。 - 不要补零;既没有需要去掉的,也没有需要加上的。
- 在输入掩码中同时测试七位和八位的手机号长度。
面向爱沙尼亚用户的验证短信通常是爱沙尼亚语,不过许多应用会遵循账户或设备语言,俄语或英语模板也很常见。如果你的产品提供爱沙尼亚语本地化版本,请检查 õ、ä、ö、ü 等字母从模板到手机的传输过程中是否完好。
为什么团队要用爱沙尼亚号码测试注册流程?
对软件团队来说,爱沙尼亚的分量远超它的体量。它的数字政府声誉和电子居民计划,使许多创始人和远程办公公司即使员工身在别处,也与该国有联系;面向波罗的海和北欧地区的产品也常常先在那里上线。
QA 负责人要求提供 +372 测试号码的典型原因:
- 确认国家选择器、手机号输入掩码和短信模板在编号方案较短的欧盟市场上表现正常。
- 在区域发布前检查爱沙尼亚语文案的本地化。
- 复现爱沙尼亚客户提交的、验证码始终没有到达的客服工单。
团队如何把这些检查纳入发布周期,见 QA 测试。
验证码一直没出现,应该检查什么?
请按顺序排查问题,而不是一个接一个地订购号码:
- 让窗口走完。 激活会保持 20 分钟,有些服务会把短信排队发送。
- 确认该服务接受虚拟号码。 有些服务按政策拒绝它们,这正是设置退款的原因。
- 查看最终状态。 出现
activation.expired事件,或 GET 调用返回已过期状态,意味着没有短信到达,钱已经退回钱包。 - 耐心重试。 稍后再试,或为同一服务换一条线路,不要在紧凑的循环里重复下单。
- 检查你自己的触发动作。 从未真正请求发送短信的测试,看起来和验证码丢失一模一样。
我们关于减少 OTP 投递失败的文章列出了更多值得排除的原因。
可以长期保留爱沙尼亚号码吗?账单怎么计算?
目前没有自助的爱沙尼亚长期号码。专用号码是仅限美国和加拿大的产品,每月 $1.95 起;如果你的团队需要爱沙尼亚的固定线路,请发邮件至 [email protected],团队会告诉你当地规定允许什么,但不承诺一定能提供。
OTP 路由的计费通过一个预付美元钱包完成,没有月费,也无需选择套餐。可用银行卡或 USDT、USDC 充值,每次充值都会通过邮件收到 PDF 发票。当前费率见定价页面,接口参考在文档中。
常见问题
没有本地 SIM 卡,也能测试我的应用的爱沙尼亚注册流程吗?
可以。通过 OTP Gateway 订购一个 +372 号码,用在你的注册表单中,然后从控制台、webhook 或激活接口读取验证码。
爱沙尼亚在 OTP Route API 中的国家 ID 是什么?
在激活和价格请求中,把 ee 作为 country 的值。
爱沙尼亚手机号有需要去掉的中继前缀吗?
没有。爱沙尼亚没有中继前缀,本地号码的数字原样接在 +372 之后。
如果没收到爱沙尼亚验证码,会被扣费吗?
不会。如果在 20 分钟窗口内没有任何短信到达,或你提前取消,全部金额会自动退回你的钱包。
非开发人员可以订购爱沙尼亚验证号码吗?
可以。在控制台选择爱沙尼亚和服务,确认显示的价格,把号码复制到应用中,然后等待验证码出现在同一个界面上。
在花真金白银之前,能先演练爱沙尼亚集成吗?
可以请支持团队把你的开发账户切换为沙盒,它会返回模拟的号码和验证码,让整个流程在不动用钱包资金的情况下运行。
使用这些号码有哪些规则?
请遵守各服务的条款以及 OTP Route 的《可接受使用政策》;这些号码用于测试和运营你自己的合法产品与账户。
服务名称均为其各自所有者的商标,OTP Route 与其无任何关联。请合法使用号码,并遵守各服务的条款及我们的可接受使用政策。