最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SSH框架網(wǎng)上商城項(xiàng)目第26戰(zhàn)之訂單支付后發(fā)送短信提醒

 更新時(shí)間:2016年06月06日 15:57:18   作者:eson_15  
這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項(xiàng)目第26戰(zhàn)之訂單支付后發(fā)送短信提醒,感興趣的小伙伴們可以參考一下

上一節(jié)我們使用了Java mail完成了給買家發(fā)送郵件的功能,還遺留一個(gè)功能,就是給買家發(fā)送短信,告訴他訂單已經(jīng)生成之類的。這一節(jié)主要介紹一下如何在用戶支付完成后自動(dòng)給用戶發(fā)送短信。

1. 申請(qǐng)短信發(fā)送功能

         很明顯,我們自己不能發(fā)短信,也沒有做短信的功能,所以我們需要去借助第三方的運(yùn)營商。但是像中國移動(dòng),聯(lián)通,電信這種不會(huì)直接給我們提供短信服務(wù),而是先把短信服務(wù)提供給一些運(yùn)營商,然后這些運(yùn)營商再提供給我們。
  有一個(gè)運(yùn)營商叫“中國網(wǎng)建sms短信通”(官網(wǎng)地址)。這個(gè)運(yùn)營商可以給我們提供短信的服務(wù),進(jìn)入官網(wǎng)后可以看下收費(fèi)標(biāo)準(zhǔn),當(dāng)然咯,首次注冊(cè)免費(fèi)送5條短信,不過免費(fèi)的可能不是太穩(wěn)定,或者發(fā)送的時(shí)間比較久,這得看人品,不過付費(fèi)的基本上都挺好的。他的盈利模式就是用較低的價(jià)格從移動(dòng),聯(lián)通或者電信那邊拿到短信,然后賣給用戶,當(dāng)然有優(yōu)惠套餐的,這種一般都是大公司或者有需要向用戶發(fā)送短信的業(yè)務(wù)時(shí)會(huì)購買。
  首先我們?nèi)プ?cè)一個(gè)賬號(hào)(其實(shí)是為了拿到那5條免費(fèi)的短息來測(cè)試我們的程序),為了把流程說清楚,我盡量寫詳細(xì)一點(diǎn),請(qǐng)看如下界面:

注冊(cè)頁面
  

        像這些姓名啊,email啊都可以隨便填的,手機(jī)填自己的就行了,因?yàn)闀?huì)收到登陸的用戶名和密碼。登陸后我們可以看到有5條免費(fèi)短信可以發(fā)送,如下:

基本信息
  

         友情提示:5條免費(fèi)短信第一天別用完,第二天又會(huì)再送5條,然后就不送了~
  然后我們點(diǎn)擊上面圖片中的發(fā)送短信,會(huì)彈出一個(gè)發(fā)送短信的界面,我們不是為了去發(fā)送短信,而是去設(shè)置一些短信的后綴,即用戶收到短信后,最后面都有個(gè)后綴說明來自哪里,如下:
  

填寫后綴
  

        保存之后,我們點(diǎn)擊左邊欄目中的“短信API接口”,就會(huì)跳出關(guān)于發(fā)送短信的API(這里也給出那個(gè)連接的地址),我們編程就需要參考他們提供給我們的API接口,就跟前面做支付功能一樣的,使用易寶給我們提供的官方接口。我們簡(jiǎn)單看一下:
API 

  上面只是部分內(nèi)容,詳情可以點(diǎn)擊上面給的鏈接。我們點(diǎn)擊圖片中密鑰的立即修改,主要是看一下密鑰是啥,然后將密鑰復(fù)制下來,保存一下,后面寫程序的時(shí)候要用到。
  好了,現(xiàn)在準(zhǔn)備工作都做好了,API也有了,現(xiàn)在我們可以著手開發(fā)短信功能了。

2. 測(cè)試一下第三方服務(wù)器正常與否

  在開發(fā)短信功能之前,我們先來測(cè)試一下這個(gè)中國網(wǎng)建的服務(wù)器是否正常,根據(jù)短信API頁面提供的數(shù)據(jù),我們可以使用UTF-8編碼發(fā)送接口的地址:

http://utf8.sms.webchinese.cn/?Uid=本站用戶名&Key=接口安全秘鑰&smsMob=手機(jī)號(hào)碼&smsText=驗(yàn)證碼:8888
來測(cè)試一下utf8.sms.webchines.cn是否正常。下面在工程中寫一個(gè)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>
  <!-- 參數(shù)自己要填好 -->
  <a >
    測(cè)試服務(wù)器
  </a>
 </body>
</html>

