1、公钥还有银行卡号和密码等银联会提供,私钥按照银联提供的文档申请就可以了,需要说明的是申请的时候要用ie,并且在internet 选项-->安全-->自定义级别中,

将Active X 控件和插件 下的所有禁用都改为启用,如图:

2、在银联提供的测试网址登陆,如图:

3、输入登陆信息,第一次登陆需要修改密码,然后重新登陆,选择机构管理,生成商户密钥,如图:

4、选择生成的私钥路径,保存后,记得要点提交按钮,私钥第二天生效。

5、在src下创建config.properties文件,里面存放商户号、支付网关申请、公钥和私钥的存放路径,如:

merid = xxxxxxxxxxxxxxxx
merkeyfilepath = E\:\\key\\XXX
pubkeyfilepath = E\:\\key\\XXX
url = http://XXXXXXXXX

6、申请的servlet:

private static final String MERID = "merid";
    private static final String PaymentUrl = "url";
    private static final String MERKEYFILEPATH = "merkeyfilepath";

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String MerKeyPath = null;
        String merId = null;

String msg="";
        try{
            Properties config = Config.getInstance().getProperties();
            MerKeyPath = config.getProperty(MERKEYFILEPATH);
            merId = config.getProperty(MERID);
           
        }catch (Exception e){
            msg="私钥初始化失败!";
        }
        if (msg!="") {
            request.setAttribute("errors", msg);
            request.getRequestDispatcher(XXXXX).forward(request, response);
            return;
        }
        String ordId="0000000000000001";//订单号只能提交一次
        String transAmt="000000000001";//金额
        String curyId="156";//币种
        String transDate="20150601";//日期
        String transType="0001";//类型
        String version="20070129";//版本
        String bgRetUrl="http://XXXXXXXXX";//后台action
        String pageRetUrl="http://xxxxx.jsp";//前台jsp
        String gateId="";
        String priv1 = "";
        String chkValue = null;
        boolean flage= false;
        PrivateKey key = new PrivateKey();
        try{
            flage= key.buildKey(merId, 0, MerKeyPath);
        }catch (Exception e){
            System.out.print("创建失败");
        }
        //签名
        String data=merId+ordId+transAmt+curyId+transDate+transType+priv1;
        SecureLink sl = new SecureLink(key);
        chkValue = sl.Sign(data);

//将要提交的数据显示到页面
        Bean cbb=new Bean();
        cbb.setMerId(merId);
        cbb.setOrdId(ordId);
        cbb.setTransAmt(transAmt);
        cbb.setCuryId(curyId);
        cbb.setTransDate(transDate);
        cbb.setTransType(transType);
        cbb.setPriv1(priv1);
        cbb.setVersion(version);
        cbb.setBgRetUrl(bgRetUrl);
        cbb.setPageRetUrl(pageRetUrl);
        cbb.setGateId(gateId);
        cbb.setChkValue(chkValue);
        request.setAttribute("cbbInput", cbb);
        request.getRequestDispatcher(xxxxxxxx).forward(request, response);
        return;
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request,response);
    }

7、上面的servlet跳转到下面的页面:

<%@ page language="java" import="model.bean.*" pageEncoding="UTF-8"%>

<%@ page import="java.util.*"%>
<jsp:useBean id="cbbInput" scope="request" class="model.Bean" />

<form name="corpor" action="测试提交路径" method="post">
  <input type="hidden" name="MerId" value=“xxxxx”/>
  <input type="hidden" name="OrdId" value="xxxx"/>
  <input type="hidden" name="TransAmt" value="xxx"/>
  <input type="hidden" name="CuryId" value="xxx"/>
  <input type="hidden" name="TransDate" value="xxx"/>
  <input type="hidden" name="TransType" value="xxx"/>
  <input type="hidden" name="Version" value="xxx"/>
  <input type="hidden" name="BgRetUrl" value="xxx"/>
  <input type="hidden" name="PageRetUrl" value="xxx"/>
  <input type="hidden" name="GateId" value="xxxx"/>
  <input type="hidden" name="Priv1" value=""/>
  <input type="hidden" name="ChkValue" value="xxxx"/>
  <input type="submit" name="submit Button" value="提交" class="cmd"/>
</form>

8、点击提交,就会到企业网银登陆页面,如图:

9、输入卡号和密码登陆,会提示交易结果,如图:

10、PageRetUrl为上面的页面跳转回网站的页面,BgRetUrl 为后台action,用来验证和保存数据,servlet如下:
    private static final String url = "url";private static final String MERKEYFILEPATH = "merkeyfilepath";private static final String PUBKEYFILEPATH = "pubkeyfilepath";public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");/*获取服务器返回数据*/String status=request.getParameter("status");String merId=request.getParameter("merid");String ordno=request.getParameter("orderno");String transdate=request.getParameter("transdate");String amount=request.getParameter("amount");String currencycode=request.getParameter("currencycode");String transtype=request.getParameter("transtype");String checkvalue=request.getParameter("checkvalue");String gateId=request.getParameter("GateId");String priv1=request.getParameter("Priv1");//  String s=readReqStr(request);//此处将上面数据存入数据库//验签String PubKeyPath = null;try {Properties config = Config.getInstance().getProperties();PubKeyPath = config.getProperty(PUBKEYFILEPATH);} catch (Exception e) {}chinapay.PrivateKey key=new chinapay.PrivateKey();chinapay.SecureLink t;boolean flage=false;boolean flage1=false;int int = 0;try{flage=key.buildKey("999999999999999",int,PubKeyPath);}catch (Exception e){}if(!flage){return;}t=new chinapay.SecureLink(key);flage1=t.verifyTransResponse(merId,ordno,amount,currencycode,transdate,transtype,status,checkvalue);if(!flage1){System.out.print("验签失败");//   return;}else{if(status.equals("1001")){System.out.print("支付成功");}else {System.out.print("支付失败");}}
          //告诉银联你接收到消息了,否则银联会不停的发送信息
          resp.getWriter().write(JSON.toJSONString(cpCyberBankRes));resp.getWriter().flush();
    }    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doPost(request,response);    }

