发送下单成功短信案例|学习笔记

简介: 快速学习发送下单成功短信案例

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第四阶段发送下单成功短信案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/686/detail/11916


发送下单成功短信案例


下单之后发送短信

1、短信通知

使用的场景是短信通知,在申请签名的时候如果是短信通知,应该选通用,如果选择通用会让提供签名来源,签名来源是需要上传各种各样资质,资质没有所以只能选择发送一条验证码跟实际场景不符。如果到企业中资质都能拿到可以选择通用,然后发送一个短信通知

image.png

短信通知模板可以修改,里面有模板名称、模板内容、申请说明。

image.png

image.png

跟验证码的模板很相似

image.png

订单已经成功但是不能用,因为有场景的限制,所以模拟的是一旦发现有订单下单成功,就发送一个验证码到用户的手机上去。

image.png

2、 shop-user 模块中加入 sms 依赖

com.alibaba.c1oud

spring-c1oud-alicloud-sms


3、将阿里短信给出的 demo 封装成工具类

public class Smsutil {

//替换成自己申请的accessKeyId

private static string accessKeyId="xxxxx"

//替换成自己申请的accessKeySecret

private static String accessKeySecret

="hqyW0zTNzeSIFnZhM EkOaZXVVcr 3Gj";

static final string product = "Dysmsapi";

static final string domain ="dysmsapi.aliyuncs.com";

4、代码

(1)代码

import lombok.extern.slf4i.Slf4i;

import

org.apache.rocketmg.spring.annotation.ConsumeMod e;

import

org.apache.rocketmg.spring.annotation.MessageMo del;

import

org.apache.rocketmg.spring.annotation.RocketMOMe ssageListener;

import org.apache.rocketmg.spring.coreRocketMQlistener

import

org.springframework.beans.factory.annotation.Autowi

red;

import org.springframework.stereotype.Service;

@slf4j

@service(“shopsSmsservice”)

//consumerGroup- 消费者组名 topic- 要消费的主题

@RocketMOMessageListener(

consumerGroup="shop-user",//消费者组名

topic="order-topic",//消费主题

consumeMode =ConsumeMode.CONCURRENTLY//消费模式,指定是否顺序消费

CONCURRENTLY(同步,默认)ORDERLY顺序) messageModel=MessageMode1.CLUSTERING//消息模式BROADCASTING(广播)CLUSTERING(集群默认)

publia class SmsService implements RocketMQListener

der>{

@Autowired

private UserDao userDao;

//消费逻辑

@Override

public void onMessage(Order message){

log.info("接收到了一个订单信息,接下来就可以发送短信通知了",message);

//根据 uid 获取手机号

User user=userDao.findById(message.getuid()).get();

//生成验证码 1-9 6

stringBuilder builder=newstringBuilder();

for (int i = o; i < 6; i++) {

builder.append(new Random().nextInt( bound: 9)+1)

}

string smseode = builder.tostring();

Param param=new Param(smsCode)

try{

//发送短信("code":"123456"}

SmsUtil.sendSms(user.getTelephone(),signName:"黑马旅游网",templateCode:"SMS 170836451",JSON。

toJSONString(pa ram));

Iog.info("短信发送成功");}

catch (Exception e){

e.printstackTrace();

}

}

@Data

@AllArgsConstructor

@NoArgsConstructor

class Param{

private string code;

}

}

启动一下 user:

User 启动报错,修改 @service(“shopsSmsservice”)

image.png

再运行一次:

发送成功,没有报异常。

image.png

(2)过程

SmsUtiLjava:

/**

*发送短信

*

*@param phoneNumbers要发送短信到哪个手机号

*@param signName 短信签名[必须使用前面申请的]

*@param templateCode 短信短信模板ID[必须使用前面申请的]

*@param param 模板中s{code)位置传递的内容

需要四个参数手机号短信签名短信模板 code 以及 code 模板中需要的参数,中间两个只需要把申请好的名称和代码拿过来就行。

image.png

手机号跟用户相关,现在只能拿到订单,订单里面时候有用户。

package com. itheima.domain

import ...

//订单

@Entity(name = "shop order")

@data

public class Order {

@Id

@GeneratedValue(strategy=GenerationTypeIDENTITY)

private Long oid;//订单id

//用户

private Integer uid;//用户id

private string username;//用户名

//商品

private Integer pid;//商品id private string pname;//商品名称

private Double pprice;//商品单价

//数量

private Integernumber;//购买数量

)

订单里面有 UID,根据 UID 能查询到用户,已经拥有手机号,最后是 parm 目前传的是一个验证码,验证码自己生成就可以。

缺少的参数为 code

(3)打断

User user=userDao.findById(message.getuid()).get();

执行下单 localhost:8091/order/prod/2:

{

"oid”: 67.

"uid”: 1.

"usernane":“测试用户”,

"pid”: 2,

"pnane”: "华为”,

"pprice":2000

"number": 1

}

image.png

消息已经过来。

首先查用户:

image.png

组装六位数验证码:

打断 for (int i = o; i < 6; i++) {

image.png

image.png

已经拥有六位数验证码。

进行拼接:

image.png

image.png JSON.toJSONString(param)转出的格式执行一下:

Expression:

JSON.tosonstring(param

Result:

oo result = "{"code":"979349"}"

value ={char[17]@14542)

hash=0

为所要的格式,接下来放一下断点。

学习如何用阿里云短信发送短消息,具体的场景根据企业中来决定,比如发送验证码可以直接用,但是短信通知类型要用场景需要跟公司去沟通,要相关的签名来源、资质上传,审核通过以后就可以使用。

相关文章
JVM之本地内存以及元空间,直接内存的详细解析
JVM之本地内存以及元空间,直接内存的详细解析
890 0
如何接入阿里云短信服务 (完整指南)
如何接入阿里云短信服务 (完整指南)
54265 1
字节最新AI 版IDE:用Trae开发网站打包信息追踪插件,国产版Cursor表现如何?
本文介绍了如何使用字节最新推出的AI编程工具Trae,通过零代码方式快速开发一款名为`dist-info`的前端插件。该插件能够将Git信息或自定义内容注入HTML文件中,兼容Webpack和Vite项目。开发者只需在浏览器控制台输入`info`,即可轻松查看代码的相关信息。文章详细描述了插件的背景、开发流程、核心代码实现以及优化建议,并展示了如何借助Trae高效完成项目搭建和代码编写。
579 0
字节最新AI 版IDE:用Trae开发网站打包信息追踪插件,国产版Cursor表现如何?
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
阿里云短信服务提供API/SDK和控制台调用方式,支持验证码、通知、推广等短信类型。需先注册阿里云账号并实名认证,然后在短信服务控制台申请资质、签名和模板,并创建AccessKey。最后通过Maven引入依赖,使用工具类发送短信验证码。
3584 3
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
探索7款最佳开源DVD刻录机
本文将介绍七款最佳开源DVD刻录机,这些工具提供了高质量的光盘刻录功能,并且以其开放源代码的特性受到广泛欢迎。开源DVD刻录机不仅具有强大的功能和稳定性,还能够让用户根据自己的需求进行定制和修改。无论您是个人用户还是专业用户,这些开源软件都能满足您对于刻录、备份和光盘制作的各种需求。接下来,让我们一起探索这七款最佳开源DVD刻录机的特点和优势。
1646 1
『html5、css3』将视频做为网页背景 超炫!
效果图展示 仿墨迹天气首页 github项目地址:https://github.com/Ethan997/Video-background-page PC端网页效果预览:http://www.
5001 0
(成功最详细版本,自定义传参失败,跳转出现空白页面,校验文件失败)微信小程序扫码跳转小程序指定页面保姆级教程
文档里面虽然说了,但是还是有几个坑的地方,坑等文章最后面再写扫普通链接二维码打开小程序 | 微信开放文档
594 0
(成功最详细版本,自定义传参失败,跳转出现空白页面,校验文件失败)微信小程序扫码跳转小程序指定页面保姆级教程
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等