一个埃及 OTP API 集成实际需要哪些请求?
七个接口就能覆盖全部流程,都在 https://otproute.com/api/v1 之下,并且都使用以 or_live_ 开头的 Bearer 密钥认证。请在开发者控制台为每个环境各生成一个密钥;一个账户最多可持有 10 个。
- 用
GET /api/v1/services和GET /api/v1/countries加载目录。埃及的国家 id 是eg,它很少变化,所以缓存是可以的。 - 每次下单之前,用
GET /api/v1/prices?country=eg&service=<id>查询当前价格和可用性。库存在一天中不断变化,请把这个响应当作最新数据,而不是配置。 - 用
POST /api/v1/activations创建激活,请求体类似{"service": "whatsapp", "country": "eg"}。你会得到激活 id 和要填入被测页面的 +20 号码。 - 通过 Webhook,或调用
GET /api/v1/activations/{id}获取验证码。 - 如果测试中止,用
POST /api/v1/activations/{id}/cancel释放订单,资金会立即退回。
在每个测试集开头快速调用一次 GET /api/v1/balance,可以让 CI 任务提前停止,而不是中途失败。限制为每个账户每分钟 300 次请求,足以并行轮询多个激活。完整的请求示例见开发者文档。
如何用签名 Webhook 而不是轮询来获取 +20 验证码?
轮询适合单次本地测试;一旦流水线同时运行许多埃及激活,Webhook 就更合适。在开发者控制台添加一个端点(每个账户五个),订阅 activation.sms_received,再加上 activation.expired 和 activation.cancelled,这样你的任务就知道何时停止等待。
每个请求都带有 X-OTPRoute-Signature: t=<unix>,v1=<hex>。请重建字符串 <t>.<raw body>,用端点密钥计算 HMAC-SHA256,并以恒定时间方式与 v1 比较。拒绝时间戳过旧的请求,并且对收到的原始字节计算哈希,而不是对解析后再重新编码的对象。
把激活 id 当作幂等键:事件只存储一次,忽略重复,并尽快返回 2xx。基于 Webhook 的 OTP 捕获指南介绍了这一处理程序的队列版本。
哪些服务可以向埃及验证号码发送验证码?
埃及的实时快照共列出 1,600 多项服务。团队在 +20 号码上测试的热门服务包括 WhatsApp、Facebook、Instagram、TikTok、Telegram、Google (Gmail & YouTube)、Microsoft & Outlook、Uber、Snapchat、Viber、imo、ChatGPT (OpenAI)、Amazon 和 LinkedIn。
这份名单只是某一时刻的快照,不是承诺。今天早上有号码的服务,下午可能就很紧张,这正是价格接口在报告费用的同时也报告可用性的原因。有些服务还会完全拒绝虚拟号码;遇到这种情况,下文所述的退款规则会保护你。
应用应如何存储和校验埃及手机号?
埃及的国家代码是 +20,国内中继前缀为 0。在国内,手机号写成以 01 开头的十一位数字;而在国际格式中零会消失,+20 之后是十位数字。以下几个习惯可以避免大多数 bug:
- 只存 E.164,例如
+201XXXXXXXXX,在渲染时再格式化用于显示。 - 去掉中继零:当用户在国家已设为埃及的情况下输入
01…时去掉它,否则会得到无效的+2001…值。 - 规范化数字:使用阿拉伯语键盘的用户可能输入阿拉伯-印度数字,请在校验以及比较用户输入的 OTP 之前,把它们转换为 ASCII 数字。
阿拉伯语是官方语言,所以许多服务会用阿拉伯语向埃及用户发送验证码,也有些默认使用英语。如果你的解析器用正则提取验证码,请同时针对从右到左的消息正文和英文正文进行测试。
运营团队可以不写代码订购埃及号码吗?
可以。并非每次检查都需要脚本,客服或增长团队的同事可以在浏览器里使用同一个 OTP Gateway:
- 用邮箱和 6 位验证码,或用 Google 注册。
- 为钱包充值,然后打开 OTP Gateway。
- 选择埃及和服务;确认之前会显示价格。
- 把 +20 号码复制到应用里,等待验证码出现在屏幕上。
这个激活与 API 下单完全相同,因此手动检查和自动检查的行为是一致的。
+20 验证码一直没出现怎么办?
每个激活会保持 20 分钟。如果这段时间内没有短信到达,或你先行取消,全部金额会自动退回你的钱包,所以一个没有响应的号码不会让你花一分钱。
当验证码持续失败时:
- 让窗口走完再判断是否失败;到达时间取决于服务和线路。
- 确认该服务是否接受虚拟号码。有些服务拒绝,任何路由选择都改变不了这一点。
- 稍后再试,或者在你的测试并不依赖埃及号码时,换一条邻近线路。
- 避免短时间内反复下单。让两次下单的间隔逐渐拉大,并在日志中保留每个激活 id。
我们关于降低 OTP 送达失败率的笔记更深入地讨论了重试策略。
产品团队为什么要针对埃及号码做测试?
埃及是最大的阿拉伯语市场之一,因此是把产品本地化为阿拉伯语的团队自然的第一站。真实的 +20 号码会检验模拟器跳过的环节:国家选择器、中继零的处理、阿拉伯语短信模板,以及验证码输入页面的从右到左布局。
区域运营团队也用 OTP 路由来确认,发布之后埃及客户的注册流程仍然可用;服务海外埃及人的公司,同样会检查境外是否接受 +20 号码。
有埃及的长期线路吗?计费如何运作?
埃及没有自助开通的长期号码。专属线路仅限美国和加拿大,每月 $1.95 起;如果你需要一条长期使用的埃及线路,请发邮件至 [email protected],团队可以告诉你在当地规定下是否可行,但不保证一定可行。
计费使用一个预付费美元钱包,没有月费,也无需选择套餐。可通过银行卡或 USDT/USDC 充值,每笔充值之后都会通过邮件发送 PDF 发票。在构建集成期间,你可以为开发账号申请沙盒模式,它会返回模拟的号码和验证码,而不动用钱包资金。当前价格见价格页面。
常见问题
没有埃及 SIM 卡,也能检查我的应用的埃及注册 OTP 吗?
可以。在 OTP Gateway 订购一个 +20 号码,填入你的注册表单,然后在控制台或通过 API 读取验证码,全程不需要本地 SIM 卡。
OTP Route API 对埃及使用哪个国家 id?
埃及是 eg。把它传给价格接口,以及 POST /api/v1/activations 的请求体。
如果短信一直没到,+20 号码需要付费吗?
不需要。如果 20 分钟内没有收到验证码,或你取消激活,全部金额会自动退回你的钱包。
保存埃及手机号时要保留前导零吗?
不要。0 是国内中继前缀;请去掉它,并以 +20 开头的 E.164 格式存储号码。
下个月我还能用同一个埃及测试号码登录吗?
不能保证。每个 OTP Gateway 号码只用于一个验证码,而自助开通的专属线路只在美国和加拿大提供,所以需要重复登录的账号请据此规划。
我可以用埃及号码在某个平台上开大量账号吗?
不可以。OTP Route 用于测试和运营你自己的合法账号和产品;请遵守各服务的条款以及《可接受使用政策》。
服务名称均为其各自所有者的商标,OTP Route 与其无任何关联。请合法使用号码,并遵守各服务的条款及我们的可接受使用政策。