(友情提示:在測(cè)試的時(shí)候不要多次測(cè)試,一次就夠了,主要看服務(wù)器是否正常,還得留幾次后面測(cè)試用。也可以將某個(gè)參數(shù)寫錯(cuò),如果返回一個(gè)負(fù)數(shù),說明服務(wù)器是正常的,可以根據(jù)API頁面提供的參數(shù)看相應(yīng)的負(fù)數(shù)代表哪里出錯(cuò)了。這只是用來測(cè)試的,實(shí)際中并不能這么去發(fā),因?yàn)殒溄又羞€有我的用戶名和密碼,肯定不行。)

3. 開發(fā)短信發(fā)送功能

  ###**3.1 發(fā)送短信流程測(cè)試**   使用短信發(fā)送功能,需要以下三個(gè)jar包:(免費(fèi)下載地址:http://download.csdn.net/detail/eson_15/9528009) - `commons-codec-1.4.jar` - `commons-httpclient-3.1.jar` - `commons-logging-1.1.1.jar` 下面我們先寫一個(gè)普通的java類來完成短信發(fā)送功能,并測(cè)試正確性:

public class SendMessageDemo { 

  public static void main(String[] args) throws Exception {
    //1. 打開瀏覽器
    HttpClient client = new HttpClient();
    //2. 創(chuàng)建請(qǐng)求的方式:get/post
    PostMethod post = new PostMethod("http://utf8.sms.webchinese.cn/");//剛剛我們申請(qǐng)的那個(gè)服務(wù)器地址
    //3. 設(shè)置請(qǐng)求的參數(shù)信息
    post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");//設(shè)置轉(zhuǎn)碼
    post.setParameter("Uid", "xxxx");//參數(shù)都和上面的一樣
    post.setParameter("Key", "xxxx");
    post.setParameter("smsMob", "xxxx");
    post.setParameter("smsText", "測(cè)試一下!");
    //4. 提交請(qǐng)求并返回狀態(tài)碼
    int code = client.executeMethod(post);
    System.out.println("http返回的狀態(tài)碼:" + code);//如果打印出200說明正常
    //5. 獲取服務(wù)器端返回的數(shù)據(jù)信息
    String result = post.getResponseBodyAsString();
    System.out.println("短信發(fā)送結(jié)果為:" + result);//如果返回1說明發(fā)送正常      
  }
}

  接下來就可以運(yùn)行一下這個(gè)java程序發(fā)送給自己一條短信測(cè)試一下了。我的測(cè)試結(jié)果如下:   ![測(cè)試結(jié)果](http://img.blog.csdn.net/20160523122802066) ###**3.2 封裝到MessageUtilImpl中**   接下來就要在我們自己的項(xiàng)目中使用這個(gè)功能了,我們將上面的流程封裝到MessageUtilImpl工具類中,并抽取接口,如下:

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

//MessageUtilImpl實(shí)現(xiàn)類
@Component("messageUtil")
public class MessageUtilImpl implements MessageUtil {

  @Override
  public void sendMessage(String phoneNum, String id) {
    //1. 打開瀏覽器
    HttpClient client = new HttpClient();
    //2. 創(chuàng)建請(qǐng)求的方式:get/post
    PostMethod post = new PostMethod("http://utf8.sms.webchinese.cn/");
    //3. 設(shè)置請(qǐng)求的參數(shù)信息
    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", "測(cè)試一下!");
    //4. 提交請(qǐng)求并返回狀態(tài)碼
    try {
      int code = 0;
      code = client.executeMethod(post);
      System.out.println("http返回的狀態(tài)碼:" + code);
      //5. 獲取服務(wù)器端返回的數(shù)據(jù)信息
      String result = post.getResponseBodyAsString();
      System.out.println("短信發(fā)送結(jié)果為:" + result);
    } catch (Exception e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      post.releaseConnection();
    }
  }
}

4. 完善payAction

  完成了工具類的封裝,接下來我們把該工具類放到BaseAction中,通過@Resource注解注入進(jìn)來,供Action使用,下面我們完善前面的payAction中的backBank()方法,如下:

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

  //省去無關(guān)代碼……

  public void backBank() {
    BackData backData = (BackData)model;
    System.out.println(model);
    boolean isOK = payService.checkBackData(backData);
    if(isOK) {
      //1. 更新訂單狀態(tài),參數(shù)是自己根據(jù)數(shù)據(jù)庫中的情況傳進(jìn)去的,用來測(cè)試
      forderService.updateStatusById(Integer.parseInt(backData.getR6_Order()), 2);
      //2. 根據(jù)user郵箱地址,發(fā)送郵件
      String emailAddress = backData.getR8_MP().split(",")[0];
      emailUtil.sendEmail(emailAddress, backData.getR6_Order());
      //3. 發(fā)送手機(jī)短信
      String phoneNum = backData.getR8_MP().split(",")[1];
      messageUtil.sendMessage(phoneNum, backData.getR6_Order());
      System.out.println("----success!!----");
    } else {
      System.out.println("----false!!!----");
    }
  }
}

  從易寶那邊返回的信息中r6_Order參數(shù)中保存的是訂單的編號(hào),r8_MP參數(shù)中是用戶的郵箱和電話,第一個(gè)是郵箱第二個(gè)是手機(jī)號(hào)碼,用逗號(hào)隔開了,所以我們首先要獲取用戶的手機(jī)號(hào)碼,然后再來發(fā)送短信。好了,支付完成后給用戶發(fā)送短信的功能就完成了。

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。  

