您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程
ecshop支付接口我国银行对接示例
如萱2024-12-23Ecshop商城教程已有人查阅
导读我国银行的支付接口只提供有Java版,众所周之ecshop是采用php开发的,这让我们如何用php开发java的东东呢?办法始终是有的,我们可以先在ecshop里用php生成订单,提交给nginx,nginx转
我国银行的支付接口只提供有Java版,众所周之ecshop是采用php开发的,这让我们如何用php开发java的东东呢?办法始终是有的,我们可以先在ecshop里用php生成订单,提交给nginx,nginx转发的tomcat,再通过jsp文件完成订单签名,将订单数据发送给我国银行处理。
先看这个处理订单签名,发送B2C支付数据的jsp文件,我将它命名为index.jsp
[java] view plain copy
[java] view plain copy
先看这个处理订单签名,发送B2C支付数据的jsp文件,我将它命名为index.jsp
[java] view plain copy
<%@ page contentType=”text/html; charset=UTF-8″ language=”java” import=”java.sql.*” errorPage=”” %>
<%@ page import=”java.io.*” %>
<%@ page import=”java.util.*” %>
<%@ page import=”com.bocnet.common.security.PKCS7Tool” %>
<%
String merchantNo = request.getParameter(“merchantNo”);
String payType = request.getParameter(“payType”);
String orderNo = request.getParameter(“orderNo”);
String curCode = request.getParameter(“curCode”);
String orderAmount = request.getParameter(“orderAmount”);
String orderTime = request.getParameter(“orderTime”);
String orderNote = request.getParameter(“orderNote”);
//String orderUrl = request.getParameter(“orderUrl”);
String orderUrl = “http:// .***.com/webapps/boc/notify.jsp”; //根据自己网站的实际情况修改 String keyStorePath = “/home/ /bankey/boc.pfx”;
String keyStorePassword = “111111″;
String keyPassword = “111111″; try {
PKCS7Tool tool = PKCS7Tool.getSigner(keyStorePath, keyStorePassword, keyPassword);
String dataStr = orderNo + “|” + orderTime + “|” + curCode + “|” + orderAmount + “|” + merchantNo;
byte[] data = dataStr.getBytes(“UTF-8″);
String signData = tool.sign(data);
signData = signData.replace(“\n”, “”);
signData = signData.replace(“\r”, “”); out.println(“<div style=’text-align:center’><form name=’form1′ method=’post’ action=’http://180.168.146.75:81/PGWPortal/RecvOrder.do’><INPUT NAME=’merchantNo’ TYPE=’hidden’ value=’”+merchantNo+”‘><INPUT NAME=’payType’ TYPE=’hidden’ value=’”+payType+”‘><INPUT NAME=’orderNo’ TYPE=’hidden’ value=’”+orderNo+”‘ ><INPUT NAME=’curCode’ TYPE=’hidden’ value=’”+curCode+”‘><INPUT NAME=’orderAmount’ TYPE=’hidden’ value=’”+orderAmount+
“‘><INPUT TYPE=’HIDDEN’ NAME=’orderTime’ VALUE=’”+orderTime+”‘><INPUT TYPE=’HIDDEN’ NAME=’orderNote’ VALUE=’”+orderNote+”‘><INPUT TYPE=’HIDDEN’ NAME=’orderUrl’ VALUE=’”+orderUrl+”‘><INPUT TYPE=’HIDDEN’ NAME=’signData’ VALUE=’”+signData+”‘></form>正在去往工行支付页面…<script>document.all.form1.submit();</script></div>”); } catch (Exception e) {
// TODO Auto-generated catch block
out.println(e);
}
%>
当jsp文件发送数据给我国银行后,页面会跳转到我国银行的支付页面,客户完成一系列的支付操作后,页面会跳转回商城网站。同时我国银行会向网站返回B2C支付结果通知数据,这些数据需要使用java验签,验签通过后再把数据发送给ecshop的respond.php文件,完成数据验证,改变订单状态,这样一次完整的支付就算完成了。以下是notify.jsp文件源码。[java] view plain copy
<%@ page contentType=”text/html; charset=UTF-8″ language=”java” import=”java.sql.*” errorPage=”” %>
<%@ page import=”java.io.*” %>
<%@ page import=”java.util.*” %>
<%@ page import=”java.security.GeneralSecurityException” %>
<%@ page import=”com.bocnet.common.security.PKCS7Tool” %> <%
//获取银行返回数据
String merchantNo = request.getParameter(“merchantNo”); // 商户号
String orderNo = request.getParameter(“orderNo”); // 商户订单号
String orderSeq = request.getParameter(“orderSeq”); // 银行订单流水号
String cardTyp = request.getParameter(“cardTyp”); // 银行卡类别
String payTime = request.getParameter(“payTime”); // 支付交易的日期时间
String orderStatus = request.getParameter(“orderStatus”); // 订单状态
String payAmount = request.getParameter(“payAmount”); // 支付金额
String orderIp = request.getParameter(“orderIp”); // 客户支付IP地址
String orderRefer = request.getParameter(“orderRefer”); // 客户浏览器Refer信息
String bankTranSeq = request.getParameter(“bankTranSeq”); // 银行交易流水号
String returnActFlag = request.getParameter(“returnActFlag”); // 返回操作类型
String signData = request.getParameter(“signData”); //签名数据
String rootCertificatePath = “/home/ /bankey/BOCCAU3.cer”; try {
String path=request.getSession().getServletContext().getRealPath(“/boc/tranData.d”);
FileWriter fw=new FileWriter(path + “/report.txt”); //保存接口开发中的调试信息
fw.write(merchantNo+” “+orderNo+” “+payTime+” “+orderStatus+” “+payAmount+” “+signData+”\n”); PKCS7Tool tool = PKCS7Tool.getVerifier(rootCertificatePath);
String signature = signData;
String dataStr = merchantNo + “|” + orderNo + “|” + orderSeq + “|” + cardTyp + “|” + payTime + “|” + orderStatus + “|” + payAmount;
byte[] data = dataStr.getBytes(“UTF-8″);
String dn = null;
tool.verify(signature, data, dn);
if(orderStatus.equals(“1″)) {
//支付成功处理代码
fw.write(merchantNo+”订单支付成功\n”);
response.sendRedirect(“http:// .***.com/respond.php?code=boc&orderNo=”+orderNo+”&orderStatus=”+orderStatus+”&payAmount=”+payAmount);
} else{
//支付失败处理代码
fw.write(merchantNo+”订单支付失败\n”);
}
} catch (Exception e) {
out.println(e);
}
%>
以上就是处理订单的两个jsp文件,至于ecshop中的我国银行支付插件开发就比较简单了
本文标签:
很赞哦! ()
相关教程
图文教程
ecshopv2.7.3注入漏洞原因分析和修复方法
ECSHOP v2.7.3注入漏洞分析和修复测试版本漏洞条件漏洞利用产生原因修复方案1.测试版本v2.7.3 RELEASE 20121106(新)
ecshop快速购买添加到购物车和立刻购买并存的方法
在后台开启“一步购物则”可以不用到购物车“直接结算” 。从而实现立刻购买。然而购物车的功能又没有了。有没有像淘宝那样即可以立刻购买。又有购物车功能呢?
ecshop商品图片模糊修改图片上传压缩质量的方法
ecshop商品图片模糊修改图片上传压缩质量修改教程在includes/cls_image.php中。imagejpeg这个函数是生成图片的函数,范围从 0(最差质量,文件更小)到 100(佳质量,文件很大)。
ecshop会员注册订单分成推荐设置说明教程
首先从后台左面的菜单栏选择推荐管理->推荐设置 ,打开后默认是选择的推荐注册分成推荐注册分成 是指有人从你推荐的地址点击注册后给你的分成。
相关源码
-
(PC+WAP)红色厨具厨房用品设备pbootcms模板源码下载为厨具设备企业设计的响应式网站模板,采用PbootCMS内核开发,适用于商用厨房设备、家用厨具、厨房用品等企业展示。模板包含产品展示、新闻动态、案例中心等标准模块,助您快速搭建专业级行业网站。查看源码 -
(PC+WAP)地暖热水器烘干机节能设备网站模板下载为地暖热水器及节能设备企业设计的PbootCMS网站模板,集成产品展示、节能方案介绍、技术参数说明等专业模块。采用PC与移动端同步响应架构查看源码 -
(自适应响应式)黑色LED显示屏户外广告屏网站源码下载这是一款基于PbootCMS内核开发的响应式网站模板,专门为LED显示屏及户外广告行业打造。模板适配各类显示设备,帮助企业快速搭建专业官网,展示产品与服务优势,有效提升品牌形象。查看源码 -
(自适应)调节阀门气动球阀控制阀网站模板源码下载为调节阀门、气动球阀等工业设备企业打造的响应式网站模板,基于PbootCMS系统开发。突出产品参数展示与技术文档管理功能,通过专业化的布局设计有效呈现工业设备特性,适配各类终端访问需求。查看源码 -
(自适应响应式)法律咨询律师事务所法务pbootcms源码下载为律师事务所、法律咨询机构设计,特别适合展示法律服务、律师团队和成功案例。采用响应式技术,确保在不同设备上都能提供专业的法律信息展示和咨询服务。查看源码 -
(自适应HTML5)响应式智能设备人工智能机器pbootcms源码免费下载这款基于PbootCMS开发的网站模板为人工智能和智能设备行业设计,采用现代化科技风格,突出产品的智能特性和技术创新。模板架构合理,功能完善,能够有效展示各类智能产品的核心功能和解决方案。查看源码
| 分享笔记 (共有 篇笔记) |
