java實現傳送簡訊的模板
不單單隻發驗證碼:123456 ;需要加一些傳送方的資訊,
譬如:驗證碼:123456,尊敬的會員,您正在使用手機號更換服務[驗證碼告知他人將導致賬號被盜,請勿洩露]【中國銀行】。
上面簡訊介面提供商只提供我們123456 這時需要新增相關模板,還有其他場景需要傳送簡訊,不同場景所對應的模板是不一樣的
結合我實際專案中的例子,記錄下簡訊模板的開發
Java方法:
public Map<String, Object> getMessage(MessageTypeBean messageTypeBean) throws Exception { Map<String, Object> map = new HashMap<String, Object>(); try { if(StringUtil.isEmpty(messageTypeBean)){ throw new MessageException("傳送簡訊請求引數為空!"); } MemberInfoBean memberInfoBean = null; MessageUserBean messageUserBean = null; //簡訊資訊 String message = ""; //驗證碼 String verCode = String.valueOf((int) ((Math.random() * 9 + 1) * 100000)); //簡訊內容型別 int authCodeType = messageTypeBean.getAuthCodeType(); //商戶名稱 String merchName = messageTypeBean.getMerchName(); //商戶號 String merchNo = messageTypeBean.getMerchNo(); //會員編號 String memberNo = messageTypeBean.getMemberNo(); //會員手機號 String phone = messageTypeBean.getPhone(); //消費金額 String tranAmount = messageTypeBean.getTranAmount(); //門店名稱 String storeName = messageTypeBean.getStoreName(); //門店聯絡電話 String telephone = messageTypeBean.getTelephone(); //調整方式 String adjustType = messageTypeBean.getAdjustType(); //調整金額 String adjustNum = null; if(!StringUtil.isEmpty(messageTypeBean.getAdjustNum())){ adjustNum = messageTypeBean.getAdjustNum().toString(); } //調整後積分值 String afterPoint = null; if(!StringUtil.isEmpty(messageTypeBean.getAfterPoint())){ afterPoint = messageTypeBean.getAfterPoint().toString(); } //調整後的金額 String afterAmount = null; if(!StringUtil.isEmpty(messageTypeBean.getAfterAmount())){ afterAmount = messageTypeBean.getAfterAmount().toString(); } //充值金額 String rechargeAmount = null; if(!StringUtil.isEmpty(messageTypeBean.getRechargeAmount())){ rechargeAmount = messageTypeBean.getRechargeAmount().toString(); } //通知剩餘金額 String availableAmount = null; if(!StringUtil.isEmpty(messageTypeBean.getAvailableAmount())){ availableAmount = messageTypeBean.getAvailableAmount().toString(); } MessageRecordBean messageRecordBean = new MessageRecordBean(); logger.info("根據會員編號手機號獲取簡訊"); if (StringUtil.isEmpty(merchNo)) { throw new MessageException("您的商戶號不正確!"); } if (StringUtil.isEmpty(memberNo)) { throw new MessageException("您的會員卡號不正確!"); } if (StringUtil.isEmpty(phone)) { throw new MessageException("您還未輸入手機號,請輸入手機號!"); } // 正則表示式判斷手機號碼是否符合 if (!Pattern.matches(REGEX_MOBILE, phone)) { logger.info("手機號碼輸入有誤!"); throw new MessageException("您的手機號輸入有問題,請重新輸入!"); } MemberInfoBean paramMemberInfo = new MemberInfoBean(); paramMemberInfo.setMerchNo(merchNo); paramMemberInfo.setMemberNo(memberNo); memberInfoBean = memberDao.getMemberInfoSelective(paramMemberInfo); if(StringUtil.isEmpty(memberInfoBean) || StringUtil.isEmpty(memberInfoBean.getMerchNo())){ throw new MessageException("您還未註冊會員,請先註冊成為會員"); }else{ //判斷會員是否已經被鎖定 if (Constant.MEMBER_STATUS_LOCKED .equals(memberInfoBean.getStatus())) { logger.info("會員鎖定狀態不能修改手機號"); throw new MessageException("會員已鎖定,暫不能傳送驗證碼"); } //修改手機號判斷是否已經存在該會員 if (Constant.AUTHCODETYPE_CHANGE == authCodeType) { MemberInfoBean validateMemberInfo = new MemberInfoBean(); validateMemberInfo.setMerchNo(merchNo); validateMemberInfo.setPhone(phone); validateMemberInfo = memberDao.getMemberInfoSelective(validateMemberInfo); if (!StringUtil.isEmpty(validateMemberInfo)) { throw new MessageException("該手機號碼已是會員!"); } //簡訊內容 message = MessageInfoUtils.getMessageForCHANGE(verCode,merchName); } //新增會員 if (Constant.AUTHCODETYPE_ADD == authCodeType) { message = MessageInfoUtils.getMessageForADD(merchName); } //會員儲值消費 if (Constant.AUTHCODETYPE_CONSUME == authCodeType) { message = MessageInfoUtils.getMessageForCONSUME(phone, tranAmount, storeName, telephone); } //積分調整 if (Constant.AUTHCODETYPE_POINT_ADJUST == authCodeType) { message = MessageInfoUtils.getMessageForPOINTADJUST(adjustType,adjustNum,afterPoint,storeName,telephone); } //餘額調整 if (Constant.AUTHCODETYPE_BALANCE_ADJUST == authCodeType) { message = MessageInfoUtils.getMessageForBALANCEADJUST(adjustType, adjustNum,afterAmount,storeName,telephone); } //充值 if (Constant.AUTHCODETYPE_RECHARGE == authCodeType) { message = MessageInfoUtils.getMessageForRECHARGE(rechargeAmount, availableAmount, storeName, telephone); } messageUserBean = memberDao.getMessageUser(memberInfoBean.getMerchNo()); if(StringUtil.isEmpty(messageUserBean) || StringUtil.isEmpty(messageUserBean.getAccount()) || StringUtil.isEmpty(messageUserBean.getPassword())){ throw new MessageException("簡訊傳送失敗啦,請重試"); } String account = messageUserBean.getAccount(); String password = messageUserBean.getPassword(); /* password =DesUtil.decrypt(password); */ String result = MessageValidateUtils.getMessage(configProperties.getMessageUrl(), account, password, phone, message); if (result == null) { throw new MessageException("簡訊傳送失敗啦,請重試"); } if ("0".equals(result)) { //如果是傳送的驗證碼需要存redis;如果是通知,則不需要存 if(Constant.AUTHCODETYPE_RECHARGE == authCodeType){ RedisUtils.set(merchNo + phone + authCodeType, message); } logger.info("簡訊訊息傳送成功!"); messageRecordBean.setStoreNo(memberInfoBean.getStoreNo()); messageRecordBean.setPlatformName(messageUserBean.getPlatformName()); messageRecordBean.setMobile(phone); messageRecordBean.setContent(message); messageRecordBean.setStatus(1); messageRecordBean.setSendTime(DateUtils.getCurrentDateString()); memberDao.saveMessageRecord(messageRecordBean); map.put("result", true); } else { logger.info("簡訊訊息傳送失敗! status: " + result); messageRecordBean.setStoreNo(memberInfoBean.getStoreNo()); messageRecordBean.setPlatformName(messageUserBean.getPlatformName()); messageRecordBean.setMobile(phone); messageRecordBean.setContent(message); messageRecordBean.setStatus(2); messageRecordBean.setSendTime(DateUtils.getCurrentDateString()); memberDao.saveMessageRecord(messageRecordBean); map.put("result", false); map.put("exception", "簡訊傳送失敗,請稍後重試"); } } } catch (MessageException e) { logger.error("傳送簡訊異常:" + e.getMessage()); map.put("exception", e.getMessage()); return map; } catch (Exception e) { logger.error("傳送簡訊異常:" + e.getMessage()); map.put("exception", "簡訊傳送失敗,請稍後重試"); return map; } return map; }
說明:不同的場景對應不同的message,將只有需要傳送驗證碼的存入redis裡用於下一次驗證,只是通知簡訊則不需要
MessageTypeBean 欄位略過
常量:
/** 更換/繫結手機號 */ public static final Integer AUTHCODETYPE_MOD = 1; /** 付款 */ public static final Integer AUTHCODETYPE_PAY = 2; /** 新增會員 */ public static final Integer AUTHCODETYPE_ADD = 3; /** 會員儲值消費 */ public static final Integer AUTHCODETYPE_CONSUME = 4; /** 更換手機號 */ public static final Integer AUTHCODETYPE_CHANGE = 5; /** 積分調整 */ public static final Integer AUTHCODETYPE_POINT_ADJUST = 6; /** 餘額調整 */ public static final Integer AUTHCODETYPE_BALANCE_ADJUST = 7; /** 充值 */ public static final Integer AUTHCODETYPE_RECHARGE = 8;
模板util類:
package common.anmav.utils; public class MessageInfoUtils { /** * 新增會員 */ public static final String MESSAGE_TEMPLETE_ADD = "恭喜您開通%s會員,關注微信公眾號將有更多驚喜哦。【%s】"; /** * 會員儲值消費 */ public static final String MESSAGE_TEMPLETE_CONSUME = "%s會員,您使用會員儲值支付%s元,如非本人操作請聯絡【%s】%s。"; /** * 更換手機號 */ public static final String MESSAGE_TEMPLETE_CHANGE = "驗證碼:%s,尊敬的會員,您正在使用手機號更換服務[驗證碼告知他人將導致賬號被盜,請勿洩露]【%s】。"; /** * 積分調整 */ public static final String MESSAGE_TEMPLETE_POINT_ADJUST = "您的積分%s%s積分,調整後積分為:%s分,如有疑問請致電%s【%s】"; /** * 餘額調整 */ public static final String MESSAGE_TEMPLETE_BALANCE_ADJUST = "您的餘額%s%s元,調整後儲值餘額為:%s元,如有疑問請致電%s【%s】"; /** * 充值 */ public static final String MESSAGE_TEMPLETE_RECHARGE = "您已充值%s元,充值後儲值餘額為:%s元,如有疑問請致電%s【%s】"; /** * 新增會員 */ public static String getMessageForADD(String merchName){ return String.format(MESSAGE_TEMPLETE_ADD, merchName); } /** * 會員儲值消費 */ public static String getMessageForCONSUME(String phone,String tranAmount,String storeName,String telephone){ return String.format(MESSAGE_TEMPLETE_CONSUME, phone, tranAmount, storeName, telephone); } /** * 更換手機號 */ public static String getMessageForCHANGE(String verCode,String merchName){ return String.format(MESSAGE_TEMPLETE_CHANGE, verCode, merchName); } /** * 積分調整 */ public static String getMessageForPOINTADJUST(String adjustType,String adjustNum,String afterPoint,String storeName,String telephone){ return String.format(MESSAGE_TEMPLETE_POINT_ADJUST, adjustType, adjustNum,afterPoint,storeName,telephone); } /** * 餘額調整 */ public static String getMessageForBALANCEADJUST(String adjustType,String adjustNum,String afterAmount,String storeName,String telephone){ return String.format(MESSAGE_TEMPLETE_BALANCE_ADJUST, adjustType, adjustNum,afterAmount,storeName,telephone); } /** * 充值 */ public static String getMessageForRECHARGE(String rechargeAmount,String availableAmount,String storeName,String telephone){ return String.format(MESSAGE_TEMPLETE_RECHARGE, rechargeAmount, availableAmount, storeName, telephone); } }
說明:主要是利用了Sring.format()的方法
相關推薦
java實現傳送簡訊的模板
不單單隻發驗證碼:123456 ;需要加一些傳送方的資訊, 譬如:驗證碼:123456,尊敬的會員,您正在使用手機號更換服務[驗證碼告知他人將導致賬號被盜,請勿洩露]【中國銀行】。 上面簡訊介面提供商只提供我們123456 這時需要新增相關模板,還有其他場景需要傳送簡訊,
java實現傳送簡訊功能
1、在阿里雲簡訊服務中添加簽名 2、在阿里雲簡訊服務中新增模板 3、建立屬於自己的AccessKey ID和Access Key Secret 4、需要下載兩個jar包 &nb
java 實現傳送簡訊驗證碼功能
如何使用java + maven的專案環境傳送簡訊驗證碼,本文使用的是榛子云簡訊 的介面。 1. 安裝sdk 下載地址: http://smsow.zhenzikj.com/doc/sdk.html 下載下來是jar檔案,需要將jar釋出到本地的maven倉庫中, 在c
關於用Java實現傳送簡訊(部分程式碼來源於網路)
第一步: 訪問中國網建SMS簡訊通網頁註冊賬號。儲存金鑰。 第二步:編碼實現 編寫JavaBean,定義變數phonenumber,生成get/set方法 建立介面 //傳送簡訊 void send(Player player) throws Exception; //實現
java 實現傳送簡訊驗證碼(網易雲)
連結:https://pan.baidu.com/s/1saRmzciNQWpFxHJRN0ISTg 密碼:siyt 實現傳送驗證碼的工程下載 1、我們開啟這個工程,檢視其中的程式碼 package com.ghj.test; import java.io.IOExce
JAVA實現 【簡訊傳送】 功能
1:新建maven工程 2:開通騰訊雲的簡訊服務功能,新增應用。 3:配置簡訊簽名、簡訊正文模板,並稽核通過(為了方便我就用微信公眾號) 4:添加發送簡訊引用的騰訊雲jar包 <dependency> <groupId>co
java後臺呼叫簡訊介面,實現傳送簡訊驗證碼的控制層實現
1.設計:使用者填寫手機號,點選獲取驗證碼按鈕,controller層獲得所要傳送驗證碼的手機號,隨機生成六位數的驗證碼。呼叫傳送簡訊介面url向此手機號傳送驗證碼。注意:下面的程式碼採用的是雲信使的簡訊驗證碼介面,不同的驗證碼更換不同的url格式,即可。 `
用java實現傳送手機簡訊的DEMO
最近公司沒有專案,閒來無事,研究了一下利用java程式碼傳送手機簡訊的功能,感覺很有意思,整理下來,算一個小小的沉澱吧! 上網查了查,JAVA傳送手機簡訊有幾種方法: (1)使用webservice介面傳送手機簡訊,這個可以使用sina提供的webservice進行傳送,但
java實現SMS簡訊平臺傳送驗證碼功能
package com.tianxi.util; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache
JAVA呼叫中國網建介面實現傳送簡訊驗證碼
import java.io.UnsupportedEncodingException; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.Http
Java實現加密|加密模板
Java實現加密功能程式碼 其實加密就是用函式對應改變相應字元,比如摺疊加密就是 a<->z, b<->y, …,m<->n 所以其實只要知道加密演算法(就是字元對照規則)很好實現加密功能的 程式碼模板(我省略的部分就是加密演算法)
【原始碼分享】java實現對接簡訊驗證碼應用功能
今天公司提出一個需求,要在現有專案上收集註冊使用者的真實手機號,由於之前沒有接觸過這一塊,只能尋求度孃的幫助,經過一天的努力,終於完成了,現整理記錄下已備查閱。 1 解決方案:在註冊時要求使用者進行手機驗證。2 尋找簡訊供應商:由於對這一塊不是太懂,大學同學推薦一家他們公司在用的給我。3 程式碼實現 首先到
Java 實現 給Excel模板賦值(直接開啟表格賦值或者用自定義了名稱的單元格(一塊區域)賦值)
1:需求 直接開啟表格填充資料到模板後的效果可能出現表格重疊的問題用自定義名稱填充資料到模板後表格互不影響 Excel自身有一個“定義名稱”的功能, (1)可以給任意的單元格定義一個名稱,比如定義某個單元格的名稱為:testA1,如何給這個名稱為“testA1”的單元格賦值。 (2)
JAVA實現手機簡訊驗證碼
手機簡訊驗證碼介面來自於網易雲手機簡訊介面 package com.netease.code; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.http.H
用Java實現傳送http的get和post請求
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; imp
使用Java實現傳送email郵件
一、maven依賴 <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifa
Java 實現傳送驗證碼並呼叫介面驗證 (網易雲信)
大概流程: 使用者輸入賬號點選獲取驗證碼,驗證是否繫結手機號碼,繫結則傳送驗證碼 使用者輸入驗證碼,呼叫介面驗證是否正確返回響應 首先我們需要在網易雲信註冊賬號,獲取得到App Key和App Secret 需要注意的幾個引數: &nb
Java實現傳送Get和Post請求
前言 已經有幾天沒有寫部落格了 , 原因是最近生活中有大量的事情, 儘管每天都在學習 , 但是卻沒有將知識點記錄在部落格中 , 感覺這樣非常不好 . 以後一定要堅持寫部落格 , 記錄自己
java呼叫傳送簡訊API
需要用到的jar包 工具類和測試類 工具類: public class HttpClientUtil { private RequestConfig requestConfig = RequestConfig.custom()
java實現傳送post請求
post、get請求一般出現在前端呼叫後端介面的時候,現在如果希望java程式碼去呼叫controller介面,比如在job定時器中,達到某一條件需要返回給前端一條提示訊息(如訂單30分鐘內未付款,已被自動取消),而前端只能調controler介面,所以這時可以用job去調c