网站接入银联网上支付(B2B)
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)相关推荐
- H5网站接入支付宝的支付接口
写本文章的目的是为了记录工作中遇到的问题,方便以后遇到可以迅速解决问题 H5手机网站接入支付宝的支付接口,推荐使用支付宝提供的SDK来快速开发 我使用的是SDK开发 引用命名空间 using Aop. ...
- uni-app 接入银联H5支付(Java)思路代码
uni-app 接入银联H5支付(Java)思路代码 uni-app-web-view Java(后台部分代码)可以参考官方的Demo取代码 银联文档地址: H5支付. 第一次接触银联支付的话建议 跑 ...
- 2021年PC电脑网站接入微信登陆支付精讲--1小时自已就可动手接入功能,--所有流程一目了然
2021年了,你还要疲于拼命吗,2001年初,遇到BUG就是躲,放下,去吃最好吃的,吃好喝好,睡一觉,再来解决, 现在是喜欢上BUG了,出现BUG,就发自内心的想搞清楚,是什么源因导致的,呵呵呵 PC ...
- phpcms实现PC网站接入微信Native支付
微信支付-PC网站接入支付 微信支付支持完成域名ICP备案的网站接入支付功能.PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信"扫一扫" ...
- 如何接入银联在线支付网关
使用银联开放服务平台服务端SDK快速接入网关支付产品,完成与银联对接的部分.主要流程为申请入网–>申请证书–>集成并配置SDK. 平台链接:https://open.unionpay.co ...
- vue - 【超详细】网站接入使用支付宝支付功能,点击支付跳转新页面后生成订单及支付二维码,实现支付宝在线付款详细的教程(整个支付的完整配置及支付流程,一键复制源码开箱即用)!
效果图 在vue网站网页项目中,实现跳转新页面生成订单,进行 "支付宝" 支付详细教程,包括详细的配置及示例完整源代码, 你可以直接复制示例的完整源码(保证可用),改个参数就能用了 ...
- php支付宝h5 app,H5网站接入支付宝的支付接口
[HttpPost]public voidAsyncPay() {SortedDictionary sPara =GetRequestPost();//将post请求过来的参数传化为SortedDic ...
- 电子商务网站网上支付原理简析
一个电子商务网站要开通网上支付功能,有两种途径:一是通过第三方支付平台,例如支付宝.网银等:二是与银行协商获得一个支付接口.前一种方式以支付宝为例,商户可以向支付宝提交申请,申请成功后支付宝会提供一个 ...
- 网上支付平台接口使用总结
2019年年底,也就是12月31号那天,西安这边的项目组工作已经结束,项目组人员调回武汉,时隔两年,终于回武汉了! 这次回武汉,进入一个与政府有关的项目,主要做统一支付平台. 主要是归纳一下支付有关的 ...
最新文章
- class h5 点击后样式变化_css实现选中后变色并且效果不消失
- Java 理论与实践: 非阻塞算法简介
- [FxCop.设计规则]16. 不要在封闭类中声明虚成员
- MyBatisPlus条件构造器实现降序排序的两种方式
- 微信支付PKIX path building failed
- 定时线程_SpringBoot定时任务,@Async多线程异步执行
- Lesson 4 Part 1 Newton's method
- 使用 Pig 进行数据分析
- 南大通用发布数据库新产品 携手用户伙伴点亮世界级
- [疑难解答]MSN常见问题及回答(转)
- IP地址后面/24/26/27/28/29/30网关数量分别是多少?如何计算?
- HC3i论坛医疗信息化热门资源100个
- 求简单多边形面积时非常有用的“鞋带公式”
- 进军互联网该如何选择html模板?
- 山东省计算机应用能力考核初级,山东省计算机应用能力考核1.doc
- 计院生活--第一章 卧薪尝胆
- 学习笔记1:搭建floodlight+mininet+sflow环境
- 声音频率分类(二十一)
- X-Window结构分析与应用
- Word实现汉字和拼音分离