尚医通-阿里云短信服务(二十九)

这篇具有很好参考价值的文章主要介绍了尚医通-阿里云短信服务(二十九)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录:

(1)前台用户系统-手机登录-阿里云短信服务介绍

(2)手机登录-整合短信服务

(3)整合短信发送服务测试


(1)前台用户系统-手机登录-阿里云短信服务介绍

现在使用阿里云完成短信服务:注册登录阿里云网站:

尚医通-阿里云短信服务(二十九)

在产品中找短信服务:

尚医通-阿里云短信服务(二十九) 或者搜索短信服务:

尚医通-阿里云短信服务(二十九)

 尚医通-阿里云短信服务(二十九)

需要免费开通短信服务:

尚医通-阿里云短信服务(二十九)

 实名注册后:登录

尚医通-阿里云短信服务(二十九)

点击国内消息:

尚医通-阿里云短信服务(二十九)

 点击添加签名:

尚医通-阿里云短信服务(二十九)

 尚医通-阿里云短信服务(二十九)

审核通过后才能使用:

尚医通-阿里云短信服务(二十九)

在添加模板:

尚医通-阿里云短信服务(二十九)

 审核通过后才能使用:尚医通-阿里云短信服务(二十九)

 点击右上角头像:找到AccesssKey

尚医通-阿里云短信服务(二十九)

选择第一个: 继续使用AcessKey

 尚医通-阿里云短信服务(二十九)

 创建AcessKey:尚医通-阿里云短信服务(二十九)

 尚医通-阿里云短信服务(二十九)

尚医通-阿里云短信服务(二十九)

尚医通-阿里云短信服务(二十九)

签名和模板如果申请不成功,可以使用提供好的签名:通过绑定手机号:

尚医通-阿里云短信服务(二十九)

 尚医通-阿里云短信服务(二十九)

 尚医通-阿里云短信服务(二十九)

尚医通-阿里云短信服务(二十九)

自己注册审核通过:下面使用的是快速学习中的提供签名和模板

签名:我的项目在尚医通

模板:SMS_268550469 

尚医通-阿里云短信服务(二十九)

 尚医通-阿里云短信服务(二十九)

 

 (2)手机登录-整合短信服务

新建一个模块:

尚医通-阿里云短信服务(二十九)

 尚医通-阿里云短信服务(二十九)

尚医通-阿里云短信服务(二十九)

尚医通-阿里云短信服务(二十九)

引入阿里云依赖:

尚医通-阿里云短信服务(二十九)

 创建一个工具类,让他去读取配置文件中阿里云的配置:

尚医通-阿里云短信服务(二十九)

尚医通-阿里云短信服务(二十九)

package com.atguigu.yygh.msm.utils;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ConstantPropertiesUtils implements InitializingBean {

    @Value("${aliyun.sms.regionId}")
    private String regionId;

    @Value("${aliyun.sms.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.sms.secret}")
    private String secret;

    public static String REGION_Id;
    public static String ACCESS_KEY_ID;
    public static String SECRECT;

    //初始化方法:做一些初始化操作 spring调用
    @Override
    public void afterPropertiesSet() throws Exception {
        REGION_Id=regionId;//上面都是private进行赋值初始化
        ACCESS_KEY_ID=accessKeyId;
        SECRECT=secret;
    }
}

 创建controller:MsmApiController 

package com.atguigu.yygh.msm.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/msm")
public class MsmApiController {
}

 创建service:MsmService 

package com.atguigu.yygh.msm.service;

public interface MsmService {
}

创建实现类:

package com.atguigu.yygh.msm.service.impl;

import com.atguigu.yygh.msm.service.MsmService;
import org.springframework.stereotype.Service;

@Service
public class MsmServiceImpl implements MsmService {
}

尚医通-阿里云短信服务(二十九)

工具类:

package com.atguigu.yygh.msm.utils;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;

public class RandomUtil {

    private static final Random random = new Random();

    private static final DecimalFormat fourdf = new DecimalFormat("0000");

    private static final DecimalFormat sixdf = new DecimalFormat("000000");

    //生成4位验证码
    public static String getFourBitRandom() {
        return fourdf.format(random.nextInt(10000));
    }

    //生成6位验证码
    public static String getSixBitRandom() {
        return sixdf.format(random.nextInt(1000000));
    }

