我们经常碰到这样的情况:老板周五下午交代任务,下周一注册页要能发验证码。技术同事周末把代码写好了,周一一测,接口返回“签名未审核”,模板也还在排队,上线只能往后推。

这种事很常见。短信接口对接本身不难,熟练的后端半天就能把代码写完,真正花时间的是代码之外的环节:企业实名、签名报备、模板审核、服务器白名单。这篇写给第一次对接短信接口的开发和项目负责人,按实际顺序走一遍。

先给一条完整路线:开户实名 → 拿到密钥 → 报备签名和模板 → 看文档拼参数 → 联调发第一条 → 上线前检查。前三步可以和写代码同时推进,别等代码写完才去提交审核。

第一步:开户实名,拿到接口密钥

注册短信平台账号后,需要提交营业执照和经办人信息做企业实名。审核通过,后台会生成接口凭证。不同平台叫法不一样,有的叫 AccessKey 和 Secret,有的是 apikey,也有的是账号加一个单独的接口密码,作用都是证明“这个请求是你发的”。

拿到密钥后,最容易犯的错是图省事写死在前端代码里,或者跟着代码一起传到公开仓库。密钥一旦泄露,别人就能用你的账号发短信,扣的是你的余额,挨投诉的也是你的签名。密钥只放在服务端配置或环境变量里,测试和正式环境分开两套,有人离职就换一次。

第二步:签名和模板要提前报备

签名就是短信开头【】里的名字,要和企业主体对应得上;模板是固定文字加变量,比如“您的验证码为{code},5分钟内有效”。验证码、通知、营销这几类要分开报备,内容写法也有各自的要求。

审核需要时间,遇上材料不全还得来回补。所以我们一般建议项目一立项,运营就把签名和模板提交上去,开发那边同时写代码,两条线最后汇合。

第三步:看懂短信接口文档里的关键参数

每家的文档格式不同,但核心参数差不多。下面这张表是我们帮客户联调时最常对的几项:

参数 作用 容易出错的地方
账号 / 密钥 身份认证 测试密钥拿去调正式地址
手机号 接收号码 带了空格、+86,多号码分隔符写错
签名、模板编号 指定发哪条内容 用了还没审核通过的模板
变量参数 填进模板的值 变量名大小写对不上,值超长
时间戳、签名串 防篡改、防重放 服务器时间不准,校验失败
自定义流水号 你系统里的消息编号 没传,后面回执对不上

另外留意三件小事:请求编码统一用 UTF-8,不然中文变量会乱码;看清楚接口要求 POST 还是 GET、参数放表单还是 JSON;把返回码说明表存一份,后面排错全靠它。

第四步:联调,发出第一条短信

先别急着把短信接口接进业务代码。用接口调试工具或一段最简单的脚本,单独给自己手机发一条,通了再往业务里接,出问题时范围小得多。

有个概念要分清:短信接口返回“成功”,只代表平台收下了这条请求,不代表用户手机已经收到。是否送达,要看后续的状态报告。很多开发第一次对接短信接口时,以为返回成功就没事了,结果用户投诉收不到,翻日志一片“成功”,根本无从查起。

联调时最常见的几种报错

  • 鉴权失败:密钥填错,或签名串的拼接顺序、大小写跟文档不一致,也可能是服务器时间偏差太大。
  • 模板不匹配:实际内容和报备的模板有出入,多一个空格、少一个标点都可能被判不一致。
  • IP 不在白名单:平台开了 IP 白名单,而服务器出口地址没加进去,换了云服务器的项目尤其容易漏。
  • 账号状态问题:余额不足、短信接口权限没开通,或者签名还在审核中。

上线前的短信接口检查清单

联调通过不等于可以上线。正式放量前,建议对着这份清单过一遍:

  1. 密钥只在服务端,前端、App 安装包里搜不到;
  2. 发送失败有重试,但设了次数上限,避免重复扣费、重复打扰用户;
  3. 验证码类的发送入口加了频率限制;
  4. 每次请求和返回都有日志,带上自定义流水号,方便对账;
  5. 配好了状态报告的推送地址,或者有定时查询的任务;
  6. 后台开了余额预警,别等发不出去才发现欠费。

结论

短信接口怎么对接,按顺序就是:企业实名拿密钥,提前报备签名和模板,看懂文档参数,单独联调发出第一条,再对照清单检查后上线。代码通常不是瓶颈,审核和配置才是,所以要几条线同时推进。蔚岚科技的短信群发平台支持接口对接,联调时碰到报错拿不准,可以打 18720919319,我们一起看日志排查。

常见问题

短信接口对接一般要多久?

写代码通常半天到一两天。整体进度主要看实名、签名和模板的审核,材料齐全的话会快很多。

不会写代码能用短信接口API吗?

可以不用接口。平台后台一般支持手动输入或导入号码发送,接口适合需要系统自动触发的场景,比如注册验证码、订单通知。

接口返回成功,用户为什么没收到?

返回成功只代表平台受理了。去查这条短信的状态报告,常见原因有空号、停机、手机安全软件拦截、号码格式填错等。

测试环境和正式环境需要两套密钥吗?

建议分开。测试时误发、调试脚本泄露都不会影响正式账号,排查问题时日志也更清楚。

一个短信接口账号能给多个系统共用吗?

能用,但最好每个系统开独立子账号,或者用不同的流水号前缀区分,这样对账和排查时一眼能看出是哪个系统发的。