谁做过网银在线对接银行支付接口文档对接

电子商务平台支付接口开发原理及流程
随着电子商务行业的发展,很多中小企业也加入了电子商务大军,实现电子商务非常重要的一个需求就是有一个强大的电子商务网站平台,用于对企业电子商务相关产品、服务进行管理等操作。而完成整个电子商务流程最不能越少的环节就是收款,通过网络,将商品、服务的款项支付给电子商务平台的所有者。
我们将电子商务平台所有者,即在电商平台中出售商品或服务的提供者,称为商户。电子商务平台要实现的支付功能,即是顾客通过电商平台进行商品、服务的选择,提交订单,由平台进行价格处理,并为订单计算出需要支付的总额,并提供给顾客进行付款。
商户需要与银行、银联或第三方支付机构进行签约实现网站的支付功能
那么顾客通过网络如何付款,并且商户如何收到钱款并转到自己的银行卡中呢?这就是本篇文章介绍的重点。
我们知道,资金处理必需经由银行,商户可以与某商业银行签约,成功该商业银行的特约商户,由银行提供相关的技术接口,实现在网站中添加相关接口程序,将用户在该银行的相关款项转入到自己的账户中,实现收款。
然而商业银行是很多的,用户所持有的银行卡也是多种多样,所以要实现让大多数银行卡都可以通过网站支付,就需要单独与各家银行进行签约,接入成本非常高。为解决此接入繁琐的问题,我们可以直接与&银联在线支付&进行签约,使用银联提供的支付接口。
&银联在线支付&是中国银联联合商业银行共同推出的集成化、综合性、开放性网上支付平台,全面支持各类型银联卡。方便快捷、安全可靠、全球通用。然而随着人民银行颁发第三方支付牌照,各种第三方支付公司直接与商业银行进行签约并对商户提供支付接入,第三方支付公司接入门槛低、费率低、效率高而且技术开发简单引起了众多商业网站的接入使用。
像大家熟知的微博钱包、支付宝、财付通、快钱等,都是拥有人民银行第三方支付拍照的正规支付公司。
与银联、第三方支付公司签约后的收款流程
商户网站将支付信息提供给支付网关后,网站引导用户进入相关银行网关进行支付,完成后银行扣款,并将支付结果返回给第三方支付公司,支付公司收到结果后将为商户进行支付平台内的入账处理,等待结算。结算完成后,商户即可登录第三方支付平台进行提现,将资金通过第三方支付平台转入到自己的银行卡中。
现在支付公司提供的结算周期一般是T+1或T+0,T+1模式时,即用户支付完毕后,支付公司将在第二天进行结算,商户即可将资金提取到自己的银行卡,或支付公司直接结算到约定的商户收款账户中。如果是T+0的模式,则支付资金可以随时清算,并提现到商户银行卡。
与银联、第三方支付公司签约后的技术开发流程
与支付公司签约后,网站将获得相关开商户号、密钥、支付网关以及开发文档。技术人员通过阅读文档,获取需要使用的相关数据参数,如商品名称、金额等,并通过约定的加密方式及密钥进行加密处理,将以FORM表单POST或GET的方式发送给支付公司提供的支付网关URL。
支付网关收到商户提供的相关参数后将进行数据处理及加密验证,如果数据合格且密钥验证成功,将引导用户进入各家银行选择页面,用户在选择自己使用的银行后,将进入相关银行的支付网关进行支付。
用户在银行网关成功付款后,银行进行扣款,并将支付结果回传给支付公司,支付公司收到银行的结果,同样进行签名验证,并将支付结果信息传递给商户网站。
支付公司将支付结果传递给商户网站也是通过FORM表单的方式,只是该数据传递属于服务器后端处理的。商户网站向支付公司发起支付请求传递支付相关参数时,就包含一个或两个URL,用于指定接收支付结果的URL中。
商户网站接入支付结果有两种方式,一种是通过浏览器进行跳转通知,一种是服务器端异步通知。那么商户的技术人员该如何选择呢?我们对这两种通知类型进行分析。
浏览器跳转通知:这种方式主要是基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改,而降低安全性。所以我们推荐技术人员开发时使用后端服务器通知做技术判断,而只将前台通知进行支付相关显示,不进行逻辑处理。
服务器异部通知:该方式是支付公司服务器后台直接向用户指定的异步通知URL发送参数,采用POST或GET的方式。商户网站接收异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等。
注:相关网站建设技巧阅读请移步到频道。
看过本文的人还看过
最新图文推荐
最新专栏文章
大家感兴趣的内容
网友热评的文章网银在线支付接口
&&【中融科技】【▂▃▅▇专业三方支付接口业务▇▅▃▂ 联系方式 TEL: QQ:】中融科技的创作设计团队由等各方面富有激情和创造力的专业人才组成,团队成员均有长期且丰富的网站建设经验。我们将义不容辞地为消费者提供一个客观评估与理性选择的建议,为客户的发展提供一个良好的开端。就目前来看,我认为第三方支付平台最大的威胁还是安全问题。因为电子商务网站本身就是虚拟的一个购物平台,第三方支付作为支付中介,必须有足够的安全措施,才能保证消费者和商家的利益,消除消费者的后顾之忧。以下总结了几点措施:&&&&&&①统一数字证书。我国信用体系建设还不尽人意,统一数字证书有利于信用体系建设。央行与1999年建立起来的中国金融认证中心(cfca)希望能够建立一个统一标准的认证证书,并进行了一些推广应用,但效果并不理想,对此政府应该加强cfca建设,通过政府部门的引导,改变各商业银行目前的状况,为第三方支付建立一个良好的支付环境。&&&&&&②制定和完善相关的法律法规。第三方支付模式不仅仅是提供一个纯技术的网上支付平台,其服务跟类似于结算业务体系和金融延伸服务。&&&&&&③对于第三方支付存在的吸存资金问题必须:⑴确定第三方支付中转账户的每笔到款必须在规定的时间内划走,如不划走其利息也不应该为第三方所有,应为消费者或商家所有。确定时限有利于减少截流资金行为的发生。⑵第三方支付的中转账户应该是一个特殊账户,银行统一建立统一管理。区别于一般第三方支付平台自由资金账户,中转账户的资金不得挪作他用。⑶第三方支付公司必须向银行交纳保证金,以减少因发生问题使消费者、商家蒙受损失。&&&&&&④密切与银行的关系。前面已经论述过银行系统是第三方支付平台的运作基础,而且银行由于其规模庞大,实力雄厚,在早期的发展过程中已经树立了值得信赖的品牌,第三方支付平台智能密切与银行的合作关系同时避开银行优势项目,使第三方支付成为网上支付的主流。扁平化模式趋向,方便双向管理,订单查询便捷,财务对账方便 。【中融科技】【▂▃▅▇专业三方支付接口业务▇▅▃▂ 联系方式 TEL: QQ:】
分享这篇日志的人也喜欢
射手座射手座射手座
早上好?听歌咯
欢乐颂新闻发布会现场
戴好耳机!!
下雨天了怎么办
身輕體活一堆倒萌萌小公舉
热门日志推荐
人人最热标签
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场森动价:?500
商品编号:3840
原价:?6000
可用代金券: ?10
评  价:
10分10736 次浏览
本产品由 第三方支付平台 负责发货并提供售后服务!森动网提供15天担保交易并全程管控, 保障双方权益!
卖家:第三方支付平台
工作:8:30-21:30网银在线支付接口和应用 - java - ITeye技术网站
博客分类:
关键字: 网银在线支付接口和应用
  最近关注项目中在线支付,所以看一下文档,在线支付应用开发:
  基本所有的在线支付均采用以下方式:
   客户点击结帐时将关于訂單的信息和货币信息,相应的信息URL,经过md5或其他方式发送(可能Socket和Http或Https)支付平台(块钱,paypal或支付宝等),支付平臺处理完毕时根据相应URL,返回相关的信息(付款信息,訂單信息,验证信息).
  在实际操作Money的问题人们一向关注他的安全性等问题,同时本人习惯在通过http方式访问非外网时采用Commons-httpclient的post发送实现,简单方便,所以采用此种实现:具体看以下API和原代码:
