---
title: "SMS 与 WhatsApp 短信验证码（OTP）模板生成器"
description: "免费短信验证码模板生成器：6 种语言验证码短信模板，支持 Android SMS Retriever 与 iOS 自动填充格式，并含 WhatsApp OTP 模板。"
canonical: "https://omnichannels.ai/zh/tools/otp-message-generator/"
language: "zh"
updated: "2026-10-10"
publisher: "BroadNet Technologies"
brand: "OmniChannels.ai"
---

# SMS 与 WhatsApp 短信验证码（OTP）模板生成器

Canonical: https://omnichannels.ai/zh/tools/otp-message-generator/
Language: zh
Publisher: OmniChannels.ai by BroadNet Technologies

好的验证码短信把验证码放在最前面，写明品牌和有效期，并提醒用户切勿告知他人，例如：「482913 是您的 Acme 验证码，5 分钟内有效，请勿泄露。」控制在一个分段内（GSM-7 为 160 个字符，Unicode 为 70 个字符），不要放链接。Android 自动填充需加入 11 位应用哈希；iOS 与网页则以「@yourdomain.com #482913」结尾。

## 如何生成验证码消息
1. **输入品牌和验证码规则:** 填写应用或品牌名称，选择 4 至 8 位的验证码长度、纯数字还是字母加数字，以及验证码的有效分钟数。
2. **选择语言和渠道:** 选择英语、阿拉伯语、法语、西班牙语、德语或葡萄牙语，再选择短信、WhatsApp 或两者兼用。阿拉伯语消息按 Unicode 计数（每条短信 70 个字符）。
3. **添加自动填充信息:** 可选填 Android 应用的 11 位哈希和你的网站域名。工具会生成 SMS Retriever、绑定域名以及组合格式，并检查 140 字节的上限。
4. **复制消息或代码:** 复制某个短信版本、WhatsApp 模板 JSON，或我们短信 API 的 cURL、Node.js 请求。上线前请逐项完成安全检查清单。

## 好的验证码短信模板应包含什么

验证消息只有一个任务：把正确的验证码快速送到正确的人手中，并且不易被滥用。多数用户直接从锁屏通知读取验证码，而通知只显示开头一行左右。请把验证码放在开头或靠前的位置，并写清品牌，让用户知道是哪个服务发来的。
长度关系到成本和可靠性。一条 GSM-7 短信可容纳 160 个字符，拆分后每段 153 个字符。只要出现一个 GSM-7 字符集之外的字符，例如阿拉伯字母、表情符号、弯引号或「ó」「ç」这类带重音的字母，整条消息就会切换为 UCS-2 编码，上限降至 70 个字符，拆分后每段 67 个。两段的验证码费用翻倍，其中一段延迟到达的概率也略高。生成器会显示每个版本的编码和分段数，并可将带重音的字母替换为普通字母，使西班牙语、葡萄牙语和法语消息保持在 GSM-7 内。
- 验证码靠前：「482913 是您的 Acme 验证码」会出现在通知预览中。
- 品牌名称：让用户知道是哪个服务发来的验证码，也更难被钓鱼冒用。
- 有效期：「5 分钟内有效」可建立预期并限制滥用。
- 安全提示：「请勿向任何人透露此验证码，包括我们的工作人员。」
- 不放链接：运营商经常过滤含 URL 的验证码，而且链接会让用户习惯点击钓鱼链接。

## Android 自动填充：SMS Retriever 格式

Google 的 SMS Retriever API 让 Android 应用无需短信权限、也无需用户手动输入，就能读取验证短信。根据 Google 文档，消息不得超过 140 字节，必须包含一次性验证码，并带有标识你的应用的 11 位哈希字符串。140 字节相当于 160 个 GSM-7 字符或 70 个 UCS-2 字符，因此实际上消息必须控制在一条短信之内。
该哈希是应用包名与签名证书经 SHA-256 计算并做 base64 编码后的前 11 个字符。Google 自己的示例把它单独放在末尾一行：「Your ExampleApp code is: 123ABC78」，空一行，然后是「FA+9qCX9VSu」。请用正式环境的 keystore 计算哈希，并在服务器端写死。Google 提醒不要使用在客户端动态计算的哈希字符串。旧版文档曾要求消息以「<#>」开头，当前页面已不再列出该前缀。保留它没有坏处，但会占用 4 个字符。如果无法控制消息格式，可改用 SMS User Consent API：用户点击一次，即允许你的应用读取那一条短信。

## iPhone 与网页自动填充：绑定域名的验证码

当输入框被标记为一次性验证码字段时，iOS 和 macOS 会识别收到的短信中的验证码，并在键盘上方给出建议：原生应用使用 textContentType = .oneTimeCode，HTML 输入框使用 autocomplete="one-time-code"，详见 Apple 开发者文档。自 iOS 14 和 macOS Big Sur 起，Safari 还支持绑定来源的一次性验证码，其格式由 WICG 的「Origin-bound one-time codes delivered via SMS」规范定义。
按该格式，消息的最后一行是「@example.com #747723」：前面加 @ 的域名，恰好一个空格，然后是前面加 # 的验证码。可选的第三个值「@embedded.example」用于指明嵌入的站点。最后一行之前可以有供人阅读的文字，但各值之间若夹杂其他文字，该行即无效。这样自动填充只会在该域名或与之关联的应用中提供验证码，钓鱼难度大大提高。生成器会生成同时带有 Android 哈希和绑定域名末行的组合消息，对拉丁字母语言仍可控制在 140 字节内。阿拉伯语请分别发送 Android 和 iOS 格式。

