一、申请微信公众号
1.网页搜索微信公众平台
https://mp.weixin.qq.com/
2.注册
创建成功之后,更换头像和名称(刚注册成功之后,三天内名称不换则自动注销)
二、进入腾讯云创建署名管理和正文模板
1.网页搜索腾讯云官网
进入后搜索短信
2.申请署名管理(需要改名字审核通过了才行)
我的是当天下战书5点改的公众号名,第二天上午就申请通过了
3.创建正文模板(使用标准模板)
4.通过官方文档使用腾讯云短信
https://cloud.tencent.com/document/product/382/43194
三、测试
1.引入依靠
https://github.com/tencentcloud/tencentcloud-sdk-java
- <dependency>
- <groupId>com.tencentcloudapi</groupId>
- <artifactId>tencentcloud-sdk-java</artifactId>
- <version>3.1.547</version>
- </dependency>
复制代码 2.腾讯云短信工具类
里面要填写的信息自己修改
3.调用随机验证码的工具类
- import java.text.DecimalFormat;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Random;
- /**
- * 获取随机数
- *
- * @author qianyi
- *
- */
- 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");
- public static String getFourBitRandom() {
- return fourdf.format(random.nextInt(10000));
- }
- 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;
- }
- }
复制代码 4.Controller
- @Api(description = "短息发送")
- @RestController
- @RequestMapping("/edusms/sms")
- @CrossOrigin //跨域
- public class SmsApiController {
- @Autowired
- private SmsService smsService;
- @Autowired
- private RedisTemplate<String,String> redisTemplate;
- @ApiOperation(value = "短信发送")
- @GetMapping("send/{phone}")
- public R sendSmsPhone(@PathVariable String phone){
- String code = redisTemplate.opsForValue().get(phone);
- if(!StringUtils.isEmpty(code))
- return R.ok();
- code = RandomUtil.getFourBitRandom();
- boolean isSend = smsService.send(phone, code);
- if(isSend) {
- redisTemplate.opsForValue().set(phone, code,5, TimeUnit.MINUTES);
- return R.ok();
- } else {
- return R.error().message("发送短信失败");
- }
- }
- }
复制代码 5.service
- public interface SmsService {
- boolean send(String phone, String code);
- }
复制代码 6.SmsServiceImpl
- @Service
- public class SmsServiceImpl implements SmsService {
- @Override
- public boolean send(String phone, String code) {
- try {
- TxSmsUtils.SendCode(phone,code);
- System.out.println("phone = " + phone);
- System.out.println("code = " + code);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- }
复制代码 7.此次使用的swagger(也可以使用postman)
四、如果申请不成功可以使用阿里云的第三方短信
两个都测试成功了的
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |