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; /** * 电信天翼短信验证码发送工具类.
* * 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"; /** * 发送短信验证码.
* @param userPhone * @param code 验证码.
* @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 paramsMap = new TreeMap(); 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 paramsMap1 = new TreeMap(); 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 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位验证码.
* @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(); } } }