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

news/2024/11/8 9:28:54/
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


http://www.ppmy.cn/news/662212.html

相关文章

网银在线支付接口和应用

网银的接口不难,但是开通网银接口需要不小的费用。 相关资源汇编下载: http://dotnet.5d6d.com/thread-475-1-1.html 最近关注项目中在线支付,所以看一下文档,在线支付应用开发: 基本所有的在线支付均采用以下方式: 客户点击结帐时将关于訂單的信息和货币信息,相应的信息U…

金融第三方网银在线支付通道、支付宝网银在线支付通道对接

银行卡在线支付 银行卡在线支付网关是网银在线推出的基于银行卡在线支付的第三方电子支付系统,通过整合各家银行的支付接口,支持国内银行借记卡和信用卡的在线支付,致力于为国内外从事电子商务的企业或个人提供安全、快捷、稳定的支付服务。 …

支付宝支付成功后通知在微信打开的提示页面

背景 正常情况下,在微信浏览器使用支付宝支付,会出现一大坨链接,让你手动的复制到浏览器打开去操作。 这样的用户体验,别说用户,就连没有审美的程序员也不能忍的。 于是阿力饼饼给出了方案,倒不是解决跳转的…

银联支付接口申请-手机控件支付

前一段时间在帮公司申请各种支付接口,在银联支付接口消耗了不少时间,其实银联支付申请还是比较简单的(不用上传app截图什么的),只是申请入口比较难找,还有填写的资料比较多。下面我给大家介绍下银联支付接口…

网银在线支付平台

网银在线支付平台 B 2C原文地址:http://viger6.blog.hexun.com/8309779_d.html 系统商户接口规范 版本号4.0 网银在线(北京)科技有限公司 目 录 1. 文档介绍... 1 1.1. 读者对象... 1 1.2. 版权声明... 1 2. 支付接口..…

网上支付

一。直接与银行对接 这种方式优缺点: 优点:直接与银行进行财务结算,交易资金核算比较安全,适合资金量比较大的企业 缺点:针对每个银行的规范进行开发,开发工作量大, 并且银行会不定期升级交易…

支付宝支付,APP报错:“商家订单参数异常,请重新发起支付”(已解决)

服务端更换appid后,移动端支付宝支付报错:“商家订单参数异常,请重新发起支付”。 (支付宝支付 服务端调用的version1.0版本的,与现在官方 app支付2.0版本所示接口参数有区别,接口API地址:支付…

工商银行网银支付问题 有网站想要安装以下加载项 来自Industrial and Commercial Bank of China Limited‘ 第三方支付机构上送网联跳转报文请求参数错误

如果使用非IE内核浏览器 使用IE内核浏览器会提示下载安全控件 点击下载如果出现 第三方支付机构上送网联跳转报文请求参数错误 下载中国工商银行安全控件 链接:https://pan.baidu.com/s/1-wKIPk6M3rPZ-x_Q7l_LYA 提取码:fdoh 失效的私聊我 然后就可…