模拟建行网上支付页面通知

ContractedBlock.gif ExpandedBlockStart.gif Code
本来想用C#.Net开发的,但发现建行提供的dll不能加密,没办法,就用Java写了。
  String posID 
= request.getParameter("POSID");  //POSID    商户柜台代码    CHAR(9)    从商户传送的信息中获得
        String branchID = request.getParameter("BRANCHID");  //BRANCHID    分行代码    CHAR(9)    从商户传送的信息中获得
        String orderID = request.getParameter("ORDERID");  //ORDERID    定单号    CHAR(30)    从商户传送的信息中获得
        String payment = request.getParameter("PAYMENT");  //PAYMENT    付款金额    NUMBER(16,2)    从商户传送的信息中获得
        String curCode = request.getParameter("CURCODE");  //CURCODE    币种    CHAR(2)    从商户传送的信息中获得
        String remark1 = new String(request.getParameter("REMARK1").getBytes(this.getServletContext().getInitParameter("URLEncoding")),this.getServletContext().getInitParameter("Encoding"));//REMARK1    备注1    CHAR(30)    网银不处理,直接传到城综网
        String remark2 = new String(request.getParameter("REMARK2").getBytes(this.getServletContext().getInitParameter("URLEncoding")),this.getServletContext().getInitParameter("Encoding"));//REMARK2    备注2    CHAR(30)    网银不处理,直接传到城综网
        String success = request.getParameter("SUCCESS");  //SUCCESS    成功标志    CHAR(1)    成功时返回Y   N
        String sign = request.getParameter("SIGN");  //SIGN    数字签名    CHAR(256)

        StringBuffer src 
= new StringBuffer();
        src.append(
"POSID=" + posID);
        src.append(
"&BRANCHID=" + branchID);
        src.append(
"&ORDERID=" + orderID);
        src.append(
"&PAYMENT=" + payment);
        src.append(
"&CURCODE=" + curCode);
        src.append(
"&REMARK1=" + remark1);
        src.append(
"&REMARK2=" + remark2);
        src.append(
"&SUCCESS=" + success);

        RSASig rsaSig 
= new RSASig();
        rsaSig.setPrivateKey(
this.getInitParameter("PrivateKey"));
        sign 
= rsaSig.generateSigature(src.toString());

        StringBuffer url 
= new StringBuffer();
        url.append(
this.getInitParameter("PageNoticeUrl"));
        url.append(
"?POSID=" + posID);
        url.append(
"&BRANCHID=" + branchID);
        url.append(
"&ORDERID=" + orderID);
        url.append(
"&PAYMENT=" + payment);
        url.append(
"&CURCODE=" + curCode);
        url.append(
"&REMARK1=" + URLEncoder.encode(remark1,this.getServletContext().getInitParameter("Encoding")));
        url.append(
"&REMARK2=" + URLEncoder.encode(remark2,this.getServletContext().getInitParameter("Encoding")));
        url.append(
"&SUCCESS=" + success);
        url.append(
"&SIGN=" + sign);

        log.debug(
"src:" + src.toString());
        log.debug(
"sign:" + sign);
        log.debug(
"url:" + url.toString());
        response.sendRedirect(url.toString()); 

转载于:https://www.cnblogs.com/heroking2000/archive/2009/10/13/1582816.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值