认证服务:整合短信验证码

简介: 认证服务:整合短信验证码

前提提示

视频对应的阿里云短信服务需要企业验证,下面换一种阿里云的产品也是大同小异的

【三网106短信】短信接口-短信验证码-短信通知-会员短信群发-短信平台API接口-行业短信_支持携号转网_自定义签名和模板【最新版】_实名认证接口/API_身份证接口/API_银行卡认证-云市场-阿里云 (aliyun.com)

分析讲解

名称

类型

是否必须

描述

mobile

STRING

必选

需要发送的手机号。(同一手机号码,同一签名验证码,一分钟一次,频率过快可能会导致运营商系统屏蔽,用户无法正常接收。)

param

STRING

可选

短信模板变量替换。(字符串格式:**key**:value,**key**:value。例如:**code**:12345,**minute**:5。如模板中有多个变量请使用英文逗号隔开。建议对参数进行URLEncode编码,以免出现乱码等异常情况)

smsSignId

STRING

必选

短信前缀ID(签名ID),可在控制台申请。——【1】测试前缀ID:2e65b1bb3d054466b82f0c9d125465e2;【2】测试签名限流规则,同一个号码,1分钟1次,1小时5次,24小时10次,不支持大量商用;【3】控制台&签名和模板申请教程:http://help.guoyangyun.com/Problem/Qm.html

templateId

STRING

必选

短信正文ID(模板ID),可在控制台申请。—— 测试ID请用:908e94ccf08b4476ba6c876d13f084ad,对应短信正文为 {验证码:**code**,**minute**分钟内有效,请勿泄漏于他人!}

错误码

错误信息

描述

1204

签名未报备

可在控制台申请 —— 【控制台&签名和模板申请教程】http://help.guoyangyun.com/Problem/Qm.html

1205

签名不可用

签名一般为:公司名简称、产品名、商城名称、网站名称、APP名称、系统名称、公众号、小程序名称等等。不可以是纯数字、电话号码或者无意义的签名,如:【温馨提示】【测试】【你好】等;

1302

短信内容包含敏感词

短信内容包含敏感词

1304

短信内容过长

短信内容实际长度=短信签名+短信内容。(短信计费方式:70字内按1条计费,超出按67字每条计费;一个汉字、数字、字母、符号都算一个字;带变量短信按实际替换后的长度计费)

1320

模板ID不存在

可在控制台申请 —— 【控制台&签名和模板申请教程】http://help.guoyangyun.com/Problem/Qm.html

1403

手机号码不正确

手机号码不正确

1905

验证未通过

验证未通过

1. curl -i -k -X POST 'https://gyytz.market.alicloudapi.com/sms/smsSend?mobile=mobile&param=**code**%3A12345%2C**minute**%3A5&smsSignId=2e65b1bb3d054466b82f0c9d125465e2&templateId=908e94ccf08b4476ba6c876d13f084ad'  -H 'Authorization:APPCODE 你自己的AppCode'
2. 
3. //smsSignId(短信前缀)和templateId(短信模板),可登录国阳云控制台自助申请。参考文档:http://help.guoyangyun.com/Problem/Qm.html

正常返回示例

1. {
2. "msg": "成功", 
3. "smsid": "16565614329364584123421",  //批次号。可通过该ID查询发送状态或者回复短信。API接口可联系客服获取。
4. "code": "0",
5. "balance": "1234"  //账户剩余次数
6. }

失败返回示例

1. {
2. "code":"XXXX",
3. "msg":"错误提示内容",
4. "ILLEGAL_WORDS":["XX","XX"]    // 如有则显示
5. // 1、http响应状态码对照表请参考:https://help.aliyun.com/document_detail/43906.html;
6. // 2、如果次数用完会返回 403,Quota Exhausted,此时继续购买就可以;
7. // 3、如果appCode输入不正确会返回 403,Unauthorized;
8. }

 

 

java代码落地

SmsComponent类