## WhatsApp 身份验证模板：哪些可改，哪些不可改

WhatsApp 要求使用身份验证模板发送一次性密码，且正文由 Meta 固定。英文为「<code> is your verification code.」。你可以添加 Meta 的安全提示行（「For your security, do not share this code.」）和有效期页脚（「This code expires in <N> minutes.」），其中 code_expiration_minutes 取值 1 至 90。各语言版本使用 Meta 自己的固定译文，不支持 URL、媒体和表情符号。
按钮由你选择。复制验证码按钮在所有环境都可用。一键自动填充会携带验证码打开你的 Android 应用，需要提供包名、签名哈希并完成握手。零点击（仅 Android）没有按钮：WhatsApp 直接把验证码广播给你的应用。在 iOS 26 及更高版本，键盘建议无需任何集成即可从通知中提供验证码。验证码最长 15 个字符，并在发送请求中出现两次：一次作为正文参数，一次作为按钮参数（sub_type 为「url」）。复制验证码按钮的文字不超过 25 个字符。请设置 message_send_ttl_seconds，避免过期验证码被延迟送达。此外，通过 Cloud API 发送的认证消息，Meta 只投递到用户的主设备，关联设备会看到被遮挡的提示。

## 安全检查清单与降级策略

消息本身是最容易的部分，多数验证码欺诈和成本超支都出在周边规则薄弱。以下是被广泛采用的建议，并非法律要求，请根据自身风险调整数值。
发送建议采用逐级降级：用户有 WhatsApp 时先发 WhatsApp，短暂超时后（例如 30 至 60 秒仍无送达回执）降级为短信，并对座机和信号较差的用户提供朗读验证码的语音电话作为最后手段。在 GCC，验证码属于交易类流量，因此阿联酋「AD-」发件人前缀这类营销规则并不适用。不过多数市场仍要求你的 Sender ID 已报备，上线前请核对当地规则。
- 常用默认值为 6 位；请使用密码学安全的随机数生成器生成验证码。
- 有效期要短（5 至 10 分钟），仅限使用一次，且只保存验证码的哈希。
- 按手机号和 IP 限制发送频率，设置重新发送冷却时间，错误约 5 次后锁定。
- 只允许你实际服务的目的国家，以防范短信泵（SMS pumping，人为制造的虚假流量）。
- 切勿把验证码放进链接或 URL，也不要让用户把验证码念给客服。

## 验证码消息常见问题

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

验证码在前，其后是品牌、有效期和勿泄露提醒，控制在一个分段内且不含链接：「482913 是您的 Acme 验证码，5 分钟内有效，请勿告知他人。」Android 自动填充加一行应用哈希，iOS 和网页自动填充则把「@yourdomain.com #482913」作为最后一行。

### 验证码短信最长可以多长？

目标是一个分段：GSM-7 为 160 个字符，Unicode（如阿拉伯语）为 70 个字符。Google SMS Retriever 把消息限制在 140 字节，与单条短信上限一致。更长的消息会被拆成 153 或 67 个字符的分段，并按段计费。

### Android 验证码自动填充还需要 <#> 前缀吗？

不需要。Google 当前的 SMS Retriever 文档只要求三点：不超过 140 字节、包含一次性验证码、带 11 位应用哈希。「<#>」前缀来自旧版指引，保留无妨，但会占用 4 个字符。

### 如何让验证码在 iPhone 上自动填充？

把输入框标记为一次性验证码字段（应用中用 textContentType .oneTimeCode，网页用 autocomplete="one-time-code"），iOS 就会从信息中推荐验证码。若要把验证码绑定到你的网站，请让短信以「@yourdomain.com #123456」结尾，两个值之间恰好一个空格。

### 可以自定义 WhatsApp 身份验证模板的文字吗？

不可以。正文（「<code> is your verification code.」）由 Meta 固定并按语言翻译。你只能添加可选的安全提示行、1 至 90 分钟的有效期页脚，并选择复制验证码、一键或零点击按钮。不允许使用 URL、媒体和表情符号。

### 验证码应该走 WhatsApp 还是短信？

两者结合。WhatsApp 提供复制验证码和一键自动填充按钮，并显示你已验证的企业名称；短信则无论有无数据流量都能到达所有手机。常见做法是先发 WhatsApp，30 至 60 秒未送达则降级为短信，最后再提供语音电话。

### 为什么我的阿拉伯语验证码被拆成两条消息？

阿拉伯语文本使用 UCS-2 编码，单条短信只允许 70 个字符，拆分后每段 67 个。请让阿拉伯语文案保持简短，验证码使用西式数字，并在发送前用生成器检查字数。

### 在验证码短信中放登录链接安全吗？

最好避免。验证消息里的链接会让钓鱼更容易，运营商也更常过滤，并且会让用户养成点击短信链接的习惯。只发送验证码，让用户手动输入或在你的应用里自动填充。
