梦网短信接入_阅览版

代码:java 目的:记录、梳理短信接入 分为:下行短信、上行短信、状态报告

下行:

	//1 Http请求参数:
	
	Map<String, Object> params = new HashMap<String, Object>();
	params.put("userId", smsIssuer.getAccount());
	params.put("password", smsIssuer.getPwd());
	params.put("pszMobis", mobileNos);
	if (object != null && object.containsKey("urlencode") && object.getBoolean("urlencode")) {
		params.put("pszMsg", URLEncoder.encode(smsInfo.getContent()));
	} else {
		params.put("pszMsg", (smsInfo.getContent()));
	}
	params.put("iMobiCount", mobiles.length);
	params.put("pszSubPort", "*");
	
	//2 将以上参数根据梦网接入的接口,发起Http POST请求至梦网URL

上行: //1 参数处理:自接收到梦网上行推送之后

	//需对帐号密码做校验
	String userName = request.get("userid");
	String passWord = request.get("pwd");
	String cmd = request.get("cmd");
	String seqid = request.get("seqid");
	String mos = request.get("mos");
	String[] mosArray = mos.split(",");
	List<SmsInfo> smsInfos = new ArrayList<SmsInfo>(mosArray.length);
	smsMerchantReceiveSmsResponse.setSmsInfos(smsInfos);

	if (mosArray != null && mosArray.length > 0) {
		for (String moss : mosArray) {
			try {
				String[] arr = moss.split("\\|");
				String moTime = arr[0];// 上行时间
				String moSeq = arr[1]; // 上行流水号
				String mobileNo = arr[2];// 手机号
				String upNo = arr[3];// 通道号
				String extNo = arr[4];// 扩展号
				String codeType = arr[5];// 上行信息编码
				String content = arr[6];// 上行信息内容

				if ("15".equals(codeType)) { // 15:GBK编码 8:UNICODE编码
					content = new String(Base64.decodeBase64(content), "GBK");
				} else if ("8".equals(codeType)) {
					content = decodeUnicode(content);
				}

				SmsInfo smsInfo = new SmsInfo();
				smsInfo.setContent(content);
				smsInfo.setMobileNo(mobileNo);
				smsInfo.setReportDate(DateUtils.parseDate(moTime, "yyyy-MM-dd HH:mm:ss"));
				smsInfo.setExtend("mos=" + moSeq + ",upn=" + upNo + ",exn=" + extNo + ",cot=" + codeType);

				smsInfos.add(smsInfo);
			} catch (Exception e) {
				logger.error("", e);
			} finally {
				logger.debug("receive-sms:" + moss);
			}
		}
	}
	//生成梦网响应串
	Map<String, String> params = new LinkedHashMap<String, String>();
	params.put("cmd", "MO_RESP");
	params.put("seqid", seqid);
	params.put("ret", "0");
	String responseData = generateMengwReturnString(params);

状态报告接收: //1 参数处理:自接收到梦网状态报告推送之后

	//需对帐号密码做校验
	String userName = request.get("userid");
	String passWord = request.get("pwd");
	String cmd = request.get("cmd");
	String seqid = request.get("seqid");
	String rpts = request.get("rpts");
	String[] rptsArray = rpts.split(",");
	List<SmsInfo> smsInfos = new ArrayList<SmsInfo>(rptsArray.length);
	smsMerchantSendReportResponse.setSmsInfos(smsInfos);
	if (rptsArray != null && rptsArray.length > 0) {
		for (String moss : rptsArray) {
			try {
				String[] arr = moss.split("\\|");
				String moTime = arr[0];// 状态报告时间
				String moSeq = arr[1];// 短信平台流水号
				String moSmsSeq = arr[2];// 自编流水号
				String mobileNo = arr[3];// 手机号
				String upNo = arr[4];// 通道号
				String extNo = arr[5];// 扩展号
				String state = arr[6];// 接收状态 0:成功 2:发送失败
				String errormsg = arr[7];// 7个字节错误码。DELIVRD为成功,其他为失败。

				SmsInfo smsInfo = new SmsInfo();
				// smsInfo.setMobileNo(mobileNo);
				smsInfo.setReportDate(DateUtils.parseDate(moTime, "yyyy-MM-dd HH:mm:ss"));
				smsInfo.setExtend("m=" + mobileNo + ",wns=" + moSmsSeq + ",upn=" + upNo + ",exn=" + extNo + ",em=" + errormsg + ",st=" + state);
				smsInfo.setMsgId(moSeq);
				smsInfo.setReportState("0".equals(state) ? errormsg : (state + "-" + errormsg));
				smsInfos.add(smsInfo);
			} catch (Exception e) {
				logger.error("", e);
			} finally {
				logger.debug("report-state:" + moss);
			}
		}
	}
	//生成梦网响应串
	Map<String, String> params = new LinkedHashMap<String, String>();
	params.put("cmd", "RPT_RESP");
	params.put("seqid", seqid);
	params.put("ret", "0");
	String responseData = generateMengwReturnString(params);

以上公共类定义:

		//SmsInfo 短信记录
		
		/*     */   private long id;
		/*     */   private long appId;
		/*     */   private String appIp;
		/*     */   private String appType;
		/*     */   private String clientIp;
		/*     */   private long issuerId;
		/*     */   private String type;
		/*     */   private String mobileNo;
		/*     */   private String content;
		/*     */   private String handleState;
		/*     */   private String msgId;
		/*     */   private int chargeCount;
		/*     */   private String reportState;
		/*     */   private Date reportDate;
		/*     */   private int reportCheckSt;
		/*     */   private Date create;
		/*     */   private String extend;
		/*     */   private boolean longMsg;
		/*     */   private int totalCount;
		/*     */   private int currentCount;
		/*     */   private String remoteIp;
		/*     */   private long actIssuerId;
		
		//SmsIssuer 短信运营商
		
		/*     */   private long id;
		/*     */   private String name;
		/*     */   private String account;
		/*     */   private String pwd;
		/*     */   private String seed;
		/*     */   private String signature;
		/*     */   private String smsSuffix;
		/*     */   private int priority;
		/*     */   private int probability;
		/*     */   private int support;
		/*     */   private String netType;
		/*     */   private String limitIp;
		/*     */   private String reportType;
		/*     */   private String balanceUrl;
		/*     */   private String balanceInfo;
		/*     */   private String reportUrl;
		/*     */   private String reportInfo;
		/*     */   private String upUrl;
		/*     */   private String upInfo;
		/*     */   private String downUrl;
		/*     */   private String downInfo;
		/*     */   private String state;
		/*     */   private Date create;
		/*     */   private Date update;
		/*     */   private String extend;

转载于:https://my.oschina.net/u/1985244/blog/3024642

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值