MessageCodeUtil.java
5.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package com.rnt.utils;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.TreeMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONObject;
import open189.sign.ParamsSign;
/**
* 电信天翼短信验证码发送工具类.<br/>
*
* Copyright: Copyright (c) 2017 zteits
*
* @ClassName: MessageCodeUtil.java
* @Description:
* @version: v1.0.0
* @author: wangfs
* @date: 2017年6月5日 下午2:12:42
* Modification History:
* Date Author Version Description
*---------------------------------------------------------*
* 2017年6月5日 wangfs v1.0.0 创建
*/
public class MessageCodeUtil {
private static final Logger logger = LoggerFactory.getLogger(MessageCodeUtil.class);
/**应用ID app_id.*/
private static String app_id = "484862610000244722";
/**密钥.*/
private static String app_secret = "753fee09d4714b317adafd42ca7b4f82";
/**回调接口.*/
private static String receivedUrl = "http://61.177.139.228:18976/codeReceive";
/**发送令牌地址 ACCESS_TOKEN_URL.*/
private static String ACCESS_TOKEN_URL = "https://oauth.api.189.cn/emp/oauth2/v3/access_token";
/**
* 发送短信验证码.<br/>
* @param userPhone
* @param code 验证码.<br/>
* @return
* @throws Exception
*/
public static String sendSms(String userPhone,String randcode) throws Exception {
//获取令牌access_token
String access_token=getAccessToken();
logger.debug("获取到的令牌access_token ======"+access_token);
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String timestamp = dateFormat.format(date);
System.err.println(timestamp);
TreeMap<String, String> paramsMap = new TreeMap<String, String>();
paramsMap.put("app_id", app_id);
paramsMap.put("access_token", access_token);
paramsMap.put("timestamp", timestamp);
//获取信任码token
String token=getToken(access_token,timestamp,paramsMap);
TreeMap<String, String> paramsMap1 = new TreeMap<String, String>();
paramsMap1.put("app_id", app_id);
paramsMap1.put("access_token", access_token);
paramsMap1.put("timestamp", timestamp);
paramsMap1.put("token", token);
paramsMap1.put("url", receivedUrl);
paramsMap1.put("phone", userPhone);
paramsMap1.put("randcode", randcode);
paramsMap1.put("exp_time", "5");
//String postUrl = "http://api.189.cn/v2/dm/randcode/send";
String postUrl = "http://api.189.cn/v2/dm/randcode/sendSms";
String postEntity = "app_id="+ app_id
+ "&access_token=" + access_token
+ "×tamp=" + timestamp
+"&token=" + token
+"&randcode="+randcode
+ "&phone=" + userPhone
+ "&url=" + receivedUrl
+ "&exp_time=" + "5"
+ "&sign="+ParamsSign.value(paramsMap1, app_secret);
String resJson = HttpInvokerUtil.httpPost(postUrl,null,postEntity);
return resJson;
}
/**
* 获取短信发送令牌
* @return
*/
private static String getAccessToken(){
String postEntity = "app_id=" + app_id
+"&app_secret="+app_secret + "&grant_type=client_credentials&state=0&scope=";
String result= "";
String access_token="";
try {
result = HttpInvokerUtil.httpPost(ACCESS_TOKEN_URL,null,postEntity);
access_token=JSONObject.parseObject(result).getString("access_token");
} catch (IOException e) {
e.printStackTrace();
}
return access_token;
}
/**
* 获取短信发送信任码
* @return
*/
private static String getToken(String access_token,String timestamp,TreeMap<String, String> paramsMap){
String getUrl = "http://api.189.cn/v2/dm/randcode/token?app_id=" + app_id
+ "&access_token=" + access_token + "×tamp="+timestamp + "&sign="+ ParamsSign.value(paramsMap, app_secret);
String resJson = "";
String token="";
try {
resJson = HttpInvokerUtil.httpGet(getUrl,null);
token=JSONObject.parseObject(resJson).getString("token");
logger.debug("获取到的信任码token ======"+token);
} catch (IOException e) {
e.printStackTrace();
}
return token;
}
/**
* 生成6位验证码.<br/>
* @return
*/
public static String createCode() {
//int code=(int)(Math.random()*9000+100000);
Random random = new Random();
String code = random.nextInt(1000000)+1000000+"";
return code.substring(1);
}
public static void main(String[] args) {
String randcode=String.valueOf((int)(Math.random()*9000+100000));
System.out.println("验证码="+randcode);
try {
System.out.println(sendSms("18633483823",randcode));
} catch (Exception e) {
e.printStackTrace();
}
}
}