Md5 网上支付

本文介绍了使用Struts2实现在线银行付款的方法。通过中间企业易宝连接在线银行,详细说明了搭建Struts环境、创建Utils工具类以生成验证字段的过程,还展示了使用相关类产生验证字段hmac的代码,最后给出了结果显示的JSP页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      用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 , ( byte 54 );
        Arrays.fill(k_opad, keyb.length, 
64 , ( byte 92 );
        
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, 
0 16 );
        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 >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值