支付测试代码完成!!!!

网站接入银联网上支付(B2B)相关推荐

  1. H5网站接入支付宝的支付接口

    写本文章的目的是为了记录工作中遇到的问题,方便以后遇到可以迅速解决问题 H5手机网站接入支付宝的支付接口,推荐使用支付宝提供的SDK来快速开发 我使用的是SDK开发 引用命名空间 using Aop. ...

  2. uni-app 接入银联H5支付(Java)思路代码

    uni-app 接入银联H5支付(Java)思路代码 uni-app-web-view Java(后台部分代码)可以参考官方的Demo取代码 银联文档地址: H5支付. 第一次接触银联支付的话建议 跑 ...

  3. 2021年PC电脑网站接入微信登陆支付精讲--1小时自已就可动手接入功能,--所有流程一目了然

    2021年了,你还要疲于拼命吗,2001年初,遇到BUG就是躲,放下,去吃最好吃的,吃好喝好,睡一觉,再来解决, 现在是喜欢上BUG了,出现BUG,就发自内心的想搞清楚,是什么源因导致的,呵呵呵 PC ...

  4. phpcms实现PC网站接入微信Native支付

    微信支付-PC网站接入支付 微信支付支持完成域名ICP备案的网站接入支付功能.PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信"扫一扫" ...

  5. 如何接入银联在线支付网关

    使用银联开放服务平台服务端SDK快速接入网关支付产品,完成与银联对接的部分.主要流程为申请入网–>申请证书–>集成并配置SDK. 平台链接:https://open.unionpay.co ...

  6. vue - 【超详细】网站接入使用支付宝支付功能,点击支付跳转新页面后生成订单及支付二维码,实现支付宝在线付款详细的教程(整个支付的完整配置及支付流程,一键复制源码开箱即用)!

    效果图 在vue网站网页项目中,实现跳转新页面生成订单,进行 "支付宝" 支付详细教程,包括详细的配置及示例完整源代码, 你可以直接复制示例的完整源码(保证可用),改个参数就能用了 ...

  7. php支付宝h5 app,H5网站接入支付宝的支付接口

    [HttpPost]public voidAsyncPay() {SortedDictionary sPara =GetRequestPost();//将post请求过来的参数传化为SortedDic ...

  8. 电子商务网站网上支付原理简析

    一个电子商务网站要开通网上支付功能,有两种途径:一是通过第三方支付平台,例如支付宝.网银等:二是与银行协商获得一个支付接口.前一种方式以支付宝为例,商户可以向支付宝提交申请,申请成功后支付宝会提供一个 ...

  9. 网上支付平台接口使用总结

    2019年年底,也就是12月31号那天,西安这边的项目组工作已经结束,项目组人员调回武汉,时隔两年,终于回武汉了! 这次回武汉,进入一个与政府有关的项目,主要做统一支付平台. 主要是归纳一下支付有关的 ...

最新文章

  1. class h5 点击后样式变化_css实现选中后变色并且效果不消失
  2. Java 理论与实践: 非阻塞算法简介
  3. [FxCop.设计规则]16. 不要在封闭类中声明虚成员
  4. MyBatisPlus条件构造器实现降序排序的两种方式
  5. 微信支付PKIX path building failed
  6. 定时线程_SpringBoot定时任务,@Async多线程异步执行
  7. Lesson 4 Part 1 Newton's method
  8. 使用 Pig 进行数据分析
  9. 南大通用发布数据库新产品 携手用户伙伴点亮世界级
  10. [疑难解答]MSN常见问题及回答(转)
  11. IP地址后面/24/26/27/28/29/30网关数量分别是多少?如何计算?
  12. HC3i论坛医疗信息化热门资源100个
  13. 求简单多边形面积时非常有用的“鞋带公式”
  14. 进军互联网该如何选择html模板?
  15. 山东省计算机应用能力考核初级,山东省计算机应用能力考核1.doc
  16. 计院生活--第一章 卧薪尝胆
  17. 学习笔记1:搭建floodlight+mininet+sflow环境
  18. 声音频率分类(二十一)
  19. X-Window结构分析与应用
  20. Word实现汉字和拼音分离

热门文章

  1. oracle绑定变量执行计划,绑定变量对执行计划的影响
  2. 批处理解约瑟夫环应用题-shell
  3. IAR修改工程名方法
  4. Ubuntu18.04屏幕分辨率问题
  5. python数据分析知识体系_数据分析知识体系
  6. Google+ 登录
  7. 【操作教程】如何手动配置EasyNVR安防视频云服务平台的Onvif探测功能?
  8. 点成分享| 低温冷冻保存的技术研究(一)
  9. auto.js 公众号自动签到
  10. 不规则多边形区域的面积计算算法