(极光推送)短信验证码
介绍:
本文介绍spring项目对接极光推送第三方平台的短信验证码模块。
依赖
<dependency><groupId>cn.jpush.api</groupId><artifactId>jsms-client</artifactId><version>1.2.8</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version><!--极光官方的版本是2.3,但是会报错,使用高版本就不会--></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.7</version></dependency><dependency><groupId>cn.jpush.api</groupId><artifactId>jiguang-common</artifactId><version>1.0.8</version></dependency>
工具类
package com.lvjian.jiyu.util;import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jsms.api.JSMSClient;
import cn.jsms.api.SendSMSResult;
import cn.jsms.api.ValidSMSResult;
import cn.jsms.api.common.SMSClient;
import cn.jsms.api.common.model.SMSPayload;
import com.alibaba.fastjson.JSONObject;
import com.lvjian.jiyu.vo.Code;
import com.lvjian.jiyu.vo.Response;
import com.sun.org.apache.xpath.internal.operations.Bool;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import javax.validation.constraints.NotEmpty;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;/*** 极光推送短信验证码工具* 参考 https://docs.jiguang.cn/jsms/server/rest_api_jsms/* @author zp*/
@Slf4j
@Component
public class JiGuangSMSUtil {@Value("${jiGuang.appKey}")private String appKey;@Value("${jiGuang.masterSecret}")private String masterSecret;@Value("${jiGuang.tempId}")private String tempId; // 模板ID 必填// 短信发送接口private static final String SEND_SMS_URL = "https://api.sms.jpush.cn/v1/codes";// 校验短信验证码接口private static final String CHECK_SMS_URL = "https://api.sms.jpush.cn/v1/codes/";/*** 发送短信* @param phone* @return 返回成功时,会同时返回msgId,用来调用方法查询用户输入的验证码是否正确*/public Response sendSms(@NotEmpty(message = "手机号不能为空") String phone){if(CommonUtil.isBlank(appKey) ||CommonUtil.isBlank(masterSecret)){log.error("极光推送配置信息读取失败");return Response.error("极光推送配置信息读取失败");}// 调用极光sdkSMSClient client = new SMSClient(masterSecret, appKey);SMSPayload payload = SMSPayload.newBuilder().setMobileNumber(phone).setTempId(Integer.parseInt(tempId)).build();try {SendSMSResult res = client.sendSMSCode(payload);return Response.ok(res.getMessageId());} catch (APIConnectionException e) {log.error("发送短信验证码出现异常:", e);return Response.error("发送短信验证码出现异常:" + e);} catch (APIRequestException e) {log.error("发送短信验证码出现异常:HTTP Status: ", e.getStatus() +" Error Message: " + e.getErrorMessage());return Response.error("发送短信验证码返回结果异常:" + e.getErrorMessage());}}/*** 校验短信验证码* @param code* @param msgId* @return*/public Response<Boolean> checkSms(@NotEmpty(message = "验证码不能为空") String code,@NotEmpty(message = "msgId不能为空") String msgId){SMSClient client = new SMSClient(masterSecret, appKey);try {ValidSMSResult res = client.sendValidSMSCode(msgId,code);return Response.ok(res.getIsValid());} catch (APIConnectionException e) {log.error("校验短信验证码出现异常:", e);return Response.error("校验短信验证码出现异常:" + e,Boolean.FALSE);} catch (APIRequestException e) {log.error("校验短信验证码出现异常:HTTP Status: ", e.getStatus() +" Error Message: " + e.getMessage());return Response.error("校验短信验证码返回结果异常:" + e,Boolean.FALSE);}}
}
原文链接:https://www.jianshu.com/p/85baba3f9f87
(极光推送)短信验证码相关推荐
- php easysms,二次开发-如何在PHPEMS-发送短信验证码(以easy-sms为例)
第一步: 下载安装 https://packagist.org/packages/overtrue/easy-sm composer require overtrue/easy-sms 第二步: 在m ...
- 二次开发-如何在PHPEMS-发送短信验证码(以easy-sms为例)
为什么80%的码农都做不了架构师?>>> 第一步: 下载安装 https://packagist.org/packages/overtrue/easy-sm composer ...
- 06-发送短信验证码实现登录功能
1.发送短信验证码实现登录功能的流程 1.1.获取验证码流程 1.2.登录流程 1.3.页面带有图形验证码的流程 2. 注册登录二合一页面的开发 2.1.将src目录下的App.vue页面上通用显示的 ...
- python-发送短信验证码-功能的实现
寻找可发验证码的一个平台 http://user.ihuyi.com/login.php 注册 控制台 默认是有十条短信的,可体验一下 下载接口 记录接口的相关信息 快速下载 https://clou ...
- oracle推送短信,ORACLE 10G如何实现发短信的服务?
CREATE OR REPLACE PROCEDURE SEND_MAIL(SUBJECT IN VARCHAR2, CONTENTSED IN VARCHAR2 ) IS EMAIL_SERVER ...
- 使用极光推送发送短信验证码
发送短信验证码 1.获取AppKey和Master Secret 2.设置短信模板和短信签名 3.开始服务端接口的实现 1.获取AppKey和Master Secret 首先应有一个极光推送官网的账号 ...
- Flask项目--发送短信验证码
1.后端代码 具体代码如下: # GET /api/v1.0/sms_codes/<mobile>?image_code=xxxx&image_code_id=xxxx @api. ...
- java微信公众号短信验证码_解决微信端公众号网页获取短信验证码ajax重复调用两次的问题...
问题背景介绍: 微信公众号网页开发的时候,点击发送短信验证码,如果响应时间超长,目前测试是10秒左右(这个10秒左右,是我自己多次测试总结出来的规律) 超过10秒左右,就会自动请求第二遍,这个问题挺恶 ...
- Django电商项目(八)短信验证码的前后端实现
这篇文章我们开始完成短信验证码的前后端逻辑 后端逻辑 短信验证码接口设计 class SMSCodeView(View):"""短信验证码""&quo ...
最新文章
- 好想自己做个迷宫呀!
- 实战:使用OpenCV+Python+dlib为人脸生成口罩
- python使用np.linspace函数生成均匀的浮点数列表实战:生成浮点数列表、生成浮点数列表(指定是否包含末尾值)
- Xcode 8.0 doc 注释的问题
- 网状结构的解藕-中介者模式
- OpenStack从入门到放弃
- 机器学习(part1)--机器学习第一课
- 如何在 ASP.NET Core 中为同一接口配置不同的实现
- 你只是看起来很努力_我的方法在这方面看起来很大吗?
- rust怎么用items刷东西_rust服主怎么刷东西 | 手游网游页游攻略大全
- 探索科学的奥秘之门Science,Cell, Nature
- 【小盐巴学习笔记】—用Python批量爬取微博评论
- ue4蓝图运行顺序_UE4蓝图编程的第一步
- addr2line的使用
- tf15: 中文语音识别【转】
- Python抽象基类、鸭子类型介绍
- 基于SSM框架的个人博客系统项目毕业设计(代码及论文)
- 现代微服务拆分与设计
- deform服务器位置,Deform V11 自动多工步分析(MO)设置详解-工艺成型及仿真
- linux操作系统的关机命令