1. 首页 > 淘宝教学

淘宝注册如何发送验证码短信(App发送短信验证码实现)

前言: 现如今,电话是接外卖和快递的,短信是用来收验证码的。那么像一般的App里面使用手机号+验证码方式进行注册或登录是怎样实现的呢?这篇文章可能帮到你。

1.寻找合适的短信平台

因为三大运营商的限制摆在那里,凭个人力量当然是不太可能直接发送短信给到用户。所以我们只好依托强大的平台来做后盾。像阿里云,腾讯云等都有提供短信通知服务,虽然平台众多,但实现方式大体相同。此处以阿里云短信为例。

2.注册阿里云账号(已有账号可跳过)

使用钉钉,淘宝或支付宝扫码注册均可,链接如下,进入后点击右上角注册按钮跳转注册页面:

https://cn.aliyun.com/

3.开通短信服务,购买短信套餐包

可以在阿里云首页搜索短信服务,点击后再点立即购买即可跳转,截图如下(如果提示未开通短信服务,只需要确定开通即可):

淘宝注册如何发送验证码短信

4.短信签名和短信模板申请

购买成功后,点击首页的控制台进入,如果找不到短信入口,可以在产品服务里面搜索到,截图如下,这样就进入控制台啦:

淘宝注册如何发送验证码短信

5.添加短信签名与模板(国内消息)

  • 签名(点击添加按钮,填写相应资料,保存等待审核即可)
    签名指的是短信内容里面中括号【】包含的文本,用作发送方身份标识。

淘宝注册如何发送验证码短信

  • 模板
    模板即为短信的正文内容,点击添加模板按钮,填写相关资料提交审核。
    模板里面的变量使用${}语法,一个短信里面可以设置多个变量。(模板审核耗时比较长,建议尽早提交审核),当审核完成后即可以拿到templateCode。

淘宝注册如何发送验证码短信

淘宝注册如何发送验证码短信

6.集成到项目里(maven方式演示,代码已上传github)

https://github.com/leiwuwang/sendsms

  • 获取accesskey和secret
    查看右上角的头像,点击Accesskey管理,去生成key和秘钥(秘钥只生成一次,要妥善保存好)。此处还可以使用子账号的accessKey进行短信发送,但跟本次内容无关就不再详细说明。

淘宝注册如何发送验证码短信

  • 添加maven依赖
    注意版本的使用,这这里使用的是4.5.16

    
    
     com.aliyun
     
    
     aliyun-java-sdk-core
     
    
     4.5.16
    
   
   	
    
     com.aliyun
    	
    
     aliyun-java-sdk-dysmsapi
    	
    
     1.1.0
    
   
  • 测试发送代码(springboot结合)
@Value("${signName}")private String signName;@Value("${templateCode}")private String templateCode;@Value("${accessKey}")private String accessKey;@Value("${accesssSecret}")private String accesssSecret; /** * 发送验证码逻辑 */private Map
   
     sendSms(String mobile) throws ClientException { Map
    
      resultMap = new HashMap<>(); //可自助调整超时时间 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.client.defaultReadTimeout", "10000"); //初始化acsClient,暂不支持region化 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKey,accesssSecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "dysmsapi.aliyuncs.com"); IAcsClient acsClient = new DefaultAcsClient(profile); //组装请求对象-具体描述见控制台-文档部分内容 SendSmsRequest request = new SendSmsRequest(); //必填:待发送手机号 request.setPhoneNumbers(mobile); //必填:短信签名-可在短信控制台中找到 request.setSignName(signName); request.setTemplateCode(templateCode); int rand_num = (int)((Math.random()*9+1)*100000); request.setTemplateParam("{"code":""+rand_num+""}");//此处最好使用转json工具 //hint 此处可能会抛出异常,注意catch SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); String code = sendSmsResponse.getCode(); if(code.equals("OK")){ resultMap.put("code","1000"); resultMap.put("msg","发送成功"); }else{ resultMap.put("code","-1000"); resultMap.put("msg","发送失败"); } return resultMap; }
    
   
 /** * 程序的入口 */@RequestMapping(value="/sendsms")@ResponseBodypublic Map
   
     getValidCode(String mobile){ try { return this.sendSms(mobile); } catch (ClientException e) { e.printStackTrace(); } Map
    
      resultMap = new HashMap<>(); resultMap.put("code","-1000"); resultMap.put("msg","发送失败"); return resultMap;}
    
   
  • 其他API
    请查看短信官方文档。

https://help.aliyun.com/document_detail/102715.html?spm=a2c4g.11186623.6.617.189870544NEsLu

7.总结

如上就是项目结合阿里云发送短信验证码的具体实现逻辑了。我们可以结合缓存工具(如redis),实现验证码的有效期,从而进一步实现登录的业务逻辑。流程图如下:

淘宝注册如何发送验证码短信

本文由阿雷在编程发布,不代表百千电商网立场,转载联系作者并注明出处:/taobaojiaoxue/11550.html

联系我们

在线咨询:点击这里给我发消息

微信号:weixin888

工作日:9:30-18:30,节假日休息