MsgUtil.java 6.89 KB
package com.topdraw.util;

/*
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.UUID;

import org.afflatus.utility.AppConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.aliyun.mns.client.CloudAccount;
import com.aliyun.mns.client.CloudTopic;
import com.aliyun.mns.client.MNSClient;
import com.aliyun.mns.common.ServiceException;
import com.aliyun.mns.model.BatchSmsAttributes;
import com.aliyun.mns.model.MessageAttributes;
import com.aliyun.mns.model.RawTopicMessage;
import com.aliyun.mns.model.TopicMessage;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
*/

public class MsgUtil {

//	private static Logger log = LoggerFactory.getLogger(MsgUtil.class.getName());

/*	private static final String ACCESSID = AppConfiguration.get("MESSAGE.ACCESSID");
	private static final String ACCESSKEY = AppConfiguration.get("MESSAGE.ACCESSKEY");
	private static final String MNSENDPOINT = AppConfiguration.get("MESSAGE.MNSENDPOINT");
	private static final String TOPIC = AppConfiguration.get("MESSAGE.TOPIC");
	private static final String SIGNNAME = AppConfiguration.get("MESSAGE.SIGNNAME");
	private static final String TEMPLATECODE = AppConfiguration.get("MESSAGE.TEMPLATECODE");
	private static final String REGION = AppConfiguration.get("MESSAGE.REGION");

	public static String generateVerifyCodeAndSend(String verifyKey, String phone) {
		String verifyCode;
		try {
			verifyCode = getRandom(4);
		} catch (NoSuchAlgorithmException e) {
			verifyCode = "8673";
		}
		// sendMsg(phone, ":" + verifyCode + ",序号:" + verifyKey);
		sendMsg2(phone, verifyCode);
		return verifyCode;
	}*/

	public static void sendMsg(String phone, String verifyCode) {
		/**
		 * Step 1. 获取主题引用
		 */
		/*CloudAccount account = new CloudAccount(ACCESSID, ACCESSKEY, MNSENDPOINT);
		MNSClient client = account.getMNSClient();
		CloudTopic topic = client.getTopicRef(TOPIC);*/
		/**
		 * Step 2. 设置SMS消息体(必须)
		 *
		 * 注:目前暂时不支持消息内容为空,需要指定消息内容,不为空即可。
		 */
		/*RawTopicMessage msg = new RawTopicMessage();
		msg.setMessageBody("sms-message");*/
		/**
		 * Step 3. 生成SMS消息属性
		 */
		/*MessageAttributes messageAttributes = new MessageAttributes();
		BatchSmsAttributes batchSmsAttributes = new BatchSmsAttributes();
		// 3.1 设置发送短信的签名(SMSSignName)
		batchSmsAttributes.setFreeSignName(SIGNNAME);
		// 3.2 设置发送短信使用的模板(SMSTempateCode)
		batchSmsAttributes.setTemplateCode(TEMPLATECODE);
		// 3.3 设置发送短信所使用的模板中参数对应的值(在短信模板中定义的,没有可以不用设置)
		BatchSmsAttributes.SmsReceiverParams smsReceiverParams = new BatchSmsAttributes.SmsReceiverParams();
		smsReceiverParams.setParam("code", verifyCode);
		// 3.4 增加接收短信的号码
		batchSmsAttributes.addSmsReceiver(phone, smsReceiverParams);
		messageAttributes.setBatchSmsAttributes(batchSmsAttributes);*/
//		try {
			/**
			 * Step 4. 发布SMS消息
			 */
			/*TopicMessage ret = topic.publishMessage(msg, messageAttributes);
			log.info("sendMsg | MessageId: " + ret.getMessageId() + " MessageMD5: " + ret.getMessageBodyMD5());
		} catch (ServiceException se) {
			System.out.println(se.getErrorCode() + se.getRequestId());
			System.out.println(se.getMessage());
			se.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			client.close();
		}*/
	}

	public static void sendMsg2(String phone, String verifyCode) {
		/*
		try {
			// 设置超时时间-可自行调整
			System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
			System.setProperty("sun.net.client.defaultReadTimeout", "10000");
			// 初始化ascClient需要的几个参数
			final String product = "Dysmsapi";// 短信API产品名称(短信产品名固定,无需修改)
			final String domain = "dysmsapi.aliyuncs.com";// 短信API产品域名(接口地址固定,无需修改)
			// 替换成你的AK
			final String accessKeyId = ACCESSID;// 你的accessKeyId,参考本文档步骤2
			final String accessKeySecret = ACCESSKEY;// 你的accessKeySecret,参考本文档步骤2
			// 初始化ascClient,暂时不支持多region(请勿修改)
			IClientProfile profile = DefaultProfile.getProfile(REGION, accessKeyId, accessKeySecret);
			DefaultProfile.addEndpoint(REGION, REGION, product, domain);
			IAcsClient acsClient = new DefaultAcsClient(profile);
			// 组装请求对象
			SendSmsRequest request = new SendSmsRequest();
			// 使用post提交
			request.setMethod(MethodType.POST);
			// 必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
			request.setPhoneNumbers(phone);
			// 必填:短信签名-可在短信控制台中找到
			request.setSignName(SIGNNAME);
			// 必填:短信模板-可在短信控制台中找到
			request.setTemplateCode(TEMPLATECODE);
			// 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
			// 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
			request.setTemplateParam("{\"code\":\"" + verifyCode + "\"}");
			// 可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
			// request.setSmsUpExtendCode("90997");
			// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
			request.setOutId(UUID.randomUUID().toString().replaceAll("-", ""));
			// 请求失败这里会抛ClientException异常
			SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
			if (null != sendSmsResponse) {
				log.info("sendMsg | RequestId: " + sendSmsResponse.getRequestId() + " Code: "
						+ sendSmsResponse.getCode() + " Message: " + sendSmsResponse.getMessage());
			}
			if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
				// 请求成功
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {

		}
		*/

	}

	/*public static String getRandom(int count) throws NoSuchAlgorithmException {
		StringBuilder sb = new StringBuilder();
		String str = "0123456789";
		SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
		for (int i = 0; i < count; i++) {
			int num = sr.nextInt(str.length());
			sb.append(str.charAt(num));
			str = str.replace(("" + str.charAt(num)), "");
		}
		return sb.toString();
	}
*/
}