介绍:

本文介绍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

(极光推送)短信验证码相关推荐

  1. php easysms,二次开发-如何在PHPEMS-发送短信验证码(以easy-sms为例)

    第一步: 下载安装 https://packagist.org/packages/overtrue/easy-sm composer require overtrue/easy-sms 第二步: 在m ...

  2. 二次开发-如何在PHPEMS-发送短信验证码(以easy-sms为例)

    为什么80%的码农都做不了架构师?>>>    第一步: 下载安装 https://packagist.org/packages/overtrue/easy-sm composer ...

  3. 06-发送短信验证码实现登录功能

    1.发送短信验证码实现登录功能的流程 1.1.获取验证码流程 1.2.登录流程 1.3.页面带有图形验证码的流程 2. 注册登录二合一页面的开发 2.1.将src目录下的App.vue页面上通用显示的 ...

  4. python-发送短信验证码-功能的实现

    寻找可发验证码的一个平台 http://user.ihuyi.com/login.php 注册 控制台 默认是有十条短信的,可体验一下 下载接口 记录接口的相关信息 快速下载 https://clou ...

  5. oracle推送短信,ORACLE 10G如何实现发短信的服务?

    CREATE OR REPLACE PROCEDURE SEND_MAIL(SUBJECT IN VARCHAR2, CONTENTSED IN VARCHAR2 ) IS EMAIL_SERVER ...

  6. 使用极光推送发送短信验证码

    发送短信验证码 1.获取AppKey和Master Secret 2.设置短信模板和短信签名 3.开始服务端接口的实现 1.获取AppKey和Master Secret 首先应有一个极光推送官网的账号 ...

  7. Flask项目--发送短信验证码

    1.后端代码 具体代码如下: # GET /api/v1.0/sms_codes/<mobile>?image_code=xxxx&image_code_id=xxxx @api. ...

  8. java微信公众号短信验证码_解决微信端公众号网页获取短信验证码ajax重复调用两次的问题...

    问题背景介绍: 微信公众号网页开发的时候,点击发送短信验证码,如果响应时间超长,目前测试是10秒左右(这个10秒左右,是我自己多次测试总结出来的规律) 超过10秒左右,就会自动请求第二遍,这个问题挺恶 ...

  9. Django电商项目(八)短信验证码的前后端实现

    这篇文章我们开始完成短信验证码的前后端逻辑 后端逻辑 短信验证码接口设计 class SMSCodeView(View):"""短信验证码""&quo ...

最新文章

  1. 好想自己做个迷宫呀!
  2. 实战:使用OpenCV+Python+dlib为人脸生成口罩
  3. python使用np.linspace函数生成均匀的浮点数列表实战:生成浮点数列表、生成浮点数列表(指定是否包含末尾值)
  4. Xcode 8.0 doc 注释的问题
  5. 网状结构的解藕-中介者模式
  6. OpenStack从入门到放弃
  7. 机器学习(part1)--机器学习第一课
  8. 如何在 ASP.NET Core 中为同一接口配置不同的实现
  9. 你只是看起来很努力_我的方法在这方面看起来很大吗?
  10. rust怎么用items刷东西_rust服主怎么刷东西 | 手游网游页游攻略大全
  11. 探索科学的奥秘之门Science,Cell, Nature
  12. 【小盐巴学习笔记】—用Python批量爬取微博评论
  13. ue4蓝图运行顺序_UE4蓝图编程的第一步
  14. addr2line的使用
  15. tf15: 中文语音识别【转】
  16. Python抽象基类、鸭子类型介绍
  17. 基于SSM框架的个人博客系统项目毕业设计(代码及论文)
  18. 现代微服务拆分与设计
  19. deform服务器位置,Deform V11 自动多工步分析(MO)设置详解-工艺成型及仿真
  20. linux操作系统的关机命令

热门文章

  1. ps CS6 不能直接拖入图片的问题!!win8 系统下
  2. 机器学习----PyTorch入门
  3. braft-editor 富文本编辑器在谷歌复制图片出现两张
  4. java jzip_JAVA UI 实现ZIP的压缩与解压缩
  5. SAP-FI-税码维护
  6. Apache Thrift 介绍
  7. 世纪标准-海岸试验数据管理系统(海岸TDM)
  8. 陈松松:视频营销老司机,教你6步轻松剪辑视频
  9. Python的pep8(代码规范)
  10. 安卓apk修改(Android反编译apk)