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

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

开发者学堂课程【全面讲解 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

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

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

相关文章
|
Web App开发 网络协议 关系型数据库
深度解析TCP协议:特点、应用场景及市面上常见软件案例
深度解析TCP协议:特点、应用场景及市面上常见软件案例
1633 1
深度解析TCP协议:特点、应用场景及市面上常见软件案例
|
Java
JVM之本地内存以及元空间,直接内存的详细解析
JVM之本地内存以及元空间,直接内存的详细解析
1252 0
|
6月前
|
数据采集 数据挖掘 API
跨境卖家必看:1688店铺订单列表,订单详情,订单物流接口详解
1688平台提供丰富的API接口,涵盖商品、订单、物流等核心业务场景。主要接口包括:**order.list**(查询订单列表)、**order.get**(获取订单详情)及**logistics.track**(查询物流信息),均支持GET请求方式,广泛应用于跨境寻源、数据采集、ERP系统等场景。
|
10月前
|
人工智能 JavaScript 前端开发
字节最新AI 版IDE:用Trae开发网站打包信息追踪插件,国产版Cursor表现如何?
本文介绍了如何使用字节最新推出的AI编程工具Trae,通过零代码方式快速开发一款名为`dist-info`的前端插件。该插件能够将Git信息或自定义内容注入HTML文件中,兼容Webpack和Vite项目。开发者只需在浏览器控制台输入`info`,即可轻松查看代码的相关信息。文章详细描述了插件的背景、开发流程、核心代码实现以及优化建议,并展示了如何借助Trae高效完成项目搭建和代码编写。
1379 0
字节最新AI 版IDE:用Trae开发网站打包信息追踪插件,国产版Cursor表现如何?
|
安全 Java API
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
阿里云短信服务提供API/SDK和控制台调用方式,支持验证码、通知、推广等短信类型。需先注册阿里云账号并实名认证,然后在短信服务控制台申请资质、签名和模板,并创建AccessKey。最后通过Maven引入依赖,使用工具类发送短信验证码。
5876 3
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
|
机器学习/深度学习 算法 Python
深度解析机器学习中过拟合与欠拟合现象:理解模型偏差背后的原因及其解决方案,附带Python示例代码助你轻松掌握平衡技巧
【10月更文挑战第10天】机器学习模型旨在从数据中学习规律并预测新数据。训练过程中常遇过拟合和欠拟合问题。过拟合指模型在训练集上表现优异但泛化能力差,欠拟合则指模型未能充分学习数据规律,两者均影响模型效果。解决方法包括正则化、增加训练数据和特征选择等。示例代码展示了如何使用Python和Scikit-learn进行线性回归建模,并观察不同情况下的表现。
1647 3
|
运维 Java Spring
Spring Boot中的多环境配置管理
Spring Boot中的多环境配置管理
|
Ubuntu Linux 开发工具
【专栏】在Linux上,exa是一个现代化的文件管理系统替代工具,提供直观的文件信息展示。
【4月更文挑战第28天】在Linux上,exa是一个现代化的文件管理系统替代工具,提供直观的文件信息展示。要安装exa,可以在基于Debian的系统(如Ubuntu)上运行`sudo apt install exa`,基于RedHat(如CentOS)的系统运行`sudo yum install exa`,或从源代码编译安装。使用exa的基本命令是`exa`,它列出当前目录的文件和目录。通过选项如`-F`(显示文件类型)、`-h`(人类可读大小)、`-l`(详细信息)和`-s`(排序)可以定制输出。exa还能与其他命令(如grep)结合使用,提升效率。
320 0
|
前端开发 测试技术 API
antd mobile v5 它悄悄的来了
antd mobile v5 它悄悄的来了
705 0
antd mobile v5 它悄悄的来了
|
存储 Linux iOS开发
探索7款最佳开源DVD刻录机
本文将介绍七款最佳开源DVD刻录机,这些工具提供了高质量的光盘刻录功能,并且以其开放源代码的特性受到广泛欢迎。开源DVD刻录机不仅具有强大的功能和稳定性,还能够让用户根据自己的需求进行定制和修改。无论您是个人用户还是专业用户,这些开源软件都能满足您对于刻录、备份和光盘制作的各种需求。接下来,让我们一起探索这七款最佳开源DVD刻录机的特点和优势。
2108 1