开始之前:+66 测试清单
泰国的注册流程有几个陷阱,在纸面上排查比在失败的 CI 运行中发现要便宜得多。请先逐项确认:
- 凭据。 在开发者控制台获取前缀为
or_live_的 Bearer 密钥,并限定在将使用它的环境。 - 标识符。 泰国的国家 ID 为
th;服务 ID 请从GET /api/v1/services获取,不要靠猜。 - 投递方式。 要么是已保存签名密钥的 Webhook 端点,要么是遵守每分钟 300 次请求限制的轮询任务。
- 号码处理。 在存储任何内容之前,先决定你的代码如何去掉国内的 0(见格式化一节)。
- 消息解析。 确保解析器能处理数字周围的泰文字符。
- 预算。 已充值的钱包,或者如果你只需要证明集成可行,则使用沙盒账户。
OTP Gateway 可以覆盖哪些泰国注册流程?
泰国是覆盖较广的线路之一,实时快照中有超过 1,800 项服务。本地使用以通讯和电商为主,所以团队通常从 LINE、Shopee、Lazada、TikTok、WhatsApp、Facebook、Instagram 和 Telegram 开始。清单上的其他服务包括 Google (Gmail & YouTube)、Microsoft & Outlook、ChatGPT (OpenAI)、Discord、Viber、Netflix、Amazon 和 Airbnb。
每项服务的可用性会随号码的进出而变化,所以请在每次运行前读取价格接口,而不是写死假设。
通过 API 订购泰国验证号码
基础 URL 为 https://otproute.com/api/v1。
- 请求
GET /api/v1/prices?country=th&service=<id>;如果返回为空或不可用,说明你应该换个时间或线路。 - 发送
POST /api/v1/activations,请求体类似{"service": "line", "country": "th"}。把返回的激活 ID 与你的测试运行一同保存。 - 把 +66 号码输入被测应用并触发短信。
- 从
activation.sms_received事件获取验证码;如果采用轮询,则从GET /api/v1/activations/{id}获取。 - 用
POST /api/v1/activations/{id}/cancel释放不需要的订单。
请对每次推送验证 X-OTPRoute-Signature 请求头(t=<unix>,v1=<hex>),并丢弃时间戳过旧的事件。事件以激活 ID 为键,这使得忽略重复推送变得容易。完整的请求示例见 开发者文档。
泰国号码格式、长途冠码零与泰文短信
在国内,泰国手机号以前导 0 书写,后跟九位数字,通常以 06、08 或 09 开头。这个 0 是长途冠码:在国际格式中它会消失,所以 08x xxx xxxx 变成 +66 8x xxx xxxx。请存储 E.164 版本,并对仍带有零的用户输入做规范化,否则你的去重逻辑会把一部手机当成两个人。
面向泰国的应用发来的验证码,常常夹在一句泰语中。请用模式提取验证码(长度符合预期的一串数字),而不是以英文单词为锚点,并请记住,泰文短信采用 Unicode 编码,因此消息会被拆分成更短的分段。本地化 QA 是团队在这里测试的另一个原因:泰文界面中的日期字段通常显示佛历年份,而泰文姓名和地址字段的长度限制也很容易出错。东南亚的产品上线、电商卖家入驻以及说泰语的客服中心,补全了常见的使用场景。
客服和运营人员如何改用控制台?
并非每项检查都需要脚本。运营团队的成员可以注册、充值、打开 OTP Gateway、选择一项服务和泰国、查看报价,然后获取号码。验证码会显示在浏览器中的激活卡片上。同样适用 20 分钟窗口,如果窗口结束仍为空,退款会自动发生。
验证码始终到不了 +66 号码时如何排查
当激活一直为空时,请按下面的清单逐项排查:
- 取消之前给它完整的窗口;延迟重发很常见。
- 确认该服务在泰国接受虚拟号码。有些不接受,而自动退款就是为这种情况准备的。
- 稍后再试,或者如果你的测试用例允许,切换到另一条国家线路。国家路由文章解释了团队如何选择备用线路。
- 拉开重试的间隔。在紧凑循环中反复下单很少有帮助,还会让日志杂乱。
失败的尝试不会损失任何钱:过期或已取消的激活会把全部金额放回钱包。
泰国项目的长期号码、钱包与沙盒
OTP Route 在泰国不出售自助开通的长期号码。需要持续使用泰国号码的团队可以发邮件至 [email protected] 咨询;是否可行取决于当地规定。你持续使用并续费的专属号码仅在美国和加拿大提供,每月 $1.95 起。
其余一切都在没有订阅的预付美元钱包上运行。可用银行卡或 USDT/USDC 充值,每次充值都会通过电子邮件发送 PDF 发票。做集成工作时,可以把开发账户切换到沙盒,让模拟的号码和验证码零成本地流经你的代码。当前费率见价格,请遵守各服务的条款,并请记住 OTP Route 的《可接受使用政策》适用于每一次激活。
常见问题
没有泰国 SIM 卡,我能验证应用的泰国注册吗?
可以。在 OTP Gateway 订购一个 +66 号码,输入到你的应用中,然后在控制台或通过 API 和 Webhook 读取验证码。
存储泰国手机号时应该保留开头的 0 吗?
不应该。去掉长途冠码 0,并将号码存储为 +66 后跟其余九位数字。
API 对泰国要求使用什么 ID?
把 th 用作国家值,例如在 GET /api/v1/prices?country=th&service=<id> 中。
为什么 LINE 或 Shopee 的消息是泰语?
许多服务会按号码所属国家或账户语言本地化其短信模板,所以请解析数字,而不是英文关键词。
泰国激活失败要花多少钱?
一分钱也不用。如果 20 分钟窗口结束仍没有短信,或者你取消了,全部金额会自动退回你的钱包。
有没有办法在 CI 中零花费地运行泰国 OTP 测试?
有,为开发账户请求沙盒模式。它会返回模拟的号码和验证码,让流水线可以端到端测试,详见 CI/CD 方案页面。
服务名称均为其各自所有者的商标,OTP Route 与其无任何关联。请合法使用号码,并遵守各服务的条款及我们的可接受使用政策。