短信认证服务

更新时间:
复制 MD 格式

短信认证服务是一种通过短消息的方式,校验用户手机号的云原生服务。通过集成短信认证能力,开发者无需关心短信验证码的生成、生命周期管理、安全校验、接口高并发、高可用等技术实现,就可以通过短信验证码的方式,完成对用户手机号的校验,提升开发者效率、降低企业研发成本。

测试短信认证服务

如果希望体验短信认证服务或应用处于测试阶段,可以通过快速测试功能发送测试短信。

说明
  • 仅支持给已授权(已绑定)的手机号码发送测试短信。

  • 测试短信正常收费,且可使用套餐包进行抵扣。收费详情及套餐包定价请参见短信认证阶梯价格短信认证套餐包

  1. 登录号码认证服务控制台短信认证概览页面。

  2. 快速测试区域内,浏览平台提供的签名/模板信息,也可根据配置短信认证参数选择其他签名和模板,推荐选择平台赠送的签名/模板。

    签名/模板信息包括签名名称(如"恒创联众")、签名使用场景(如"发送测试短信")、模版名称(如"登录/注册模板")、模版Code(如 100001)及模版内容等字段。

  3. 单击绑定测试手机号码,在弹出框内完成绑定。

    在弹出框中输入手机号码,单击发送验证码,收到验证码后填入验证码输入框,单击确定

  4. 单击调用API测试短信认证服务,进入OpenAPI调用页,签名、模板和短信接收方号码将自动填充至请求参数内。

    • SendSmsVerifyCode:调用此接口发送短信验证码,可根据参数描述自定义验证码生成规则。

    • CheckSmsVerifyCode:调用此接口进行短信验证码核验,可根据返回参数VerifyResult判断核验结果。

验证码校验机制及返回值配置

为防止恶意猜测,用户输入验证码后必须调用CheckSmsVerifyCode接口验证其真实性,校验通过才表示身份确认成功。默认情况下,验证码仅通过短信发送至用户手机,接口不会在响应中返回明文;如需调试或有特殊场景需求,可在调用SendSmsVerifyCode接口时配置为直接在响应参数中返回验证码内容。

为什么控制台显示发送成功但手机未收到短信,或测试时选择特定地域收不到短信?

请从以下方面排查:

  1. 短信下发必须通过调用SendSmsVerifyCode接口完成。仅创建AccessKey或在控制台绑定手机号码不会自动触发短信发送。

  2. 接口调用无需修改服务地址(Endpoint),使用默认地址即可;切换地域(如杭州、上海)不影响短信接收。

  3. 如果因签名实名制报备问题导致发送失败,可使用短信发送失败诊断助手自助排查签名合规性。

配置短信认证参数

重要

由于运营商加强对短信签名的管控,所有短信签名需完成实名制报备才可下发短信。自定义签名可能面临下发失败问题,推荐使用号码认证服务赠送的短信签名和模板进行短信认证,系统赠送签名必须搭配系统赠送模板使用。

短信认证服务与短信服务的区别及接口使用规范

短信认证服务(号码认证服务Dypnsapi)与短信服务(Dysmsapi)是两个完全独立的产品,接口、签名和模板资源互不相通,使用时需注意以下规范:

  • 接口区分:短信认证必须调用号码认证服务的SendSmsVerifyCodeCheckSmsVerifyCode接口,严禁调用短信服务的SendSms接口。混用会导致isv.SMS_TEMPLATE_ILLEGAL(找不到模板)或“帐号下无对应模板”等报错。

  • 资源隔离:短信认证的赠送签名和赠送模板仅限SendSmsVerifyCode接口使用,不支持在SendSms接口中调用;短信服务的自定义签名和自定义模板也不支持在短信认证接口中使用。

  • 传参格式SendSmsVerifyCode接口的TemplateParam参数必须为 JSON 字符串格式,例如{"code":"##code##","min":10},验证码有效期以ValidTime字段为准。

  • 接入方式:短信认证为纯服务端 API 调用,不涉及客户端 SDK 集成或创建认证方案。如果业务前端使用 H5、React Native、Expo 等技术,需通过后端接口转发请求,不可直接在前端调用短信认证接口。

