musiclover

          用Struts2實現(xiàn)在線銀行付款

                                                                              用Struts2實現(xiàn)在線銀行付款 源代碼:(沒有Struts2空項目下的包)/Files/musiclover/PayOnline.rar
          1.方式:通過中間企業(yè)再連接到在線銀行(特征:風險大,適合小型的付款,但是維護容易)
                  這里用的是 易寶 作為中間企業(yè) 

          A.搭建Struts的環(huán)境
          下載Struts的架包-->添加空項目下的lib中的包到WEB PROJECT 中的lib中
          配置 struts.xml 和 xml filter的配置
          B.創(chuàng)建Utils工具類
           DigestUtil.java 這個類是用 商戶(企業(yè))的 密鑰(易寶分配的)和一些付款的信息加起來產生 驗證字段
          package cn.xixi.utils;

          import java.io.UnsupportedEncodingException;
          import java.security.MessageDigest;
          import java.security.NoSuchAlgorithmException;
          import java.util.Arrays;

          public class DigestUtil {

              
          private static String encodingCharset = "UTF-8";
              
              
          /**
               * 
          @param aValue
               * 
          @param aKey
               * 
          @return
               
          */
              
          public static String hmacSign(String aValue, String aKey) {
                  
          byte k_ipad[] = new byte[64];
                  
          byte k_opad[] = new byte[64];
                  
          byte keyb[];
                  
          byte value[];
                  
          try {
                      keyb 
          = aKey.getBytes(encodingCharset);
                      value 
          = aValue.getBytes(encodingCharset);
                  } 
          catch (UnsupportedEncodingException e) {
                      keyb 
          = aKey.getBytes();
                      value 
          = aValue.getBytes();
                  }

                  Arrays.fill(k_ipad, keyb.length, 
          64, (byte54);
                  Arrays.fill(k_opad, keyb.length, 
          64, (byte92);
                  
          for (int i = 0; i < keyb.length; i++) {
                      k_ipad[i] 
          = (byte) (keyb[i] ^ 0x36);
                      k_opad[i] 
          = (byte) (keyb[i] ^ 0x5c);
                  }

                  MessageDigest md 
          = null;
                  
          try {
                      md 
          = MessageDigest.getInstance("MD5");
                  } 
          catch (NoSuchAlgorithmException e) {

                      
          return null;
                  }
                  md.update(k_ipad);
                  md.update(value);
                  
          byte dg[] = md.digest();
                  md.reset();
                  md.update(k_opad);
                  md.update(dg, 
          016);
                  dg 
          = md.digest();
                  
          return toHex(dg);
              }

              
          public static String toHex(byte input[]) {
                  
          if (input == null)
                      
          return null;
                  StringBuffer output 
          = new StringBuffer(input.length * 2);
                  
          for (int i = 0; i < input.length; i++) {
                      
          int current = input[i] & 0xff;
                      
          if (current < 16)
                          output.append(
          "0");
                      output.append(Integer.toString(current, 
          16));
                  }

                  
          return output.toString();
              }

              
          /**
               * 
               * 
          @param args
               * 
          @param key
               * 
          @return
               
          */
              
          public static String getHmac(String[] args, String key) {
                  
          if (args == null || args.length == 0) {
                      
          return (null);
                  }
                  StringBuffer str 
          = new StringBuffer();
                  
          for (int i = 0; i < args.length; i++) {
                      str.append(args[i]);
                  }
                  
          return (hmacSign(str.toString(), key));
              }

              
          /**
               * 
          @param aValue
               * 
          @return
               
          */
              
          public static String digest(String aValue) {
                  aValue 
          = aValue.trim();
                  
          byte value[];
                  
          try {
                      value 
          = aValue.getBytes(encodingCharset);
                  } 
          catch (UnsupportedEncodingException e) {
                      value 
          = aValue.getBytes();
                  }
                  MessageDigest md 
          = null;
                  
          try {
                      md 
          = MessageDigest.getInstance("SHA");
                  } 
          catch (NoSuchAlgorithmException e) {
                      e.printStackTrace();
                      
          return null;
                  }
                  
          return toHex(md.digest(value));

              }
          }

           2.使用上面的類 加上易寶要求的字段 產生 驗證字段 hmac
          package cn.xixi.utils;

          public class payOnlineUtil {
              
          /**
               * 生成hmac方法
               * 
               * 
          @param p0_Cmd
               *            業(yè)務類型
               * 
          @param p1_MerId
               *            商戶編號
               * 
          @param p2_Order
               *            商戶訂單ID號
               * 
          @param p3_Amt
               *            支付金額
               * 
          @param p4_Cur
               *            交易幣種
               * 
          @param p5_Pid
               *            商品名稱
               * 
          @param p6_Pcat
               *            商品種類
               * 
          @param p7_Pdesc
               *            商品描述
               * 
          @param p8_Url
               *            商戶接受支付成功后的地址
               * 
          @param p9_SAF
               *            送貨地址
               * 
          @param pa_MP
               *            商戶擴展信息
               * 
          @param pd_FrpId
               *            銀行編碼
               * 
          @param pr_NeedResponse
               *            應答機制
               * 
          @param keyValue
               *            商戶密鑰
               * 
          @return
               
          */

              
          public static String createHmac(String p0_Cmd, String p1_MerId,
                      String p2_Order, String p3_Amt, String p4_Cur, String p5_Pid,
                      String p6_Pcat, String p7_Pdesc, String p8_Url,
                      String p9_SAF, String pa_MP, String pd_FrpId,
                      String pr_NeedResponse, String keyValue) 
          {
                  StringBuffer sValue 
          = new StringBuffer();
                  sValue.append(p0_Cmd);
                  sValue.append(p1_MerId);
                  sValue.append(p2_Order);
                  sValue.append(p3_Amt);
                  sValue.append(p4_Cur);
                  sValue.append(p5_Pid);
                  sValue.append(p6_Pcat);
                  sValue.append(p7_Pdesc);
                  sValue.append(p8_Url);
                  sValue.append(p9_SAF);
                  sValue.append(pa_MP);
                  sValue.append(pd_FrpId);
                  sValue.append(pr_NeedResponse);
                  String resultValue 
          = DigestUtil.hmacSign(sValue.toString(), keyValue);
                  
          return resultValue;
              }


              
          /**
               * 返回校驗hmac方法
               * 
               * 
          @param hmac
               *            支付網關發(fā)來的加密驗證碼
               * 
          @param p1_MerId
               *            商戶編號
               * 
          @param r0_Cmd
               *            業(yè)務類型
               * 
          @param r1_Code
               *            支付結果
               * 
          @param r2_TrxId
               *            易寶支付交易流水號
               * 
          @param r3_Amt
               *            支付金額
               * 
          @param r4_Cur
               *            交易幣種
               * 
          @param r5_Pid
               *            商品名稱
               * 
          @param r6_Order
               *            商戶訂單號
               * 
          @param r7_Uid
               *            易寶支付會員ID
               * 
          @param r8_MP
               *            商戶擴展信息
               * 
          @param r9_BType
               *            交易結果返回類型
               * 
          @param keyValue
               *            密鑰
               * 
          @return
               
          */

              
          public static boolean verifyCallback(String hmac, String p1_MerId,
                      String r0_Cmd, String r1_Code, String r2_TrxId, String r3_Amt,
                      String r4_Cur, String r5_Pid, String r6_Order, String r7_Uid,
                      String r8_MP, String r9_BType, String keyValue) 
          {
                  StringBuffer sValue 
          = new StringBuffer();
                  
          // 商戶編號
                  sValue.append(p1_MerId);
                  
          // 業(yè)務類型
                  sValue.append(r0_Cmd);
                  
          // 支付結果
                  sValue.append(r1_Code);
                  
          // 易寶支付交易流水號
                  sValue.append(r2_TrxId);
                  
          // 支付金額
                  sValue.append(r3_Amt);
                  
          // 交易幣種
                  sValue.append(r4_Cur);
                  
          // 商品名稱
                  sValue.append(r5_Pid);
                  
          // 商戶訂單號
                  sValue.append(r6_Order);
                  
          // 易寶支付會員ID
                  sValue.append(r7_Uid);
                  
          // 商戶擴展信息
                  sValue.append(r8_MP);
                  
          // 交易結果返回類型
                  sValue.append(r9_BType);
                  String sNewString 
          = DigestUtil.hmacSign(sValue.toString(), keyValue);

                  
          if (hmac.equals(sNewString)) {
                      
          return true;
                  }

                  
          return false;
              }

          }

          3.開始寫 發(fā)送請求之前的驗證類 RayRequest.java   用到Spring的工具,包自己添加
          package cn.xixi.actions;

          import java.util.Properties;
          import java.util.regex.Pattern;

          import org.springframework.core.io.support.PropertiesLoaderUtils;

          import cn.xixi.utils.payOnlineUtil;

          import com.opensymphony.xwork2.ActionSupport;

          public class PayRequest extends ActionSupport {
              
          /**
               * 生成hmac.Action
               * 
               * 
          @param p0_Cmd
               *            業(yè)務類型
               * 
          @param p1_MerId
               *            商戶編號
               * 
          @param p2_Order
               *            訂單ID號
               * 
          @param p3_Amt
               *            支付金額
               * 
          @param p4_Cur
               *            交易幣種
               * 
          @param p5_Pid
               *            商品ID
               * 
          @param p6_Pcat
               *            商品種類
               * 
          @param p7_Pdesc
               *            商品描述
               * 
          @param p8_Url
               *            商戶接受支付成功后的地址
               * 
          @param p9_SAF
               *            送貨地址 "0"不需要 "1"為需要
               * 
          @param pa_MP
               *            商戶擴展信息
               * 
          @param pd_FrpId
               *            銀行編碼
               * 
          @param pr_NeedResponse
               *            應答機制
               * 
          @param keyValue
               *            商戶密鑰
               * 
          @return
               
          */

              
          // 從用戶選擇 或是 數據庫獲得的
              private String orderid;// 訂單ID p2_Order
              private String amount; // 金額 p3_Amt
              private String pd_FrpId; // 銀行號 pd_FrpId

              
          // 商戶申請后得到的信息放在merchantInfo.properties
              private String p1_MerId; // 商戶ID p1_MerId
              private String keyValue; // 商戶密鑰 keyValue
              private String p8_Url; // 接受支付成功后返回的地址 p8_Url

              
          // 一般默認值
              private String p0_Cmd = "Buy";// 業(yè)務類型默認為"buy"
              private String p4_Cur = "CNY";// 默認單位是人民幣
              private String p5_Pid = "";// 商品ID 留空
              private String p6_Pcat = "";// 商品種類 留空
              private String p7_Pdesc = "";// 商品描述 留空
              private String p9_SAF = "0"// 不需要地址
              private String pa_Mp = ""// 不需要商戶擴展信息
              private String pr_NeedResponse = "0"// 不需要應答
              private String hmacValue;

              
          public String getOrderid() {
                  
          return orderid;
              }


              
          public void setOrderid(String orderid) {
                  
          this.orderid = orderid;
              }


              
          public String getAmount() {
                  
          return amount;
              }


              
          public void setAmount(String amount) {
                  
          this.amount = amount;
              }


              
          public String getPd_FrpId() {
                  
          return pd_FrpId;
              }


              
          public void setPd_FrpId(String pd_FrpId) {
                  
          this.pd_FrpId = pd_FrpId;
              }


              
          public String getHmacValue() {
                  
          return hmacValue;
              }


              
          public void setHmacValue(String hmacValue) {
                  
          this.hmacValue = hmacValue;
              }


              
          public String getP1_MerId() {
                  
          return p1_MerId;
              }


              
          public String getP8_Url() {
                  
          return p8_Url;
              }


              
          public String getP0_Cmd() {
                  
          return p0_Cmd;
              }


              
          public String getP4_Cur() {
                  
          return p4_Cur;
              }


              
          public String getP5_Pid() {
                  
          return p5_Pid;
              }


              
          public String getP6_Pcat() {
                  
          return p6_Pcat;
              }


              
          public String getP7_Pdesc() {
                  
          return p7_Pdesc;
              }


              
          public String getP9_SAF() {
                  
          return p9_SAF;
              }


              
          public String getPa_Mp() {
                  
          return pa_Mp;
              }


              
          public String getPr_NeedResponse() {
                  
          return pr_NeedResponse;
              }


              
          // 重寫 execute()和validate()方法
              public String execute() throws Exception {
                  
                  Properties props
          =PropertiesLoaderUtils.loadAllProperties("merchantInfo.properties");
                  p1_MerId
          =props.getProperty("p1_MerId");
                  keyValue
          =props.getProperty("keyValue");
                  p8_Url
          =props.getProperty("merchantCallbackURL");
                  
          // 產生hmac碼
                  hmacValue=payOnlineUtil.createHmac(p0_Cmd, p1_MerId, orderid, amount, p4_Cur, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, p9_SAF, pa_Mp, pd_FrpId, pr_NeedResponse, keyValue);
                  
          return SUCCESS;
              }


              
          public void validate() {
                  
          // 如果orderid amout不為空并且不在數字中
                if(null==orderid||null==amount||"".equals(orderid.trim())||"".equals(amount.trim())||null==pd_FrpId||"".equals(pd_FrpId.trim())){
                  
          this.addFieldError("orderid","3項都不能為空!");  
                }

              }


          }

          struts2.xml
          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE struts PUBLIC
              
          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
              
          "http://struts.apache.org/dtds/struts-2.0.dtd">

          <struts>


              
          <package name="default"  extends="struts-default">
                  
          <action name="payValidate" class="cn.xixi.actions.PayRequest">
                   
          <result name="input">/index.jsp</result>
                   
          <result name="success">/connect.jsp</result>
                  
          </action>
                  
                  
          <action name="payResult" class="cn.xixi.actions.PayResult">
                    
          <result name="success" >/response.jsp</result> 
                  
          </action>
              
          </package>
          </struts>
          index.jsp的代碼:需要輸入訂單號 金額 網上銀行
          <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <%@taglib prefix="s" uri="/struts-tags"%>
          <html>
            
          <head>
            
              
          <title>巴巴運動網_支付第一步,選擇支付銀行</title>
              
          <meta http-equiv="pragma" content="no-cache">
              
          <meta http-equiv="cache-control" content="no-cache">
              
          <meta http-equiv="expires" content="0">    

            
          </head>
            
            
          <body>
            
          <H2><s:fielderror></s:fielderror></H2>
          <table width="960" border="0" align="center">
            
          <tr>
              
          <td width="536" valign="top">
              
          <form action="payValidate" method="post" name="paymentform">
              
              
          <table width="100%" border="0">
                
          <tr>
                  
          <td height="30" colspan="4"><table width="100%" height="50" border="0" cellpadding="0" cellspacing="1" bgcolor="#A2E0FF">
                    
          <tr>
                      
          <td align="center" bgcolor="#F7FEFF"><h3>u訂單號:<INPUT TYPE="text" NAME="orderid"> 應付金額:¥<INPUT TYPE="text" NAME="amount" size="6"></h3></td>
                    
          </tr>
                  
          </table></td>
                  
          </tr>
                
          <tr>
                  
          <td colspan="4">&nbsp;</td>
                  
          </tr>
                
          <tr>
                  
          <td height="30" colspan="4" bgcolor="#F4F8FF"><span class="STYLE3">請您選擇在線支付銀行</span> </td>
                  
          </tr>
                
          <tr>
                  
          <td width="26%" height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="CMBCHINA-NET">招商銀行 </td>
                  
          <td width="25%" height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="ICBC-NET">工商銀行</td>
                  
          <td width="25%" height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="ABC-NET">農業(yè)銀行</td>
                  
          <td width="24%" height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="CCB-NET">建設銀行 </td>
                
          </tr>
                
          <tr>
                  
          <td height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="CMBC-NET">中國民生銀行總行</td>
                  
          <td height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="CEB-NET" >光大銀行 </td>
                  
          <td height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="BOCO-NET">交通銀行</td>
                  
          <td height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="SDB-NET">深圳發(fā)展銀行</td>
                
          </tr>
                
          <tr>
                  
          <td height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="BCCB-NET">北京銀行</td>
                  
          <td height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="CIB-NET">興業(yè)銀行 </td>
                  
          <td height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="SPDB-NET">上海浦東發(fā)展銀行 </td>
                  
          <td ><INPUT TYPE="radio" NAME="pd_FrpId" value="ECITIC-NET">中信銀行</td>
                
          </tr>
                
          <tr>
                  
          <td colspan="4">&nbsp;</td>
                  
          </tr>
                
          <tr>
                  
          <td colspan="4" align="center"><input type="submit" value=" 確認支付 " /></td>
                  
          </tr>
              
          </table>
              
          </form>    </td>
              
          <td colspan="2" valign="top"><div class="divts"><table width="400" border="0" align="center" cellpadding="5" cellspacing="0">
                
          <tr>
                  
          <td bgcolor="#F4F8FF"><span class="STYLE5"> 溫馨提示</span></td>
                
          </tr>
                
          <tr>
                  
          <td><ul><li> 建行客戶需到柜面簽約網上銀行才能支付</li>
                  
          <li>請關閉彈出窗口攔截功能</li>
                  
          <li>務必使用IE5.0以上瀏覽器</li>
                  
          <li>支付出錯時勿按IE“后退”鍵</li>
                  
          </ul></td>
                
          </tr>
              
          </table>
              
          </div>
              
              
          <div id="blankmessage"></div>    </td>
            
          </tr>
            
          <tr>
              
          <td>&nbsp;</td>
              
          <td width="290">&nbsp;</td>
              
          <td width="120">&nbsp;</td>
            
          </tr>
          </table>
          <H2><s:fielderror></s:fielderror></H2>
            
          </body>
          </html>

          轉發(fā)到connect.jsp
          <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
            
          <head>
                  
          <title>連接易寶</title>
              
              
          <meta http-equiv="pragma" content="no-cache">
              
          <meta http-equiv="cache-control" content="no-cache">
              
            
          </head>
            
          <body onload="javascript:document.forms[0].submit()">
              測試號的連接:http:
          //tech.yeepay.com:8080/robot/debug.action
              真實網址的連接:https://www.yeepay.com/app-merchant-proxy/node
              <form name="yeepay" action="https://www.yeepay.com/app-merchant-proxy/node" method='post'>    
                  
          <input type='hidden' name='p0_Cmd'   value="${p0_Cmd}"> <!-- 請求命令,在線支付固定為Buy -->
                  
          <input type='hidden' name='p1_MerId' value="${p1_MerId}"> <!-- 商家ID -->
                  
          <input type="hidden" name="p2_Order" value="${orderid}"> <!-- 商家的交易定單號 -->
                  
          <input type='hidden' name='p3_Amt'   value="${amount}"> <!-- 訂單金額 -->
                  
          <input type='hidden' name='p4_Cur'   value="${p4_Cur}"> <!-- 貨幣單位 -->
                  
          <input type='hidden' name='p5_Pid'   value="${p5_Pid}"> <!-- 商品ID -->
                  
          <input type='hidden' name='p6_Pcat'  value="${p6_Pcat}"> <!-- 商品種類 -->
                  
          <input type='hidden' name='p7_Pdesc' value="${p7_Pdesc}"> <!-- 商品描述 -->
                  
          <input type='hidden' name='p8_Url'   value="${p8_Url}"> <!-- 交易結果通知地址 -->
                  
          <input type='hidden' name='p9_SAF'   value="${P9_SAF}"> <!-- 需要填寫送貨信息 0:不需要 1:需要 -->
                  
          <input type='hidden' name='pa_MP'    value="${pa_MP}"> <!-- 商家擴展信息 -->
                  
          <input type='hidden' name='pd_FrpId' value="${pd_FrpId}"> <!-- 銀行ID -->
                  
          <!-- 應答機制 為“1”: 需要應答機制;為“0”: 不需要應答機制 -->
                  
          <input type="hidden" name="pr_NeedResponse"  value="0">
                  
          <input type='hidden' name='hmac' value="${hmacValue}"><!-- MD5-hmac驗證碼 -->
                  
          <input type="submit" value="發(fā)送"/>
              
          </form>
            
          </body>
          </html>


          企業(yè)私密信息  merchantInfo.properties
          p1_MerId=10000365642
          keyValue
          =u278fHbT7JSNtox25S89342UJ3112GwDASn89YZ674445V6a183s6Aa4s3l3
          merchantCallbackURL
          =http\://localhost\:8080/test/payResult
          處理易寶返回的信息 PayResult.java
          package cn.xixi.actions;

          import java.util.Properties;

          import org.springframework.core.io.support.PropertiesLoaderUtils;

          import cn.xixi.utils.payOnlineUtil;

          import com.opensymphony.xwork2.ActionSupport;

          public class PayResult extends ActionSupport {
              
          /**
               * 返回校驗hmac方法
               * 
               * 
          @param hmac
               *            支付網關發(fā)來的加密驗證碼
               * 
          @param p1_MerId
               *            商戶編號
               * 
          @param r0_Cmd
               *            業(yè)務類型
               * 
          @param r1_Code
               *            支付結果
               * 
          @param r2_TrxId 
               *            易寶支付交易流水號
               * 
          @param r3_Amt
               *            支付金額
               * 
          @param r4_Cur
               *            交易幣種
               * 
          @param r5_Pid
               *            商品名稱
               * 
          @param r6_Order
               *            商戶訂單號
               * 
          @param r7_Uid
               *            易寶支付會員ID
               * 
          @param r8_MP
               *            商戶擴展信息
               * 
          @param r9_BType
               *            交易結果返回類型
               * 
          @param keyValue
               *            密鑰
               * 
          @param message
               *           返回給用戶的消息           
               * 
          @return
               
          */

              
          private String p1_MerId;  //商號
              
              
          private String r0_Cmd;    //業(yè)務類型
              private String r1_Code;   //支付結果 
              private String r2_TrxId;  //易寶支付交易訂單號
              private String r3_Amt;  //支付金額
              private String r4_Cur;  //交易幣種
              private String r5_Pid;  //商品名稱
              private String r6_Order; //商戶訂單號
              private String r7_Uid;  //易寶支付會員ID
              private String r8_MP; //商戶擴展信息
              private String r9_BType; //交易結果返回類型  "1"為通過用戶游覽器 "2"為服務器點對點
           
              
          private String rb_BankId;  //交易的銀行ID
              private String ro_BankOrderId; //銀行產生的訂單ID
              private String rp_PayDate; //付款ID
              private String rq_CardNo; // 屬性不是很重要
              private String ru_Trxtime; // 屬性不是很重要
              private String hmac;
              
              
          private String keyValue; //商戶自己的密鑰

              
          private String message;//返回到游覽器提示消息
              
              
          public String getMessage() {
                  
          return message;
              }


              
          public void setMessage(String message) {
                  
          this.message = message;
              }


              
          public String getR0_Cmd() {
                  
          return r0_Cmd;
              }


              
          public void setR0_Cmd(String cmd) {
                  r0_Cmd 
          = cmd;
              }


              
          public String getR1_Code() {
                  
          return r1_Code;
              }


              
          public void setR1_Code(String code) {
                  r1_Code 
          = code;
              }


              
          public String getR2_TrxId() {
                  
          return r2_TrxId;
              }


              
          public void setR2_TrxId(String trxId) {
                  r2_TrxId 
          = trxId;
              }


              
          public String getR3_Amt() {
                  
          return r3_Amt;
              }


              
          public void setR3_Amt(String amt) {
                  r3_Amt 
          = amt;
              }


              
          public String getR4_Cur() {
                  
          return r4_Cur;
              }


              
          public void setR4_Cur(String cur) {
                  r4_Cur 
          = cur;
              }


              
          public String getR5_Pid() {
                  
          return r5_Pid;
              }


              
          public void setR5_Pid(String pid) {
                  r5_Pid 
          = pid;
              }


              
          public String getR6_Order() {
                  
          return r6_Order;
              }


              
          public void setR6_Order(String order) {
                  r6_Order 
          = order;
              }


              
          public String getR7_Uid() {
                  
          return r7_Uid;
              }


              
          public void setR7_Uid(String uid) {
                  r7_Uid 
          = uid;
              }


              
          public String getR8_MP() {
                  
          return r8_MP;
              }


              
          public void setR8_MP(String r8_mp) {
                  r8_MP 
          = r8_mp;
              }


              
          public String getR9_BType() {
                  
          return r9_BType;
              }


              
          public void setR9_BType(String type) {
                  r9_BType 
          = type;
              }


              
          public void setRb_BankId(String rb_BankId) {
                  
          this.rb_BankId = rb_BankId;
              }


              
          public void setRo_BankOrderId(String ro_BankOrderId) {
                  
          this.ro_BankOrderId = ro_BankOrderId;
              }


              
          public void setRp_PayDate(String rp_PayDate) {
                  
          this.rp_PayDate = rp_PayDate;
              }


              
          public void setRq_CardNo(String rq_CardNo) {
                  
          this.rq_CardNo = rq_CardNo;
              }


              
          public void setRu_Trxtime(String ru_Trxtime) {
                  
          this.ru_Trxtime = ru_Trxtime;
              }


              
          public void setHmac(String hmac) {
                  
          this.hmac = hmac;
              }


              
          public String execute() throws Exception {
               
          //獲取商號和keyValue(密鑰)    
                  Properties props=PropertiesLoaderUtils.loadAllProperties("merchantInfo.properties");
                  p1_MerId
          =props.getProperty("p1_MerId");
                  keyValue
          =props.getProperty("keyValue");
                  
          boolean isLegal=payOnlineUtil.verifyCallback(hmac,p1_MerId, r0_Cmd, r1_Code, r2_TrxId, r3_Amt, r4_Cur, r5_Pid, r6_Order, r7_Uid, r8_MP, r9_BType,keyValue); 
                  
          //如果驗證為合法的話
                  if(isLegal){
                     
          //查看是否用戶付錢成功 r1_Code為1表示成功
                      if("1".equals(r1_Code)){
                          message
          ="訂單號:"+r6_Order+"訂單支付成功!";
                          
          //對數據庫修改
                          message+="金額:"+r3_Amt+" M";
                          
          if("1".equals(r9_BType)){
                              message
          +="游覽器重定向";
                          }
          else if("2".equals(r9_BType)){
                              message
          +="支付網關后臺程序通知";
                              
                          }

                          message
          +="易寶訂單中自身生成的訂單號:"+r2_TrxId;
           
                      }

                      
                 }
          else{
                     message
          ="數據來源不合法";
                 }
                
               
          return SUCCESS;
              }

              
              
          }


           結果顯示:result.jsp
          <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
            
          <head>
                  
          <title>連接結果</title>
              
              
          <meta http-equiv="pragma" content="no-cache">
              
          <meta http-equiv="cache-control" content="no-cache">
              
            
          </head>
            
          <body>
            $
          {message}
            
          </body>
          </html>


          posted on 2009-10-13 18:27 Jxi 閱讀(1201) 評論(2)  編輯  收藏

          Feedback

          # re: 用Struts2實現(xiàn)在線銀行付款 2013-04-11 11:27 33

          eqweq  回復  更多評論   

          # re: 用Struts2實現(xiàn)在線銀行付款 2013-04-11 11:27 33

          123456789  回復  更多評論   



          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           

          My Links

          Blog Stats

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 霍邱县| 普陀区| 库尔勒市| 历史| 从江县| 金华市| 西和县| 怀宁县| 讷河市| 苏尼特右旗| 南岸区| 关岭| 四子王旗| 右玉县| 双鸭山市| 伊通| 娄烦县| 东丽区| 泸西县| 靖边县| 甘肃省| 武陟县| 盐城市| 晋州市| 仁化县| 黄平县| 烟台市| 措勤县| 栾川县| 九龙城区| 清新县| 运城市| 宝清县| 东兴市| 贡山| 镶黄旗| 内黄县| 高安市| 南江县| 通海县| 六盘水市|