java 建行接口_中国建设银行网上支付接口以及自动对账
一、关于支付:
最近用java语言做了一个建行网上支付的系统,和建行做的接口。现在整理一下发布出来。
开发之前,参考了同道中人苏飞同学的一篇文章,他写的非常好,非常完善和细致。用.net语言所写,见链接:
MD5算法,在.net中,有框架自带可以直接调用。在java中调用java.security.MessageDigest即可。
当然也可以网上找,很多。
把银行所需要的参数和值拼成sql串,加密后传送。链接上建行的网站。支付后会有成功或失败的返回结果。
这个结果需要用来接收。商户下载证书后生成的密钥和银行处理完返回的sign签名需要一致,才更改订单。
二、关于自动对账:
银行会在晚上处理当天的流水账,所以第二天可以进行已支付流水的查询和对账。我们可以以操作员的身份
下载对账文件,也可以完全交给程序来自动完成。
在银行提供的 “一点接入网上支付商户批量查询接口技术文档V1.2.doc”中,我选择了返回xml方式来获取。
原理是,提供文档中所需要的参数和值传入指定URL,然后银行处理完毕会返回xml以网页形式,
我们用 HttpClient 程序来读取其中的内容即可。该jar包见附件。
Java代码
HttpClient client = new HttpClient();
HttpMethod method = new PostMethod(url);
method.setRequestHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)");
method.setRequestHeader("Content-Encoding","text/html");
method.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
method.setRequestHeader("Accept-Language", "zh-cn");
method.setRequestHeader("Connection","close");
client.executeMethod(method);
byte[] bytes = method.getResponseBody();
String xmlString = new String(bytes);
System.out.println(xmlString.trim());
由于返回的xml开头空了4行,所以需要setRequestHeader来设置后才可以获取。
解析此xml,我选择jdom方式,不过处理前还是需要处理下,如下:
Java代码
String tempString = "";
InputStream is = new ByteArrayInputStream(xmlString.getBytes());
BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
for (String temp = br.readLine(); temp != null;
tempString += temp, temp = br.readLine()
);
logger.info("银行返回的xml字符串:"+tempString);
InputStream stream = new ByteArrayInputStream(tempString.getBytes());
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(stream);
继续
Java代码
//看是否能返回正确的xml格式数据
NodeList nodeList = doc.getElementsByTagName("DOCUMENT");
for (int i = 0; i
Element be = (Element) nodeList.item(i);
NodeList childNodes = be.getChildNodes();
for (int j = 0; j
if("RETURN_CODE".equals(childNodes.item(j).getNodeName())){
if("000000".equals(childNodes.item(j).getTextContent())){ //000000表示返回的是正确的对账数据
logger.info("返回正确的数据格式!");
//读取 QUERYORDER 内容
readXML(doc);
}else{
logger.error("返回数据格式错误!");
}
}
}
//循环结束
stream.close();
}
Java代码
NodeList nlCurrent = doc.getElementsByTagName("QUERYORDER");
for (int j = 0; j
Element elmtLesson = (Element) nlCurrent.item(j);
NodeList nlLesson = elmtLesson.getElementsByTagName("ORDERID");
System.out.println(nlLesson.item(0).getFirstChild().getNodeValue());
NodeList code = elmtLesson.getElementsByTagName("STATUSCODE");
String ORDERID = nlLesson.item(0).getFirstChild().getNodeValue();
String STATUSCODE = code.item(0).getFirstChild().getNodeValue();
}
ORDERID 即是订单号,接下来就是处理订单对象了,此处省略200字 。。。。
还有,程序要每天执行一次,可以用java.util下的Timer来设定调用,方法不难,网上例子很多。
这里我用了spring的quartz来调用,代码如下:
Java代码
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
0 30 1 * * ?
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
时间关系,说的不很详细,如果有疑问处或想深入交流的童鞋们,可以加我QQ:361570665.
java 建行接口_中国建设银行网上支付接口以及自动对账相关推荐
- 中国建设银行网上支付接口以及自动对账
一.关于支付: 最近用java语言做了一个建行网上支付的系统,和建行做的接口.现在整理一下发布出来.开发之前,参考了同道中人苏飞同学的一篇文章,他写的非常好,非常完善和细致.用.net语言所写,见链接 ...
- 支付宝支付接口_美团取消支付宝支付接口,支付大战硝烟又起!
用户在使用美团支付时发现,支付宝支付被取消了,美团月付和银行卡支付占据优先位置,而微信支付和Apple pay还在支付选择列表上.值得注意的是,支付宝母公司蚂蚁集团刚宣布要上市. 一时间," ...
- 计算机科学与探索支付宝,中国第三方网上支付发展研究-以支付宝为例(毕业论文).doc...
毕业设计(论文) 中国第三方网上支付发展研究 -以支付宝为例 学 院 专 业 年级班别 学 号 学生姓名 指导教师 年 月 PAGE III 摘要 当今信息时代,科学技术的迅猛发展,IT人员潜入研究计 ...
- php银联支付接口 demo,php版银联支付接口开发简单实例详解
这篇文章主要介绍了php版银联支付接口开发的方法,结合实例形式分析了php银联支付接口开发的具体流程与相关操作技巧,需要的朋友可以参考下 支付接口现在有第三方的支付接口也有银行的支付接口.这里就来介绍 ...
- 微信支付服务端自动对账
微信支付服务端自动对账 支付及对账流程链接 自动对账说明 微信支付后每天的商户系统的自动对账还是比较繁琐的,所谓自动对账实际上就是将商户某天交易成功的订单信息与微信某天的账单进行逐一匹配的过程.其涉及 ...
- 建行支付接口 php,ecshop下用php语言和jar包实现建设银行在线支付接口
最近应一个客户的要求在ecshop下开发建行网银的在线支付接口. 原来以为很简单,后来发现不是这么回事. 先看看建行的开发接口和实例代码.因为ecshop是Php的,所以在php的实例代码中有这么一段 ...
- php 银行支付通道_接口--php对接农行网上支付平台-b2b
对接农行网上支付平台 从银行那边获取到对应的接口包 将文件保存在网站的路径中 我是destoon网站系统对接,就放在了api/pay/新建一个文件夹abc/下 完成之后填写接口的配置文件 路径:ebu ...
- java chinapay_通过PHP/Java Bridge来实现ecshop的chinapay支付接口
背景: 最近弄ecshop网上商城这个系统,需要提供对中国银联支付支持,从网上查了一些资料,发现chinapay对php支持并不是十分友好.需要扩展编译啥的,似乎很麻烦.网上资料不是很多,php实现c ...
- 交通银行网上支付接口调用测试实例
公司最近有一个网站商城项目要开始开发了,这几天老板和几个同事一起开着需求会议, 讨论了接下来的业务规划和需求策略,等技术需求一下来还要讨论技术需求, 确认后再慢慢的进入开发阶段,趁着闲暇时间新造的人想 ...
最新文章
- Eclipse中的插件安装
- 学习Java就要掌握Java技术学习线路
- Selenium 自动化测试基础知识
- ubuntu下android源码编译环境,ubuntu12.04 64位上搭建android源码编译环境
- python 安装包列表导出到 txt
- 【clickhouse】clickhouse 漫谈SIMD、SSE指令集与ClickHouse向量化执行
- mysql 行转列_详解MySQL行列转换4个实现方案及反向行转列实验测试
- display和float使用上的区别(1)-----多栏布局的实现
- 局域网 广域网 IP TCP UDP
- QT 5.9.5的快捷键操作
- 运筹优化学习08:Repairing MIP infeasibility through local branching
- 魔众微信管理系统,简单易用的微信公众号管理系统
- Anaconda3最新版2022版的下载安装配置及使用教程(建议收藏,持续更新..)
- 2020年元宵节健康
- 怎样去掉“交互式服务对话框检测”提示对话框
- 网络上游戏制作相关学习站点的网址!
- Motion-based Detection and Tracking in 3D LiDAR Scans
- android 自定义含有滚动选择器的对话框
- C语言unsigned与signed使用辨析
- vue2实践揭秘pdf_Vue2实践揭秘