购买套餐包后无法使用或调用失败怎么办?

请按以下顺序排查:

  1. 检查账户状态:确保阿里云账户余额大于 0,账户欠费时套餐包无法抵扣。

  2. 检查权限配置:使用 RAM 子账号调用时,需为该账号授予AliyunDypnsFullAccess权限。

  3. 检查接口与参数:确认调用的是SendSmsVerifyCode而非SendSms,且TemplateParam参数格式正确。

  4. 检查签名模板搭配:必须使用系统赠送签名搭配系统赠送模板,不可混用自定义签名或模板。

已开通融合认证,能否仅使用短信认证并关闭其他方式?

可以。如果只需要短信验证码功能,建议直接对接号码认证服务的短信认证 API(纯服务端接口,无需在页面集成 SDK,认证方案完全自定义),无需在融合认证中关闭其他认证方式。需要注意,短信认证服务仅提供验证码的生成、下发及校验能力,不包含断网重连等业务逻辑控制,相关逻辑需要在业务侧自行实现。

使用赠送签名及模板(推荐)

使用号码认证服务赠送的签名及模板,无需关注短信签名及模板审核、报备流程,提升短信发送成功率。

查看赠送签名

  1. 登录号码认证控制台进入短信认证参数配置页面。

  2. 签名配置页签内选择赠送签名配置

  3. 查看赠送签名列表,可任意选择列表内的签名进行短信下发。

查看赠送模板

  1. 登录号码认证控制台进入短信认证参数配置页面。

  2. 模板配置A页签内选择赠送模板配置

  3. 查看赠送模板列表,可任意选择列表内的模板进行短信下发。

    说明

    系统赠送签名必须搭配系统赠送模板使用。

    赠送模版列表包含 5 个模板:登录/注册模板(100001)、修改绑定手机号模板(100002)、重置密码模板(100003)、绑定新手机号模板(100004)、验证绑定手机号模板(100005)。

企业实名认证账号开通短信认证后,是否会自动生成包含企业名称的赠送签名?

不会自动生成。号码认证服务的短信认证支持免资质接入,仅能使用系统预置的通用赠送签名和赠送模板,不支持自定义签名。包含企业名称的签名通常是在独立的短信服务产品中申请资质后生成的,与号码认证服务无关。如果应用商店审核要求签名与应用名称一致,建议改用标准的短信服务,并上传企业资质申请自定义签名。

计费及套餐包

短信认证服务提供按量计费和套餐包两种计费模式,建议根据使用量选择合适的计费方式。

阶梯计费详情请参见短信认证(API版本),也可以在短信认证概览查看当前套餐包余量购买短信认证套餐包

发送记录查询

登录号码认证服务控制台,在左侧导航栏选择短信认证服务 > 发送记录,在发送记录查询页面内进行数据过滤或导出。

该页面支持按日期、方案名称签名模板发送状态手机号流水号(bizId)OutId 进行筛选查询。短信回执消息一般在 72 小时内返回,明细查询支持 180 天内的历史记录。

常见问题

如何获取短信认证接口的 SDK 依赖及完整示例代码?

短信认证为纯服务端 API,可通过以下方式获取 SDK 依赖及示例代码:

  • Java:在 Maven 项目中添加依赖,groupIdcom.aliyunartifactIddypnsapi20170525,推荐使用2.0.0及以上版本(该版本同样适用于 JDK 8 环境)。

  • PHP:执行composer require alibabacloud/dypnsapi-20170525 2.0.0安装依赖。

  • 示例代码:访问阿里云 OpenAPI 门户,选择目标编程语言,即可查看并下载包含发送验证码(SendSmsVerifyCode)和核验验证码(CheckSmsVerifyCode)的完整工程代码。