相關(guān)文章

  • RabbitMQ 的消息持久化與 Spring AMQP 的實(shí)現(xiàn)詳解

    RabbitMQ 的消息持久化與 Spring AMQP 的實(shí)現(xiàn)詳解

    這篇文章主要介紹了RabbitMQ 的消息持久化與 Spring AMQP 的實(shí)現(xiàn)剖析詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 使用java swing實(shí)現(xiàn)qq登錄界面示例分享

    使用java swing實(shí)現(xiàn)qq登錄界面示例分享

    這篇文章主要介紹了使用java swing實(shí)現(xiàn)qq登錄界面示例,需要的朋友可以參考下
    2014-04-04
  • Maven的概述及基本使用示例詳解

    Maven的概述及基本使用示例詳解

    MApache Maven是一個(gè)項(xiàng)目管理和構(gòu)建工具,它基于項(xiàng)目對(duì)象模型POM的概念,通過一小段描述信息來管理項(xiàng)目的構(gòu)建、報(bào)告和文檔,aven是專門用于管理和構(gòu)建Java項(xiàng)目的工具,本文給大家介紹Maven的概述及基本使用,感興趣的朋友一起看看吧
    2023-07-07
  • Java應(yīng)用服務(wù)器之tomcat部署的詳細(xì)教程

    Java應(yīng)用服務(wù)器之tomcat部署的詳細(xì)教程

    這篇文章主要介紹了Java應(yīng)用服務(wù)器之tomcat部署,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java使用多線程異步執(zhí)行批量更新操作方法

    Java使用多線程異步執(zhí)行批量更新操作方法

    這篇文章主要介紹了Java使用多線程異步執(zhí)行批量更新操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法

    JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法

    本篇文章主要介紹了JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java?@Accessors注解圖文詳解

    Java?@Accessors注解圖文詳解

    @Accessors用于改變@Data生成的getter和setter方法的生成結(jié)果,下面這篇文章主要給大家介紹了關(guān)于Java?@Accessors注解的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Java中使用正則表達(dá)式的一個(gè)簡(jiǎn)單例子及常用正則分享

    Java中使用正則表達(dá)式的一個(gè)簡(jiǎn)單例子及常用正則分享

    這篇文章主要介紹了Java中使用正則表達(dá)式的一個(gè)簡(jiǎn)單例子及常用正則分享,本文用一個(gè)驗(yàn)證Email的例子講解JAVA中如何使用正則,并羅列了一些常用的正則表達(dá)式,需要的朋友可以參考下
    2015-06-06
  • java使用xfire搭建webservice服務(wù)的過程詳解

    java使用xfire搭建webservice服務(wù)的過程詳解

    這篇文章主要介紹了java使用xfire搭建webservice服務(wù)的過程。使用xfire搭建webService的服務(wù),可以在瀏覽器訪問。對(duì)此感興趣的可以了解一下
    2020-07-07
  • Springboot指定掃描路徑的實(shí)現(xiàn)示例

    Springboot指定掃描路徑的實(shí)現(xiàn)示例

    本文主要介紹了Springboot指定掃描路徑的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05

最新評(píng)論

武隆县| 东方市| 肥城市| 新宁县| 仙居县| 界首市| 潍坊市| 措勤县| 临桂县| 万宁市| 靖州| 临江市| 娄烦县| 昂仁县| 汾西县| 高清| 康马县| 孙吴县| 临邑县| 紫金县| 调兵山市| 包头市| 滕州市| 临江市| 山东省| 额敏县| 许昌县| 青铜峡市| 内乡县| 临夏县| 太和县| 福贡县| 吴旗县| 九龙坡区| 香格里拉县| 育儿| 米脂县| 河源市| 香港| 平顶山市| 阳原县|