package cn.gistack.sm.sms.util;
|
|
import cn.com.flaginfo.sdk.cmc.api.ApiProvider;
|
import cn.com.flaginfo.sdk.cmc.api.request.ApiConfig;
|
import cn.com.flaginfo.sdk.cmc.api.result.ComResult;
|
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSAPI;
|
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult;
|
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest;
|
import cn.com.flaginfo.sdk.cmc.api.sms.reply.SMSReplyAPI;
|
import cn.com.flaginfo.sdk.cmc.api.sms.reply.SMSReplyDataResult;
|
import cn.com.flaginfo.sdk.cmc.api.sms.reply.SMSReplyRequest;
|
import cn.com.flaginfo.sdk.cmc.api.sms.replyconfirm.SMSReplyConfirmAPI;
|
import cn.com.flaginfo.sdk.cmc.api.sms.replyconfirm.SMSReplyConfirmRequest;
|
import cn.com.flaginfo.sdk.cmc.api.sms.report.SMSReportAPI;
|
import cn.com.flaginfo.sdk.cmc.api.sms.report.SMSReportRequest;
|
import cn.com.flaginfo.sdk.cmc.api.sms.report.SMSReportResult;
|
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSApi;
|
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult;
|
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
|
import cn.com.flaginfo.sdk.cmc.common.ApiEnum;
|
import cn.gistack.sm.sms.constant.SmsConstant;
|
import com.alibaba.fastjson.JSON;
|
import org.aspectj.lang.annotation.Before;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.PostConstruct;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Random;
|
|
import static cn.gistack.sm.sms.constant.SmsConstant.*;
|
|
@Component
|
public class SmsUtils {
|
|
/**
|
* 固定内容发送
|
*/
|
public static String sendMsg(SMSSendRequest sendRequest) {
|
ApiConfig apiConfig = new ApiConfig(SpCode, AppKey, AppSecret);
|
ApiProvider provider = ApiProvider.getInstance(apiConfig);
|
//请求接口
|
SMSApi api = (SMSApi) provider.getApi(ApiEnum.SENDSMS);
|
api.setRequestUrl(SmsConstant.HOST + SmsConstant.sendUrl);
|
//请求参数
|
sendRequest.setSerialNumber(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
|
ComResult<SMSSendDataResult> request = api.request(sendRequest);
|
// 返回
|
return JSON.toJSONString(request);
|
}
|
|
// public static void main(String[] args) {
|
// SMSSendRequest sendRequest = new SMSSendRequest();
|
// sendRequest.setMessageContent("你有一项编号为12349的事务需要处理;");
|
// sendRequest.setTemplateId("2431012234034");
|
// sendRequest.setUserNumber("15170720695");
|
// String s = sendMsg(sendRequest);
|
// System.out.println("s = " + s);
|
// }
|
|
/**
|
* 获取随机字符串
|
* @return
|
*/
|
public static String getRandNumber() {
|
// 计算token
|
// Date date = new Date();
|
// String dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(date);
|
Random random = new Random();
|
//把随机生成的数字转成字符串
|
String str = String.valueOf(random.nextInt(9));
|
for (int i = 0; i < 5; i++) {
|
str += random.nextInt(9);
|
}
|
return String.valueOf(System.currentTimeMillis()) + str;
|
}
|
|
/**
|
* 动态短信内容批量发送
|
*/
|
public static String dynSendMethod(DynSMSSendRequest sendRequest) {
|
ApiConfig apiConfig = new ApiConfig(SpCode, AppKey, AppSecret);
|
ApiProvider provider = ApiProvider.getInstance(apiConfig);
|
//请求接口
|
DynSMSAPI api = (DynSMSAPI) provider.getApi(ApiEnum.SENDDYNSMS);
|
api.setRequestUrl(SmsConstant.HOST + SmsConstant.sendVarUrl);
|
//请求参数
|
// sendRequest.setDynData(new String[][]{{"手机号码", "编号"}, {"13000000000", "456"}});
|
sendRequest.setSerialNumber(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
|
ComResult<DynSMSSendDataResult> result = api.request(sendRequest);
|
return JSON.toJSONString(result);
|
}
|
|
/**
|
* 状态报告
|
*/
|
// public void testReportMethod() {
|
// //请求接口
|
// SMSReportAPI api = (SMSReportAPI) provider.getApi(ApiEnum.REPORTSMS);
|
// api.setRequestUrl(SmsConstant.HOST + "/info/sms/report");
|
// //请求
|
// ComResult<List<SMSReportResult>> result = api.request(new SMSReportRequest());
|
// List<SMSReportResult> data = result.getData();
|
// if (data.size() > 0) {
|
// System.out.println(data.get(0).getResult());
|
// }
|
// System.out.println(JSON.toJSONString(data));
|
// System.out.println(JSON.toJSONString(result));
|
//
|
// }
|
|
/**
|
* 上行回复查询
|
*/
|
// public void testReplyMethod() {
|
// //请求接口
|
// SMSReplyAPI api = (SMSReplyAPI) provider.getApi(ApiEnum.REPLYSMS);
|
// api.setRequestUrl(SmsConstant.HOST + "/info/sms/reply/query");
|
// SMSReplyRequest smsReplyRequest = new SMSReplyRequest();
|
// //请求
|
// ComResult<SMSReplyDataResult> result = api.request(smsReplyRequest);
|
// System.out.println(result.getData().getMaxId());
|
// if (result.getData().getApiSmsReplyBoList() != null && result.getData().getApiSmsReplyBoList().size() > 0) {
|
// System.out.println(result.getData().getApiSmsReplyBoList().get(0).getContent());
|
// }
|
// System.out.println(JSON.toJSONString(result));
|
// }
|
|
/**
|
* 上行回复查询数据收到确认
|
*/
|
// public void testReplyConfirmMethod() {
|
// //请求接口
|
// SMSReplyConfirmAPI api = (SMSReplyConfirmAPI) provider.getApi(ApiEnum.REPLYSMSCONFIRM);
|
// //请求Url
|
// SMSReplyConfirmRequest req = new SMSReplyConfirmRequest();
|
// api.setRequestUrl(SmsConstant.HOST + "/info/sms/reply/confirm");
|
// req.setMaxId("10110572149");
|
// ComResult request = api.request(req);
|
// System.out.println(request.isSucc());
|
// System.out.println(JSON.toJSONString(request));
|
// }
|
}
|