短信验证

http://smsow.zhenzikj.com/doc/java_sdk_doc.html:榛子平台(平台不行)

一下是短信JAVA版本的API文档

1.安装

方法1:使用maven安装
	            <dependency>
	               <groupId>com.zhenzikj</groupId>
	               <artifactId>zhenzisms</artifactId>
	               <version>1.0.2</version>
	            </dependency>
            

下载最新的maven版本: maven

方法2:直接下载jar安装

下载后的SDK只包含一个jar文件,并且不依赖任何其他jar包或文件,直接导入到工程中即可使用。

2.用法

使用事先申请的AppId、AppSecret初始化ZhenziSmsClient:

ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);

1)发送短信

String result = client.send("15811111111", "您的验证码为2323");

send方法用于单条发送短信

参数1:接收者手机号码,参数2:短信内容

返回结果是json格式的字符串, code: 发送状态,0为成功。非0为发送失败,可从data中查看错误信息

注: 测试发送短信内容不要使用"你好"或"12132"全数字形式,这种短信内容没有具体的意义,可能会被运营商屏蔽

			{
			    "code":0,
			    "data":"发送成功"
			}
			

2)发送短信(返回状态报告)

String result = client.send("15811111111", "您的验证码为2323", "dfee_dfdw_xdfd_dfdfd");

send方法用于单条发送短信,并且开发者可接受短信发送状态报告,具体使用请参考:API说明

参数1:接收者手机号码,参数2:短信内容, 参数3:messageId即该条短信的唯一标识, 不能重复

返回结果是json格式的字符串, code: 发送状态,0为成功。非0为发送失败,可从data中查看错误信息

错误代码表

错误码原因解决方案
100参数格式错误检查请求参数是否为空, 或手机号码格式错误
101短信内容超过1000字短信内容过长,请筛检或分多次发送
105appId错误或应用不存在请联系工作人员申请应用或检查appId是否输入错误
106应用被禁止请联系工作人员查看原因
107ip错误如果设置了ip白名单,系统会检查请求服务器的ip地址,已确定是否为安全的来源访问
108短信余额不足需要到用户中心进行充值
109今日发送超过限额如果设置了日发送数量,则每个接收号码不得超过这个数量
110应用秘钥(AppSecret)错误检查AppSecret是否输入错误,或是否已在用户中心进行了秘钥重置
111账号不存在请联系工作人员申请账号
1000系统位置错误

请联系工作人员或技术人员检查原因

 

3)查看余额

通过该接口可查看当前剩余的短信条数

String result = client.balance();

返回结果是json格式的字符串, code: 查询状态,0为成功,data为剩余短信条数。非0为查询失败,可从data中查看错误信息

错误代码表

错误码原因解决方案
100参数格式错误检查请求参数是否为空
105appId错误或应用不存在请联系工作人员申请应用或检查appId是否输入错误
106应用被禁止请联系工作人员查看原因
107ip错误如果设置了ip白名单,系统会检查请求服务器的ip地址,已确定是否为安全的来源访问
110应用秘钥(AppSecret)错误检查AppSecret是否输入错误,或是否已在用户中心进行了秘钥重置
1000系统位置错误请联系工作人员或技术人员检查原因

4)查询短信

接口描述

根据messageId查询已发送短信

String result = client.findSmsByMessageId("dfee_dfdw_xdfd_dfdfd");
注: 必须是post请求,个人开发者域名使用sms_developer.zhenzikj.com,企业开发者域名使用sms.zhenzikj.com

请求参数

参数名称必选类型描述
appIdstring应用id,可通过用户中心,应用详情查看
appSecretstring应用秘钥,可通过用户中心,应用详情查看
messageIdstring信息id,对应发送短信接口的messageId字段

返回结果

返回结果是json格式的字符串, code: 查询状态,0为成功。非0为失败,可从data中查看错误信息

			{
			    "code":0,
			    "data":{}
			}
			

返回结果是json格式的字符串, code: 查询状态,0为成功,data短信信息的json字符串

 

 

 

核心代码:

 

public Object sendNote(HttpServletRequest request, String userPhone,
HttpServletResponse response) {

// TODO Auto-generated method stub
try {
JSONObject json = null;
//生成6位验证码
String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);
System.out.println("后台码" + verifyCode);
//发送短信
ZhenziSmsClient client = new ZhenziSmsClient("https://sms_developer.zhenzikj.com", "100656", "ZmI5M2FkOTgtODk4NS00ODkwLWIwNTMtYTg1ZmM4YzI0NGJk");
String result = client.send(userPhone, "您的验证码为:" + verifyCode + ",该码有效期为5分钟,该码只能使用一次!");
System.out.println("发送的相关信息" + result);
json = JSONObject.parseObject(result);
if (json.getIntValue("code") != 0) {//发送短信失败
return "fail";
} else {
//将验证码存到session中,同时存入创建时间
//以json存放
HttpSession session = request.getSession();
json = new JSONObject();
json.put("verifyCode", verifyCode);
json.put("createTime", System.currentTimeMillis());
// 将认证码存入SESSION
request.getSession().setAttribute("verifyCode", json);
System.out.println("session域中的值" + json);
return "success";
}
} catch (Exception e) {
e.printStackTrace();
}
return "error";
}

/**
* 手机注册发送短信
*/
@RequestMapping(value = "/sendSms", method = RequestMethod.POST)
@ResponseBody
public Object sendSms(HttpServletRequest request, String userPhone,
HttpServletResponse response) throws IOException,
ExecutionException, InterruptedException {
System.out.println("use" + userPhone);
response.setContentType("application/json; charset=UTF-8");
Object message = bookUserService.sendNote(request, userPhone, response);
return message;
}

 

/**
* 手机注册--db
*/
@RequestMapping(value = "/phoneRegister", method = RequestMethod.POST)
@ResponseBody
public String phoneRegister(HttpServletRequest request,
String userPassword, String userPhone, String verifyCode) {
int i = 0;
System.out.println(verifyCode);
JSONObject json = (JSONObject) request.getSession().getAttribute(
"verifyCode");
if (!json.getString("verifyCode").equals(verifyCode)) {
return "验证码错误";
}
if ((System.currentTimeMillis() - json.getLong("createTime")) > 1000 * 60 * 5) {
/* return "验证码过期"; */
return "验证码过期";
}
// 将用户信息存入数据库
BookUser bookUser = new BookUser();
bookUser.setUserPhone(userPhone);
bookUser.setUserPassword(userPassword);
i = bookUserService.register(bookUser);
System.out.println("------");
if (i != 0) {
return "success";
} else {
System.out.println("该用户已被注册");
return "fail";
}
}

 

 

 

学生作品记录:有不足之处,请多指教

以上内容是针对Java实现的一个短信验证真实功能,可以看看玩玩

转载于:https://www.cnblogs.com/yhm9/articles/11093214.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值