网银在线支付API接口:
商户&&&&&&网银在线支付:
&form method=post action="/select_bank"&
&input type=hidden name=v_mid value="1001"&&&&&&&&&&&&&&&&&&&&&&&& 商户编号
&input type=hidden name=v_oid value="1-"&&&&& 订单编号
&input type=hidden name=v_amount value="13.45"&&&&&&&&&&&&&&&&&&& 订单总金额
&input type=hidden name=v_moneytype value="0"&&&&&&&&&&&&&&&&&&&&&&&&& 币种
&input type=hidden name=v_url value="http://domain/program"&
支付动作完成后返回到该url,支付结果以POST方式发送
&input type=hidden name=v_md5info value="A1E8AF60F49C143A7B95"&&&&&&&&&&&&&&&&& 订单MD5校验码
&input type="hidden" name="remark1 " value=""&备注字段1
&input type="hidden" name="remark2" value=""&备注字段2
&input type=hidden name=v_rcvname value="张三"&&&&&&&&&&&&&&&&&&&& 收货人姓名
&input type=hidden name=v_rcvaddr value="北京海淀"&&&&&&&&&&&&&&& 收货人地址
&input type=hidden name=v_rcvtel value=""&&&&&&&&&&&&&&&&&& 收货人电话
&input type=hidden name=v_rcvpost value="100036"&&&&&&&&&&&&&&&&&&&&&& 收货人邮编
&input type=hidden name=v_orderstatus value="0"&&&&&&&&&&&&&&&&&&&&& 商品信息
&input type=hidden name=v_ordername value="李四"&&&&&&&&&&&&&&&& 订货人姓名
&input type=hidden name= v_orderemail value=""&&&&&&& 订货人邮件
&input type=submit value="网银在线支付"&
MD5校验串生成方法:当消费者在商户端生成最终订单的时候,将订单中的v_amount v_moneytype v_oid v_mid v_url key六个参数的value值拼成一个无间隔的字符串(顺序不要改变)。参数key是商户的MD5密钥(该密匙可在登陆商户管理界面后自行更改。)
网银在线支付&&&商户
支付完成后页面转到商户,从网银在线支付返回的消息格式为:
&form method=get action="v_url" target=_self&
&input type="hidden" name="v_oid" value=""&&&&&&&&&&
& &input type="hidden" name="v_pstatus" value=""&
&input type="hidden" name="v_pstring" value=""&
&input type="hidden" name="v_pmode" value=""&
&input type="hidden" name="v_md5str" value=""&
&input type="hidden" name="v_amount" value=""&
&input type="hidden" name="v_moneytype" value=""&
&input type="hidden" name="remark1 " value=""&
&input type="hidden" name="remark2" value=""&
该消息格式详细解释如下:v_url是该笔订单提交时参数v_url 的值,即网银返回到商户的接口地址。
返回值说明
&
商户发送的v_oid定单编号。
20(表示支付成功)
30(表示支付失败)
支付结果信息
支付银行,例如工商银行
订单MD5校验码
该参数的MD5字符串的顺序为:v_oid,v_pstatus,v_amount,v_moneytype,key
MD5字符串示例:
1-2.340key
用MD5函数加密上述字符串后得到的值如果和v_md5str值相等即表明返回的信息没有被纂改
订单总金额
订单实际支付金额
v_moneytype
订单实际支付币种
.vnvtrip.china.pay.
import .vnvtrip.mons.ChinaPayConstants.CHINABANK_NOTIFY_URL_HTTP;
import .vnvtrip.mons.ChinaPayConstants.CHINABANK_PAY_HTTPS;
import .vnvtrip.mons.ChinaPayConstants.CHINABANK_PAY_MD5_KEY;
import java.util.HashM
import java.util.M
import java.util.P
import mons.codec.digest.DigestU
.vnvtrip.mons.E
.vnvtrip.mons.HTTPC
* 网银接口服务的代理
* @author longgangbai
*/
public class ChinaPayProxy {
/**
& * 在下訂單時采用的的Md5加密的信息: MD5校验串生成方法:当消费者在商户端生成最终订单的时候, 将订单中的v_amount
& * v_moneytype v_oid v_mid v_url key六个参数的value值拼成一个无间隔的字符串(顺序不要改变)。
& * 参数key是商户的MD5密钥(该密匙可在登陆商户管理界面后自行更改。)
& *
& * @param v_amount
& * @param v_moneytype
& * @param v_oid
& * @param v_mid
& * @param v_url
& * @param key
& * @return
& */
private static String getMd5Sign(String v_amount, String v_moneytype,
&& String v_oid, String v_mid, String v_url, String key) {
& StringBuffer sb = new StringBuffer();
& sb.append(v_amount);
& sb.append(v_moneytype);
& sb.append(v_oid);
& sb.append(v_mid);
& sb.append(v_url);
& sb.append(key);
& byte[] bytes = DigestUtils.md5(sb.toString());
& String md5info = new String(bytes).toUpperCase();
& return md5
/**
& * 调用支付网关接口网址 银行结帐的接口代理 (本人习惯采用Commons-httpclient实现)
& * 用途:用来接受商户发给网银在线服务支付的订单信息
& *
& * @param v_mid
& *&&&&&&&&&&& 商户编号(非空)
& * @param v_oid
& *&&&&&&&&&&& 订单编号(非空)(格式:订单生成日期(yyyymmdd)-商户编号-商户流水号)字段不可超过64位
& * @param v_amount
& *&&&&&&&&&&& 订单总金额 (非空)
& * @param v_moneytype
& *&&&&&&&&&&& 货币类型 (非空) 0:RMB 1美元
& * @param v_url
& *&&&&&&&&&&& (非空) 支付的动作完成时返回的该url,支付结果以post方式发送
& * @param v_md5info
& *&&&&&&&&&&& 订单md5校验码
& * @param remark1
& *&&&&&&&&&&& 备注字段1(可选字段)
& * @param remark2
& *&&&&&&&&&&& 备注字段2 (可选字段)
& * @param v_vmd
& *&&&&&&&&&&& yyyymmdd 备注字段2 (不可为空字段)
& * @param v_rcvname
& *&&&&&&&&&&& 收货人姓名 (自定义非网银必须字段)
& * @param v_rcvaddr
& *&&&&&&&&&&& 收货人地址(自定义非网银必须字段)
& * @param v_rcvtel
& *&&&&&&&&&&& 收货人电话(自定义非网银必须字段)
& * @param v_rcpost
& *&&&&&&&&&&& 收货人邮编(自定义非网银必须字段)
& * @param v_orderstatus
& *&&&&&&&&&&& 商品信息(自定义非网银必须字段)
& * @param v_ordername
& *&&&&&&&&&&& 订货人姓名(自定义非网银必须字段)
& * @param v_orderemail
& *&&&&&&&&&&& 订货人邮件(自定义非网银必须字段)
& * @return
& */
public static boolean chinaBankPayCheck(String v_mid, String v_oid,
&& String v_amount, String v_moneytype, String v_url, String remark1,
&& String remark2, String v_rcvname, String v_rcvaddr,
&& String v_rcvtel, String v_rcpost, String v_orderstatus,
&& String v_ordername, String v_orderemail) {
& Properties p = Env.getEnv().getProperties();
& String md5key = p.getProperty(CHINABANK_PAY_MD5_KEY);
& String v_md5info = getMd5Sign(v_amount, v_moneytype, v_oid, v_mid,
&&& v_url, md5key);
& Map&String, String& paramMaps = new HashMap&String, String&();
& paramMaps.put("v_mid", v_mid);
& paramMaps.put("v_oid", v_oid);
& paramMaps.put("v_amount", v_amount);
& paramMaps.put("v_moneytype", v_moneytype);
& paramMaps.put("v_url", p.getProperty(CHINABANK_NOTIFY_URL_HTTP));
& paramMaps.put("v_md5info", v_md5info);
& paramMaps.put("remark1", remark1);
& paramMaps.put("remark2", remark2);
& paramMaps.put("v_rcvname", v_rcvname);
& paramMaps.put("v_rcvaddr", v_rcvaddr);
& paramMaps.put("v_rcvtel", v_rcvtel);
& paramMaps.put("v_rcpost", v_rcpost);
& paramMaps.put("v_orderstatus", v_orderstatus);
& paramMaps.put("v_ordername", v_ordername);
& paramMaps.put("v_orderemail", v_orderemail);
& return HTTPClient.executeHttp(CHINABANK_PAY_HTTPS, paramMaps, null);
/**
& * result为支付完毕接受的结果的map 校验检测在网银支付数据是否被拦截的
& *
& * @param v_oid
*&&&&&&&&&&& 获取结果中的訂單编号
& * @param v_pstatus
*&&&&&&&&&&& 获取訂單的支付状态
& * @param v_pstring
*&&&&&&&&&&& 支付的结果
& * @param v_amount
*&&&&&&&&&&& 实际支付的金额
& * @param v_moneytype
*&&&&&&&&&&& 实际支付的币种
& * @param v_md5str
*&&&&&&&&&&& 获取訂單校验的MD5验证
& * @return
& */
public static boolean checkPayOff(String v_oid, String v_pstatus,
&& String v_pstring, String v_amount, String v_moneytype,
&& String v_md5str) {
& Properties p = Env.getEnv().getProperties();
& String md5key = p.getProperty(CHINABANK_PAY_MD5_KEY);
& String checkmd5 = getCheckMd5(v_oid, v_pstatus, v_amount, v_moneytype,
&&& md5key);
& if (checkmd5.equals(v_md5str)) {
&&
& }
&
/**
& * 得到网银訂單付款后Md5加密检查
& *
& * @param v_oid
& * @param v_pstatus
& * @param v_amount
& * @param v_moneytype
& * @param key
& * @return
& */
private static String getCheckMd5(String v_oid, String v_pstatus,
&& String v_amount, String v_moneytype, String key) {
& StringBuffer sb = new StringBuffer();
& sb.append(v_oid);
& sb.append(v_pstatus);
& sb.append(v_amount);
& sb.append(v_moneytype);
& sb.append(key);
& byte[] bytes = DigestUtils.md5(sb.toString());
& String md5info = new String(bytes).toUpperCase();
& return md5
浏览: 43997 次
来自: 北京
还有,能否指点下这个问题
看了你的文章,我才我发现我好象也是要 ...
博主,能否指点下,这个怎么调用……
我正在学ajax,希望您指 ...
&script type=&text/java ...银行卡在线支付
什么是网关支付
网关支付是网银在线推出的基于银行卡在线支付的第三方电子支付系统,通过整合各家银行的支付接口,实现用户可直接把资金从银行卡中转账到网站账户中的支付服务,目前支持全国26家国内主流银行在线支付。致力于为国内外从事电子商务的企业或个人提供安全、快捷、稳定的支付服务。
高效的接入方式
简单安全的接口,T+2天接入完成
强大的账户管理功能
随时查询账户交易明细,进行账户管理及对账
安全的系统保障
通过PCI-DSS信息安全认证 领先的技术、严密的流程,给您的在线交易以有力的安全保障
高效的清结算
自动补单+人工补单双重保障,彻底解决掉单问题
尊敬的商户,请您先注册,您的注册信息审核通过后,我们会尽快联系您,帮助您开通相关服务。
&2015网银在线(北京)科技有限公司
支付业务许可证编号Z0
京ICP证 040599号
京ICP备号-1
单位编号:

我要回帖

更多关于 网银在线接口对接demo 的文章

 

随机推荐