package smsbao.internal;
|
|
import java.io.BufferedReader;
|
import java.io.InputStream;
|
import java.io.InputStreamReader;
|
import java.io.OutputStreamWriter;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
import java.net.URLEncoder;
|
import java.security.MessageDigest;
|
import java.security.NoSuchAlgorithmException;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import project.log.SysLogService;
|
import project.syspara.SysparaService;
|
import smsbao.sender.SmsMessage;
|
|
public class InternalSmsSenderServiceImpl implements InternalSmsSenderService {
|
private Logger logger = LoggerFactory.getLogger(InternalSmsSenderServiceImpl.class);
|
private SysparaService sysparaService;
|
|
private SysLogService sysLogService;
|
|
@Override
|
public void send(SmsMessage smsMessage) {
|
|
/**
|
* 发送的短信接口类型 tiantian---天天---smsSendService--->>>>--
|
* moduyun---摩杜云---smsSingleSender
|
*/
|
String send_code_type = this.sysparaService.find("send_code_type").getValue();
|
logger.info("开始发送短信参数:"+smsMessage.getMobile()+"----"+smsMessage.getContent());
|
if ("tiantian".equals(send_code_type)) {
|
// 用户名
|
String user = sysparaService.find("smsbao_u").getValue();
|
|
// 密码:
|
String pwd = sysparaService.find("smsbao_p").getValue();
|
|
String dest = "";
|
String ip = "";
|
if (smsMessage.getInter()) {
|
|
ip = "210.51.190.232";
|
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 = "210.51.190.233";
|
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").getValue(); // 在短信宝注册的用户名
|
String password = sysparaService.find("smsbao_p").getValue(); // 在短信宝注册的密码
|
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() + "--验证码发送成功 ");
|
}
|
|
}else if ("smsgj".equals(send_code_type)) {
|
logger.info("开始发送短信【国际】:"+smsMessage.getMobile()+"----"+smsMessage.getContent());
|
String urlString = "http://190.92.241.43:9090/sms/batch/v2";
|
String appKey = "EKUPl0";
|
String appSecret = "m4O6gU";
|
String appcode = "1000";
|
String phone = smsMessage.getMobile();
|
String message = smsMessage.getContent();
|
|
try {
|
String response = sendPostRequest(urlString, appKey, appSecret, phone, message, appcode);
|
logger.info("发送短信返回状态:"+response);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|
|
public static String sendPostRequest(String urlString, String appKey, String appSecret, String phone, String message, String appcode) throws Exception {
|
URL url = new URL(urlString);
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
|
// 设置请求方法为POST
|
connection.setRequestMethod("POST");
|
connection.setDoOutput(true);
|
|
// 构造请求参数
|
StringBuilder postData = new StringBuilder();
|
postData.append("appkey=").append(URLEncoder.encode(appKey, "UTF-8"));
|
postData.append("&appsecret=").append(URLEncoder.encode(appSecret, "UTF-8"));
|
postData.append("&phone=").append(URLEncoder.encode(phone, "UTF-8"));
|
postData.append("&msg=").append(URLEncoder.encode(message, "UTF-8"));
|
postData.append("&appcode=").append(URLEncoder.encode(appcode, "UTF-8"));
|
|
// 发送请求
|
try (OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream())) {
|
writer.write(postData.toString());
|
writer.flush();
|
}
|
|
// 读取响应
|
StringBuilder response = new StringBuilder();
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
|
String line;
|
while ((line = reader.readLine()) != null) {
|
response.append(line);
|
}
|
}
|
|
return response.toString();
|
}
|
|
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;
|
}
|
|
public void setSysparaService(SysparaService sysparaService) {
|
this.sysparaService = sysparaService;
|
}
|
|
public void setSysLogService(SysLogService sysLogService) {
|
this.sysLogService = sysLogService;
|
}
|
|
}
|