    /**
     * 给定数组,抽取n个数据
     * @param list
     * @param n
     * @return
     */
    public static ArrayList getRandom(List list, int n) {

        Random random = new Random();

        HashMap<Object, Object> hashMap = new HashMap<Object, Object>();

         // 生成随机数字并存入HashMap
        for (int i = 0; i < list.size(); i++) {

            int number = random.nextInt(100) + 1;

            hashMap.put(number, i);
        }

        // 从HashMap导入数组
        Object[] robjs = hashMap.values().toArray();

        ArrayList r = new ArrayList();

        // 遍历数组并打印数据
        for (int i = 0; i < n; i++) {
            r.add(list.get((int) robjs[i]));
            System.out.print(list.get((int) robjs[i]) + "\t");
        }
        System.out.print("\n");
        return r;
    }
}

首先编写controller:

我们把生成的验证码放到redis中,在redis中设置它的有效时间,比如说5分钟,超过时间在取就取不到了

package com.atguigu.yygh.msm.controller;

import com.atguigu.yygh.common.result.Result;
import com.atguigu.yygh.msm.service.MsmService;
import com.atguigu.yygh.msm.utils.RandomUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping("/api/msm")
public class MsmApiController {

    @Autowired
    private MsmService msmService;

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    //发送手机验证码
    @GetMapping("send/{phone}")
    public Result sendCode(@PathVariable String phone) {
        //从redis获取验证码,如果获取获取到,返回ok
        // key 手机号  value 验证码
        String code = redisTemplate.opsForValue().get(phone);
        if(!StringUtils.isEmpty(code)) {
            return Result.ok();
        }
        //如果从redis获取不到,
        // 生成验证码,通过整合短信服务发送
        code = RandomUtil.getSixBitRandom();
        //调用service方法,通过整合短信服务进行发送
        boolean isSend = msmService.send(phone,code);
        //生成验证码放到redis里面,设置有效时间
        if(isSend) {
            redisTemplate.opsForValue().set(phone,code,2, TimeUnit.MINUTES);
            System.out.println(code);//在控制台输出一下
            return Result.ok();
        } else {
            return Result.fail().message("发送短信失败");
        }
    }



}

 MsmService 接口:

package com.atguigu.yygh.msm.service;

public interface MsmService {
    //整合短信服务进行发送,发送手机验证码
    boolean send(String phone, String code);
}

实现类:发送的时候需要设置阿里元的AcessKey 和自己申请的签名和模板:

视频中的签名和模板,我们使用的是快速学习提供的

尚医通-阿里云短信服务(二十九)

 尚医通-阿里云短信服务(二十九)

尚医通-阿里云短信服务(二十九) 

 快速学习提供的:尚医通-阿里云短信服务(二十九)

 

package com.atguigu.yygh.msm.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.atguigu.yygh.msm.service.MsmService;
import com.atguigu.yygh.msm.utils.ConstantPropertiesUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.HashMap;
import java.util.Map;

@Service
public class MsmServiceImpl implements MsmService {

    //整合短信服务进行发送,发送手机验证码
    @Override
    public boolean send(String phone, String code) {
        //判断手机号是否为空
        if(StringUtils.isEmpty(phone)) {
            return false;
        }
        //整合阿里云短信服务
        //设置相关参数  AccessKey
        DefaultProfile profile = DefaultProfile.
                getProfile(ConstantPropertiesUtils.REGION_Id,
                        ConstantPropertiesUtils.ACCESS_KEY_ID,
                        ConstantPropertiesUtils.SECRECT);
        IAcsClient client = new DefaultAcsClient(profile);

        //
        CommonRequest request = new CommonRequest();
        //request.setProtocol(ProtocolType.HTTPS);
        //阿里云接口地址
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");

        //手机号
        request.putQueryParameter("PhoneNumbers", phone);
        //签名名称
        request.putQueryParameter("SignName", "阿里云短信测试");
        //模板code
        request.putQueryParameter("TemplateCode", "SMS_154950909");

        //验证码  使用json格式   {"code":"123456"}
        Map<String,Object> param = new HashMap();
        param.put("code",code);
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));

        //调用方法进行短信发送
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
            return response.getHttpResponse().isSuccess();
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        return false;

    }
}

(3)整合短信发送服务测试

运行主启动类测试:

package com.atguigu.yygh.msm;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置,配置文件中没有配置数据库的配置,所以这里需要取消加载数据库的配置
@EnableDiscoveryClient
@ComponentScan(basePackages = {"com.atguigu"})   //配置相同路径可以使用Swagger文档了
public class ServiceMsmApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceMsmApplication.class, args);
    }
}

尚医通-阿里云短信服务(二十九)

尚医通-阿里云短信服务(二十九) 尚医通-阿里云短信服务(二十九)

这里我们使用的是免费的,显示信息余额不足:是正常情况 ,但是给手机发送验证码效果没有实现:需要往账户里面充钱

尚医通-阿里云短信服务(二十九)

 打开redis的客户端,查看有没有新增Key

尚医通-阿里云短信服务(二十九)

新增了手机号码: 

