musiclover

用Struts2实现在线银行付款

                                                                    用Struts2实现在线银行付款 源代码:(没有Struts2空项目下的包)/Files/musiclover/PayOnline.rar
1.方式:通过中间企业再连接到在线银行(特征:风险大,适合小型的付款,但是维护容易)
        这里用的是 易宝 作为中间企业 

A.搭建Struts的环境
下载Struts的架包-->添加空项目下的lib中的包到WEB PROJECT 中的lib中
配置 struts.xml 和 xml filter的配置
B.创建Utils工具类
 DigestUtil.java 这个类是用 商户(企业)的 密钥(易宝分配的)和一些付款的信息加起来产生 验证字段
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
     *            业务类型
     * 
@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
     *            支付网关发来的加密验证码
     * 
@param p1_MerId
     *            商户编号
     * 
@param r0_Cmd
     *            业务类型
     * 
@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);
        
// 业务类型
        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.开始写 发送请求之前的验证类 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
     *            业务类型
     * 
@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";// 业务类型默认为"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">农业银行</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">深圳发展银行</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">兴业银行 </td>
        
<td height="25"><INPUT TYPE="radio" NAME="pd_FrpId" value="SPDB-NET">上海浦东发展银行 </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>

转发到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="发送"/>
    
</form>
  
</body>
</html>


企业私密信息  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
     *            支付网关发来的加密验证码
     * 
@param p1_MerId
     *            商户编号
     * 
@param r0_Cmd
     *            业务类型
     * 
@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;    //业务类型
    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 阅读(1178) 评论(2)  编辑  收藏

Feedback

# re: 用Struts2实现在线银行付款 2013-04-11 11:27 33

eqweq  回复  更多评论   

# re: 用Struts2实现在线银行付款 2013-04-11 11:27 33

123456789  回复  更多评论   



只有注册用户登录后才能发表评论。


网站导航:
 

My Links

Blog Stats

常用链接

留言簿

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