java 在线支付功能实现一
实现的两种方法
1 直接与银行对接: 交易比较安全,适合资金流量比较大的企业,这种方案适合于,每月结算金额百万以上的.
但开发工作量比较大,而且银行会不定期升级交易系统,每个银行的接口都不同,交纳的费用也不低.
2 通过中间公司 间接与银行对接: 开发工作量较少,银行升级交易系统一般我们不作修改,除非中间企业修改了,这种方案月结算几十万左右的交易中小企业
因为是中间企业进行的资金结算,目前大部分都是私人开发.不是很安全
国内:首信支付 http://www.beijing.com.cn 每年交纳一定的费用(当当网,红孩子,京东商城),每笔还要扣除部分费用
易宝支付 http://www.yeepay.com 接入免费,盛大,E龙网,把把运动网等。每笔扣除相关费用
易宝支付的规范
加密:MD5- hrmac;
1. 网上支付两种接入方案
--直接与银行对接
优点:因为直接与银行进行财务结算,交易资金结算比较安全。适合资金流量比较大的企业,这种方案适合于:每月结算金额佰万以上的企业。
缺点:开发工作量比较大,而且银行会不定期升级交易系统,随着银行系统的升级,企业也需要作相应改动,所以维护工作量也是比较大的,而且企业每年还需要向银行交纳一定数量的接口使用费。
--通过中间公司间接与银行对接
优点:开发工作量较少,因为使用的是中间企业提供的接入规范,所以银行升级系统,不需要企业作相应修改,除非中间企业的接入规范发生了改变,企业才作相应修改。相对前一种接入方案,这种方案的维护工作量比较少的。因为只与一家企业对接,所以接入费用相对比较低。这种方案适合于:每月结算金额在几十万以下的中小企业。
缺点:因为是与中间企业进行资金结算,目前所有中间企业都是私企,资金安全是个大问题。
2.目前在国内做的比较好的中间支付公司:
1) 首信易支付:http://www.beijing.com.cn/
每年需要交纳一定的接口使用费,并且从交易金额中扣除1%的手续费。像当当网、红孩子、京东商城使用了首信易支付。
2)易宝支付: http://www.yeepay.com/
接入免费,只从交易金额中扣除 1%的手续费。像盛大、 e龙网、巴巴运动网使用了易宝支付。
3.易宝支付接入规范
1)MD5-hmac:
hmac 是一种秘密的密钥验证算法。hmac 提供的数据完整性和源身份验证完全取决于密钥分配的范围。如果只有发起者和接收者知道hmac密钥,那么这就对两者间发送的数据提供了源身份验证和完整性保证。
2)MD5-hmac的实现
是由易宝提供的DigestUtil工具类.不需要我们自己实现.只要按照要求传入参数得到结果就行. 这个类在网上也可以下载到.
5.流程(分为两个部分)
1)发起支付请求
使用GET/POST方式向支付网关发起HTTP请求.(https://www.yeepay.com/app-merchant-proxy/node)
支付网关就是一个路径.
向支付网关发送支付请求要带一些参数.
-支付方式:p0_Cmd,还有电话支付等,所有要有所区别.
-商家 ID:p1_MerId,在申请的时候由易宝给的.
-交易结果通知地址:p8_Url,为下面接受支付结果信息使用的.
等等...在易宝支付接入规范中,有详细的说明,只要按照要求执行就好了.
-应答机制:0,判断响应码,要是200就表示支付结构信息通知你了.1,获取服务器返回的success.
2)接受支付结果信息
获取银行给商家返回的信息.
各个参数的名称在易宝支付接入规范中都有说明.
特别要注意的:接收处理订单的时候,要注意对订单的状态进行判断.否则会有表单重复提交的问题.交一次钱,刷新页面就会多次购买.
总结:
--发出GET 或POST请求都行
--页面要是GBK/GB2312编码的.
--发送的参数请求不是自己随便起的,是接入规范中定义好的.
-- 易宝提供的密钥一定不要让第三方知道.
--在生成MD5-HMAC要按照顺序,并且值不能是Null
--引导用户的浏览器重定向的方式.
-- 是生成MD5码的时候,顺序要按照规定.