尚医通-阿里云短信服务(二十九)

可以把验证码在控制台输出一下:跟redis进行对比是一样的

尚医通-阿里云短信服务(二十九)

 完善前面的代码,service_user模块显现类上次阿里云未完成的代码:

UserInfoServiceImpl

尚医通-阿里云短信服务(二十九)

 在网关的配置文件中继续添加这个service_msm这个访问路径:

尚医通-阿里云短信服务(二十九)文章来源地址https://www.toymoban.com/news/detail-431108.html

到了这里,关于尚医通-阿里云短信服务(二十九)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云短信服务实战教程

      短信服务有很多的使用场景,比如注册获取验证码,购票成功发送购票通知。目前很多头部运营商已经提供了相关服务,比如阿里云,腾讯云等,这里以阿里云短信服务为例。   阿里云的短信服务是需要购买的,并且每条短信是计费的这个可以在阿里云看到,都有详细

    2024年02月11日
    浏览(40)
  • 阿里云开通短信服务流程

    友情提示 : 本人不是专业的技术人员,很多步骤都是我参考了很多博客,文档,自己摸索出来的,不保证各位的操作都能百分百正确,以及出现的各种问题。 我写这篇博客只是为兄弟们提供一种解决方法,以及一些思路… 操作流程会有一些麻烦,如果嫌麻烦的建议 右上角

    2024年02月02日
    浏览(40)
  • Sms多平台短信服务商系统~完成阿里云短信服务发送可自行配置

    阿里云地址 不同编程语言都有对应的SDK,你们下载自己需要的即可。 pom.xml中添加maven坐标 接下来的代码不是单纯的使用短信服务商提供的发送代码来完成短信的发送那样子就太简单了,我想你们也不想看这样的文章了CSDN一抓一大把,或者看官方文档即可。为了通用短信服务

    2024年02月09日
    浏览(49)
  • 阿里云——OpenAPI使用——短信服务

    目录 前言 产品位置 短信服务 API发送测试 控制台发送测试 链接地址: 阿里云 OpenAPI 开发者门户 公司一直没用这个,最近搞Eolink的时候看到OpenAPI,为了测试,我就搞一下阿里的试试,操作过程还是挺方便的,变相的产品华为、腾讯都有,阿里的操作的流畅度最高。步骤最简

    2023年04月20日
    浏览(35)
  • 阿里云短信服务---测试模板实现

    2023年阿里云短信服务 个人申请模板 已经申请不到了,现在使用 测试模板 实现 发送短信功能 但你手机上接收到的是模板字符串,具体验证码可以自行存到Redis或者输出到控制台 步骤: 平台链接: https://dysms.console.aliyun.com/quickstart 依次点击下面图片的提示 设置测试模板参数

    2024年02月14日
    浏览(41)
  • (短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码

    阿里云官网: https://www.aliyun.com/ 点击官网首页注册按钮。 注册成功后,点击登录按钮进行登录。登录后进入短信服务管理页面,选择国内消息菜单: 短信签名是短信发送者的署名,表示发送方的身份。 切换到【模板管理】标签页: 短信模板包含短信发送内容、场景、变量信息

    2024年02月02日
    浏览(45)
  • 尚融宝15-集成阿里云短信服务

    目录 一、前言 二、测试短信发送 1、查找使用示例 2、测试短信发送 ​编辑 三、使用RAM子用户 1、进入子用户管理页面 2、添加用户  3、获取子用户key 4、设置用户权限 四、短信使用场景和流程 五、创建短信微服务 1、创建项目 2、自定义配置 3、发送短信 在阿里云的短信服

    2023年04月15日
    浏览(54)
  • 阿里云短信服务API怎么调用

            今天来搞一下阿里云短信服务来实现发送短信功能,其实能提供短信发送服务的平台有很多,但这里我选择的是阿里云,因为阿里云的示例还有代码封装的很简洁,使用起来非常简单,上手非常快,那么费话不多说我们直接开始。         首先,我们需要登录阿里云

    2024年02月02日
    浏览(36)
  • java使用阿里云的短信服务

    这里我已经购买过一次了,所以10块钱200条一年,第一次购买应该是3块钱200条三个月 发送成功 要使用阿里云的业务,这个 AccessKey ID和AccessKey Secret 是必须要获取的

    2024年02月16日
    浏览(34)
  • 阿里云 短信服务——开启验证码防盗刷监控

    由于公司的业务要求,目前正在了解并运用阿里云的短信服务。 在短信服务这儿块由于涉及到每条短信都需要花费一定的费用,以及每条短信都会与用户进行信息交互,所以在这块儿的别需要注重短信的安全问题。本篇博客主要介绍阿里云短信服务如何开启验证码防盗刷监控

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包