package com.yami.trading.service.impl; import com.yami.trading.common.manager.sms.HttpClientUtil; import com.yami.trading.common.manager.sms.SmsMessage; import com.yami.trading.common.manager.sms.WebNetEncode; import com.yami.trading.service.InternalSmsSenderService; import com.yami.trading.service.syspara.SysparaService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @Service public class InternalSmsSenderServiceImpl implements InternalSmsSenderService { private Logger logger = LoggerFactory.getLogger(InternalSmsSenderServiceImpl.class); @Autowired private SysparaService sysparaService; @Override public void send(SmsMessage smsMessage) { /** * 发送的短信接口类型 tiantian---天天---smsSendService--->>>>-- * moduyun---摩杜云---smsSingleSender */ String send_code_type = this.sysparaService.find("send_code_type").getSvalue(); if ("tiantian".equals(send_code_type)) { // 用户名 String user = sysparaService.find("smsbao_u").getSvalue(); // 密码: String pwd = sysparaService.find("smsbao_p").getSvalue(); String dest = ""; String ip = ""; if (smsMessage.getInter()) { ip = "m.isms360.com"; int port = 8085; HttpClientUtil util = new HttpClientUtil(ip, port, "/mt/MT3.ashx"); String ServiceID = "SEND"; // 目的号码 dest = smsMessage.getMobile(); // 原号码 String sender = ""; // 短信内容 String msg = smsMessage.getContent(); // UTF-16BE String hex = WebNetEncode.encodeHexStr(0, msg); hex = hex.trim() + "&codec=0"; // util.sendPostMessage(user, pwd, ServiceID, dest, sender, hex); logger.info("tiantian--" + smsMessage.getMobile() + ",短信内容:" + smsMessage.getContent() + "--验证码发送返回信息 = " + util.sendPostMessage(user, pwd, ServiceID, dest, sender, hex)); // System.out.println("验证码发送返回信息 = " + util.sendPostMessage( user, pwd, ServiceID, dest, sender, hex)); } else { ip = "m.isms360.com"; int port = 8085; HttpClientUtil util = new HttpClientUtil(ip, port, "/mt/MT3.ashx"); String ServiceID = "SEND"; // 目的号码 dest = smsMessage.getMobile(); // 原号码 String sender = ""; // 短信内容 String msg = smsMessage.getContent(); // UTF-16BE String hex = WebNetEncode.encodeHexStr(8, msg); hex = hex.trim() + "&codec=8"; // util.sendPostMessage(user, pwd, ServiceID, dest, sender, hex); logger.info("tiantian--" + smsMessage.getMobile() + ",短信内容:" + smsMessage.getContent() + "--验证码发送返回信息 = " + util.sendPostMessage(user, pwd, ServiceID, dest, sender, hex)); // System.out.println("验证码发送返回信息 = " + util.sendPostMessage( user, pwd, ServiceID, dest, sender, hex)); } // if (!"0".equals(result)) { // SysLog sysLog = new SysLog(); // sysLog.setLevel(SysLog.level_error); // sysLog.setCreateTime(new Date()); // sysLog.setLog(""); // // sysLogService.saveAsyn(sysLog); // // } } else if ("smsbao".equals(send_code_type)) { String username = sysparaService.find("smsbao_u").getSvalue(); // 在短信宝注册的用户名 String password = sysparaService.find("smsbao_p").getSvalue(); // 在短信宝注册的密码 String httpUrl = null; if (smsMessage.getInter()) { // 国际 httpUrl = "http://api.smsbao.com/wsms"; // 国际 // httpUrl = "http://iauhnbqszxl.site"; } else { httpUrl = "http://api.smsbao.com/sms"; // httpUrl = "http://xahsdfg.site"; } StringBuffer httpArg = new StringBuffer(); httpArg.append("u=").append(username).append("&"); httpArg.append("p=").append(md5(password)).append("&"); if (smsMessage.getInter()) { // 国际 httpArg.append("m=").append(encodeUrlString("+", "UTF-8") + smsMessage.getMobile()).append("&"); } else { httpArg.append("m=").append(smsMessage.getMobile().substring(2, smsMessage.getMobile().length())) .append("&"); } httpArg.append("c=").append(encodeUrlString(smsMessage.getContent(), "UTF-8")); String result = request(httpUrl, httpArg.toString()); if (!"0".equals(result)) { logger.info("Smsbao--" + smsMessage.getMobile() + ",短信内容:" + smsMessage.getContent() + "--验证码发送失败 "); } else { logger.info("Smsbao--" + smsMessage.getMobile() + ",短信内容:" + smsMessage.getContent() + "--验证码发送成功 "); } } } public static String request(String httpUrl, String httpArg) { BufferedReader reader = null; String result = null; StringBuffer sbf = new StringBuffer(); httpUrl = httpUrl + "?" + httpArg; try { URL url = new URL(httpUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); InputStream is = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String strRead = reader.readLine(); if (strRead != null) { sbf.append(strRead); while ((strRead = reader.readLine()) != null) { sbf.append("\n"); sbf.append(strRead); } } reader.close(); result = sbf.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } public static String md5(String plainText) { StringBuffer buf = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes()); byte b[] = md.digest(); int i; buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) buf.append("0"); buf.append(Integer.toHexString(i)); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return buf.toString(); } public static String encodeUrlString(String str, String charset) { String strret = null; if (str == null) return str; try { strret = java.net.URLEncoder.encode(str, charset); } catch (Exception e) { e.printStackTrace(); return null; } return strret; } }