模拟建行网上支付服务器通知

本文详细介绍了支付网关接收到的商户订单信息处理流程,包括如何获取并处理POSID、BRANCHID、ORDERID等关键参数,以及如何使用RSA签名进行数据完整性和来源验证,最后将处理后的信息重定向到指定服务器通知URL。

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

ContractedBlock.gifExpandedBlockStart.gifCode
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 accType = request.getParameter("ACC_TYPE");  //ACC_TYPE    帐户类型    CHAR(2)    从银行信息中获得
        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(
"&ACC_TYPE=" + accType);
        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("ServerNoticeUrl"));
        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(
"&ACC_TYPE=" + accType);
        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/1582817.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值