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

前提提示

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

【三网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

验证未通过

验证未通过

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'

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

正常返回示例

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

失败返回示例

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

 

 

 java代码落地

SmsComponent类

@Data
@ConfigurationProperties(prefix = "spring.alicloud.sms")
@Component
public class SmsComponent {

    private  String host;
    private  String path;
    private  String templateId;
    private  String smsSignId;
    private  String appcode;

    public void sendSmsCode(String phone,String code){
        String host = "https://gyytz.market.alicloudapi.com";
        String path = "/sms/smsSend";
        String method = "POST";
        String appcode = "9a0f9ce1ac154e108d00aade73e1bd3b";
        Map<String, String> headers = new HashMap<String, String>();
        //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
        headers.put("Authorization", "APPCODE " + appcode);
        Map<String, String> querys = new HashMap<String, String>();
        querys.put("mobile", phone);
        querys.put("param", "**code**:+"+code+",**minute**:666");

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

        querys.put("smsSignId", "2e65b1bb3d054466b82f0c9d125465e2");
        querys.put("templateId", "ea66d14c664649a69a19a6b47ba028db");
        Map<String, String> bodys = new HashMap<String, String>();
        try {

            HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
            System.out.println(response.toString());
            //获取response的body
            //System.out.println(EntityUtils.toString(response.getEntity()));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

 //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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>