---
title: "用于验证码的短信 OTP API"
description: "用 bearer token 一次 REST 调用即可发送短信验证码，支持 Unicode 与阿拉伯语、已报备 Sender ID、webhook 送达状态和语音回退。"
canonical: "https://omnichannels.ai/zh/channels/sms/otp-api/"
language: "zh"
updated: "2026-10-10"
publisher: "BroadNet Technologies"
brand: "OmniChannels.ai"
---

# 用于验证码的短信 OTP API

Canonical: https://omnichannels.ai/zh/channels/sms/otp-api/
Language: zh
Publisher: OmniChannels.ai by BroadNet Technologies

从您的后端向 BroadNet REST API 发起一次 HTTPS 请求即可发送一次性验证码。验证码由您的应用生成和校验；我们通过运营商直连线路，使用已报备 Sender ID 送达，并将每个状态回传到您的 webhook。

**简短回答:** 使用 OmniChannels.ai 发送短信验证码时，由您的后端生成验证码，并携带 bearer token、Sender ID、号码和消息内容，调用 https://api.broadnet.me 上的 POST /sms/sendSms。API 返回消息 ID，送达状态通过 webhook 回传。支持 Unicode 与阿拉伯语，WhatsApp 或语音可作为回退渠道。

## 短信验证码 API 为开发者提供什么

- **每条验证码一次 REST 调用:** 使用 JSON 请求体和 bearer token 调用 POST /sms/sendSms。响应即消息 ID，可与该次验证尝试关联保存。
- **webhook 回传送达状态:** 以统一格式接收 SUBMITTED、SENT、DELIVERED、FAILED 和 REJECTED，便于判断何时提供重发或切换渠道。
- **Unicode 与阿拉伯语验证码:** 阿拉伯语或其他文字需将 messageType 设为 UNICODE。POST /sms/identify 可在发送前返回编码和分段数。
- **已报备的 Sender ID:** 在阿联酋、沙特等有要求的市场，使用为事务类流量报备的字母数字 Sender ID 发送。
- **发送前号码查询:** POST /sms/lookup 通过网络核验号码（HLR 和 MNP），帮助您在付费发送验证码前剔除无效号码。
- **WhatsApp 与语音回退:** 短信未送达或验证码未被输入时，回退到 WhatsApp 身份验证模板或语音电话。
- **超高并发使用 SMPP:** 如果您已有 SMPP 客户端，可通过基于 TLS 的 SMPP 3.4 在同一线路上发送验证码，并在会话中接收回执。
- **SDK 与 MCP 服务器:** 可使用 TypeScript SDK @broadnet/cpaas-sdk、OpenAPI 3.1 规范，或面向 AI Agent 的 MCP 服务器。

## 您的代码负责什么，API 负责什么

| 项目 | 详情 |
|---|---|
| 生成验证码 | 您的后端生成随机验证码，连同有效期保存其哈希值，并按号码、设备和 IP 地址限制尝试次数。 |
| 发送短信 | 调用 POST /sms/sendSms，传入 senderId、destinationNumber（国家区号加号码，仅数字）、message 和 messageType。 |
| 追踪送达 | 保存返回的消息 ID，并将 webhook 状态与之匹配。在超时时间内没有收到 DELIVERED，即可触发回退。 |
| 校验验证码 | 您的后端将用户输入与已保存的哈希值比对。平台不会检查或保存您的验证状态。 |
| 回退 | 通过 WhatsApp 身份验证模板或语音电话重发，语音由我们团队协助开通。 |
| 价格 | 按目的地每条短信分段计费，采用 BroadNet 公布的标价，无开通费，无月度最低消费。请查看各国短信价格。 |

## 如何对接短信验证码 API

1. **获取 token:** 申请访问权限；我们会为您的账户签发 bearer token，测试消息仅发送到您自己已验证的号码。
2. **报备 Sender ID:** 选择一个事务类 Sender ID，并在上线前于有要求的国家完成报备。
3. **撰写消息:** 验证码放在最前，写明品牌，注明有效期，并加上请勿透露的提示。内容控制在一个分段内。
4. **发送并追踪:** 调用 POST /sms/sendSms，保存消息 ID，并以幂等方式处理 webhook 状态。
5. **加入回退与限制:** 把 WhatsApp 或语音作为下一步，并在上线前对请求做频率限制，以阻止 SMS pumping（短信流量泵）。

## 短信验证码 API 适合哪些场景

### 适合以下情况

- 您在自己的应用中构建注册、登录或支付验证，并希望完全掌控验证码。
- 您需要向阿联酋、沙特及其他海湾和中东北非市场发送阿拉伯语和英语验证码。
- 您希望现在使用短信，将来再加入 WhatsApp、RCS 或语音回退，且只用一个 API。
- 您偏好 REST 和 webhook，并希望在发送量增长后可使用 SMPP。

### 开始前需要了解的事项

- 没有托管的校验接口：验证码由您的应用生成、保存和校验。
- 正式环境的访问权限由我们团队审核，不提供即时自助注册。
- 部分国家的 Sender ID 报备需要数天，请在上线日期之前启动。
- 验证码接口是 SMS pumping 欺诈的目标；国家白名单、频率限制和机器人校验需由您在应用中负责。

## 短信验证码 API 常见问题

### 如何用 API 发送短信验证码？

先在后端生成验证码，再调用 POST https://api.broadnet.me/sms/sendSms，带上 Authorization: Bearer 请求头，以及包含 senderId、destinationNumber、message 和 messageType 的 JSON 请求体。响应为消息 ID，送达状态会推送到您的 webhook。

### API 会替我生成和校验验证码吗？

不会。验证码由您的应用生成，连同有效期保存哈希值，并校验用户输入。将验证留在自己的系统内，意味着验证逻辑、尝试次数限制和审计记录都由您掌控。

### 可以发送阿拉伯语的短信验证码吗？

可以。将 messageType 设为 UNICODE。阿拉伯语短信每条分段容纳 70 个字符，请保持简短。可先调用 POST /sms/identify 获取编码和分段数。

### 短信验证码的最佳格式是什么？

以验证码开头，写明品牌和有效期，并提醒用户切勿透露验证码，全部控制在一个分段内。使用事务类 Sender ID，且不夹带优惠，避免被网络当作营销短信过滤。

### 短信验证码没有送达怎么办？

根据消息 ID 监控 webhook 状态。如果没有看到 DELIVERED，或用户在超时时间内未输入验证码，可提供重发，或切换为 WhatsApp 或语音电话。不要对同一号码无限重试。

### 如何保护验证码接口免受 SMS pumping 攻击？

只允许您服务的国家，按号码、设备和 IP 地址设置频率限制，在公开表单上加入机器人校验，并对异常号段的请求激增发出告警。发送前的号码查询也有助于剔除无效号码。

### 一条短信验证码多少钱？

短信验证码按目的地费率每个分段计费。BroadNet 各国的参考标价见短信价格页面，例如发往阿联酋每个分段 0.0123 美元起。无开通费和月度最低消费，具体费率以您的报价为准。

### 有沙箱环境吗？

测试权限通过同一 API 向您自己已验证的号码发送，让您在上线前测试真实的送达和状态。没有单独的公开沙箱，也不提供即时自助注册。

更新于: 2026-10-10