1. @Data
2. @ConfigurationProperties(prefix = "spring.alicloud.sms")
3. @Component
4. public class SmsComponent {
5. 
6. private  String host;
7. private  String path;
8. private  String templateId;
9. private  String smsSignId;
10. private  String appcode;
11. 
12. public void sendSmsCode(String phone,String code){
13. String host = "https://gyytz.market.alicloudapi.com";
14. String path = "/sms/smsSend";
15. String method = "POST";
16. String appcode = "9a0f9ce1ac154e108d00aade73e1bd3b";
17.         Map<String, String> headers = new HashMap<String, String>();
18. //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
19.         headers.put("Authorization", "APPCODE " + appcode);
20.         Map<String, String> querys = new HashMap<String, String>();
21.         querys.put("mobile", phone);
22.         querys.put("param", "**code**:+"+code+",**minute**:666");
23. 
24. //smsSignId(短信前缀)和templateId(短信模板),可登录国阳云控制台自助申请。参考文档:http://help.guoyangyun.com/Problem/Qm.html
25. 
26.         querys.put("smsSignId", "2e65b1bb3d054466b82f0c9d125465e2");
27.         querys.put("templateId", "ea66d14c664649a69a19a6b47ba028db");
28.         Map<String, String> bodys = new HashMap<String, String>();
29. try {
30. 
31. HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
32.             System.out.println(response.toString());
33. //获取response的body
34. //System.out.println(EntityUtils.toString(response.getEntity()));
35.         } catch (Exception e) {
36.             e.printStackTrace();
37.         }
38.     }
39. 
40. }

//smsSignId(短信前缀)和templateId(短信模板),可登录国阳云控制台自助申请。参考文档:http://help.guoyangyun.com/Problem/Qm.html 

配置类相关代码

spring.cloud.alicloud.sms.host=https://gyytz.market.alicloudapi.com
spring.cloud.alicloud.sms.path=/sms/smsSend
spring.cloud.alicloud.sms.templateId=ea66d14c664649a69a19a6b47ba028db
spring.cloud.alicloud.sms.smsSignId=2e65b1bb3d054466b82f0c9d125465e2
spring.cloud.alicloud.sms.appcode=9a0f9ce1ac154e108d00aade73e1bd3b


相关文章
|
4月前
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
4月前
|
NoSQL Java Redis
认证服务---整合短信验证码,验证码倒计时,验证码防刷校验 【一】
这篇文章介绍了如何在分布式微服务项目中整合短信验证码服务,包括使用阿里云短信验证接口、将短信验证功能集成到第三方服务中、其他服务的远程调用,以及通过Redis实现验证码防刷机制的代码实现和遇到的问题解决方案。
|
4月前
|
数据采集 安全 容灾
《阿里云产品手册2022-2023 版》——号码认证服务
《阿里云产品手册2022-2023 版》——号码认证服务
|
移动开发 API 开发工具
秒懂云通信:如何使用阿里云号码认证服务(小白指南)
手把手教你如何使用阿里云号码认证服务,超详细控制台步骤解析,快速上手!
3013 0
秒懂云通信:如何使用阿里云号码认证服务(小白指南)
|
安全 数据安全/隐私保护 开发者
阿里云通信发布全新号码认证服务, 重新定义手机号码认证的方式
12月12日,阿里云通信宣布号码认证服务正式商用,将重新定义手机号码认证的方式。因移动应用实名制的政策要求,手机号码认证在移动APP的注册、登录等场景用的越来越多。而对于开发者来说,能完成手机号码认证的选择并不多,一般是借助短信、语音的基础通信通道,自己实现短信验证码或语音验证码来实现。
25062 0
|
6月前
|
测试技术
appc认证
【6月更文挑战第2天】appc认证
113 0
|
6月前
|
监控 搜索推荐 UED
如何通过WCAG认证提升品牌形象?
【6月更文挑战第2天】如何通过WCAG认证提升品牌形象?
51 0
|
6月前
|
UED 开发者
WCAG认证的意义是什么?
【6月更文挑战第2天】WCAG认证的意义是什么?
65 0
下一篇
DataWorks