程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> SSH框架網上商城項目第26戰之定單付出後發送短信提示

SSH框架網上商城項目第26戰之定單付出後發送短信提示

編輯:關於JAVA

SSH框架網上商城項目第26戰之定單付出後發送短信提示。本站提示廣大學習愛好者:(SSH框架網上商城項目第26戰之定單付出後發送短信提示)文章只能為提供參考,不一定能成為您想要的結果。以下是SSH框架網上商城項目第26戰之定單付出後發送短信提示正文


上一節我們應用了Java mail完成了給買家發送郵件的功效,還遺留一個功效,就是給買家發送短信,告知他定單曾經生成之類的。這一節重要引見一下若何在用戶付出完成後主動給用戶發送短信。

1. 請求短信發送功效

         很顯著,我們本身不克不及發短信,也沒有做短信的功效,所以我們須要去借助第三方的運營商。然則像中國挪動,聯通,電信這類不會直接給我們供給短佩服務,而是先把短佩服務供給給一些運營商,然後這些運營商再供給給我們。
  有一個運營商叫“中國網建sms短信通”(官網地址)。這個運營商可以給我們供給短信的辦事,進入官網後可以看下免費尺度,固然咯,初次注冊收費送5條短信,不外收費的能夠不是太穩固,或許發送的時光比擬久,這得看人品,不外付費的根本上都挺好的。他的盈利形式就是用較低的價錢從挪動,聯通或許電信那裡拿到短信,然後賣給用戶,固然有優惠套餐的,這類普通都是年夜公司或許有須要向用戶發送短信的營業時會購置。
  起首我們去注冊一個賬號(實際上是為了拿到那5條收費的短息來測試我們的法式),為了把流程說清晰,我盡可能寫具體一點,請看以下界面:


  

        像這些姓名啊,email啊都可以隨意填的,手機填本身的就好了,由於會收到上岸的用戶名和暗碼。上岸後我們可以看到有5條收費短信可以發送,以下:


  

         友誼提醒:5條收費短信第一天別用完,第二天又會再送5條,然後就不送了~
  然後我們點擊下面圖片中的發送短信,會彈出一個發送短信的界面,我們不是為了去發送短信,而是去設置一些短信的後綴,即用戶收到短信後,最初面都有個後綴解釋來自哪裡,以下:
  


  

        保留以後,我們點擊右邊欄目中的“短信API接口”,就會跳出關於發送短信的API(這裡也給出誰人銜接的地址),我們編程就須要參考他們供給給我們的API接口,就跟後面做付出功效一樣的,應用易寶給我們供給的官方接口。我們簡略看一下:
 

  下面只是部門內容,概況可以點擊下面給的鏈接。我們點擊圖片中密鑰的立刻修正,重要是看一下密鑰是啥,然後將密鑰復制上去,保留一下,前面寫法式的時刻要用到。
  好了,如今預備任務都做好了,API也有了,如今我們可以著手開辟短信功效了。

2. 測試一下第三方辦事器正常與否

  在開辟短信功效之前,我們先來測試一下這個中國網建的辦事器能否正常,依據短信API頁面供給的數據,我們可使用UTF-8編碼發送接口的地址:

http://utf8.sms.webchinese.cn/?Uid=本站用戶名&Key=接口平安秘鑰&smsMob=手機號碼&smsText=驗證碼:8888
來測試一下utf8.sms.webchines.cn能否正常。上面在工程中寫一個test.jsp頁面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <%@ include file="/public/head.jspf" %>
 </head>

 <body>
  <!-- 參數本身要填好 -->
  <a href="http://utf8.sms.webchinese.cn/?Uid=本站用戶名&Key=接口平安秘鑰&smsMob=手機號碼&smsText=驗證碼:8888">
    測試辦事器
  </a>
 </body>
</html>

(友誼提醒:在測試的時刻不要屢次測試,一次就夠了,重要看辦事器能否正常,還得留幾回前面測試用。也能夠將某個參數寫錯,假如前往一個正數,解釋辦事器是正常的,可以依據API頁面供給的參數看響應的正數代表哪裡失足了。這只是用來測試的,現實中其實不能這麼去發,由於鏈接中還有我的用戶名和暗碼,確定不可。)

3. 開辟短信發送功效

  ###**3.1 發送短信流程測試**   應用短信發送功效,須要以下三個jar包:(收費下載地址:http://download.csdn.net/detail/eson_15/9528009) - `commons-codec-1.4.jar` - `commons-httpclient-3.1.jar` - `commons-logging-1.1.1.jar` 上面我們先寫一個通俗的java類來完成短信發送功效,並測試准確性:

public class SendMessageDemo { 

  public static void main(String[] args) throws Exception {
    //1. 翻開閱讀器
    HttpClient client = new HttpClient();
    //2. 創立要求的方法:get/post
    PostMethod post = new PostMethod("http://utf8.sms.webchinese.cn/");//方才我們請求的誰人辦事器地址
    //3. 設置要求的參數信息
    post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");//設置轉碼
    post.setParameter("Uid", "xxxx");//參數都和下面的一樣
    post.setParameter("Key", "xxxx");
    post.setParameter("smsMob", "xxxx");
    post.setParameter("smsText", "測試一下!");
    //4. 提交要求並前往狀況碼
    int code = client.executeMethod(post);
    System.out.println("http前往的狀況碼:" + code);//假如打印出200解釋正常
    //5. 獲得辦事器端前往的數據信息
    String result = post.getResponseBodyAsString();
    System.out.println("短信發送成果為:" + result);//假如前往1解釋發送正常      
  }
}

  接上去便可以運轉一下這個java法式發送給本身一條短信測試一下了。我的測試成果以下:   ![測試成果](http://img.blog.csdn.net/20160523122802066) ###**3.2 封裝到MessageUtilImpl中**   接上去就要在我們本身的項目中應用這個功效了,我們將下面的流程封裝到MessageUtilImpl對象類中,並抽取接口,以下:

//抽取後的MessageUtil接口
public interface MessageUtil {
  public abstract void sendMessage(String phoneNum, String id);

//MessageUtilImpl完成類
@Component("messageUtil")
public class MessageUtilImpl implements MessageUtil {

  @Override
  public void sendMessage(String phoneNum, String id) {
    //1. 翻開閱讀器
    HttpClient client = new HttpClient();
    //2. 創立要求的方法:get/post
    PostMethod post = new PostMethod("http://utf8.sms.webchinese.cn/");
    //3. 設置要求的參數信息
    post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
    post.setParameter("Uid", "eson_15");
    post.setParameter("Key", "0537729d0b59a7e7358b");
    post.setParameter("smsMob", "15216771570");
    post.setParameter("smsText", "測試一下!");
    //4. 提交要求並前往狀況碼
    try {
      int code = 0;
      code = client.executeMethod(post);
      System.out.println("http前往的狀況碼:" + code);
      //5. 獲得辦事器端前往的數據信息
      String result = post.getResponseBodyAsString();
      System.out.println("短信發送成果為:" + result);
    } catch (Exception e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      post.releaseConnection();
    }
  }
}

4. 完美payAction

  完成了對象類的封裝,接上去我們把該對象類放到BaseAction中,經由過程@Resource注解注入出去,供Action應用,上面我們完美後面的payAction中的backBank()辦法,以下:

@Controller("payAction")
@Scope("prototype")
public class PayAction extends BaseAction<Object> implements ParameterAware {

  //省去有關代碼……

  public void backBank() {
    BackData backData = (BackData)model;
    System.out.println(model);
    boolean isOK = payService.checkBackData(backData);
    if(isOK) {
      //1. 更新定單狀況,參數是本身依據數據庫中的情形傳出來的,用來測試
      forderService.updateStatusById(Integer.parseInt(backData.getR6_Order()), 2);
      //2. 依據user郵箱地址,發送郵件
      String emailAddress = backData.getR8_MP().split(",")[0];
      emailUtil.sendEmail(emailAddress, backData.getR6_Order());
      //3. 發送手機短信
      String phoneNum = backData.getR8_MP().split(",")[1];
      messageUtil.sendMessage(phoneNum, backData.getR6_Order());
      System.out.println("----success!!----");
    } else {
      System.out.println("----false!!!----");
    }
  }
}

  從易寶那裡前往的信息中r6_Order參數中保留的是定單的編號,r8_MP參數中是用戶的郵箱和德律風,第一個是郵箱第二個是手機號碼,用逗號離隔了,所以我們起首要獲得用戶的手機號碼,然後再來發送短信。好了,付出完成後給用戶發送短信的功效就完成了。

原文鏈接:http://blog.csdn.net/eson_15/article/details/51475431  

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved