您的位置:首页 > 编程语言 > Java开发

读黎老师在线支付视频--视频随笔~~~Java┳ㄞ飞哥传智播客

2009-10-18 17:22 573 查看
=========== 网上支付 ==========

讲师:[黎活明]

第一课、在线支付功能的演示与概述

a.两种接入方案

.直接与银行对接

.通过中间公司间接与银行对接

b.直接与银行对接

优点:因为直接与银行进行财务结算,交易资金结算比较安全。适合资金流量

比较大的企业,这种方案适合于:每月结算金额百万以上的企业。

缺点:开发工作量比较大,而且银行会不定期升级交易系统,随着银行系统的

升级,企业也需要作相应改动,所以维护工作量也是比较大的,而且企业

每年还需要向银行交纳一定数量的接口使用费。

c.通过中间公司间接与银行对接

优点:开发工作量较少,因为使用的是中间企业提供的接入规范,所以银行升级

系统,不需要企业做相应修改,除非中间企业的接入规范发生改变,企业

才做相应修改。相对前一种接入方案,这种方案的维护工作量比较少的。

因为只与一家企业对接,所以接入费用相对比较低。这种方案适合于:

每月结算金额在几十万以下的中小企业。

缺点:因为是与中间企业进行资金结算,目前所有中间企业都是私企,资金安全是

个大问题。

b.现较好的中间公司,有首信易支付、易宝支付

第二课、分析易宝支付的工作流程

a.易宝支付接入规范

.MD5-hmac

hmac是一种秘密的密钥验证算法。hmac提供的数据完整性和源身份验证完全取决

于密钥分配的范围。如果只有发起者和接收者知道hmac密钥,那么这就对两者发送

的数据提供了源身份验证和完整性保证。=== 已提供该算法的加密类

b.支付流程

通过http请求方式向易宝支付网关发起一个支付请求,简单地说就是向
http://www.yeepay.com/app-merchant-proxy/node发起请求,请求可以是get或post
方式提交,页面应采用GBK/GB2312编码。下面使用表单以post方式向易宝支付网关发起

一个支付请求:

<form name="yeepay" action="http://www.yeepay.com/app-merchant-proxy/node" method="post">

<input type="hidden" name="p8_Url"
value="http://www.babasport.com/payment/response"/>
<input type="hidden" name="hmac"
value="2a8de8147356d97c464d197441052dd"/>

</form>

易宝支付网关对企业发来的数据使用用户的密钥生成MD5-hmac码,然后跟企业发来的MD5-hmac码,

如果相同则请求转发到银行网关,当用户支付完成后,银行网关会引导用户的浏览器到易宝支付

网关,然后易宝支付网关再引导浏览器重定向到企业提供的url上。

第三课、分析易宝支付网关的请求协议

a.加入JSTL1.1jar文件、编译级别5.0

b.界面采用巴巴运动网界面

c.对支付请求的数据加密生成MD5-hmac,都是易宝规定好的

d.易宝支付规范是数据:

StringBuffer sValue = new StringBuffer();

sValue.append(p0_Cmd);//业务类型 buy

sValue.append(p1_MerId);//商户编号

sValue.append(p2_Order);//商户订单号

sValue.append(p3_Amt);//支付金额

sValue.append(p4_Cur);//交易币种

sValue.append(p5_Pid);//商品名称

sValue.append(p6_Pcat);//商品种类

sValue.append(p7_Pdesc);//商品描述

sValue.append(p8_Url);//商户接收支付成功数据的地址

sValue.append(p9_ASF);//送货地址

sValue.append(pa_MP);//商户扩展信息

sValue.append(pd_FrpId);//银行编码

sValue.append(pr_NeedResponse);//应答机制 0, 1

String sNewString = DigestUtil.hmacSign(sValue.toString());

解释:应答机制 0, 1 0: 以200状态码为判断标准 1:以返回success为判断标准

第四课、编写易宝支付的客户端加密工具类

a.一个加密类、一个简单加密程序

b.简单看视频

第五课、编写用于准备请求数据的Servlet

a.支付请求的网关

b.步骤

.设置请求编码格式reques.setCharacterEncoding("GBK");

.取得UI层数据

.从属性文件获取值 cache缓存 static代码段

属性文件放置商家id、密钥和返回的Url地址

Url要提供公网上地址

.生成md5-hmac码

第六课、编写将数据提交给易宝支付的JSP页面

a.步骤补充:

.通过表单提交数据,测试情况下提交到测试网关
http://tech.yeepay.com:8080/robot/debug.action
通过将信息保存在request上再转发到form表单界面

第七课、集成和测试向易宝发送支付请求

a.测试成功

第八课、实现浏览器自动向易宝发送支付请求

a.自动表单提交

onload="javascript:document.forms[0].submit()"

第九课、分析易宝支付网关的应答协议与处理代码

a.把返回的数据进行加密在与返回的加密字符串进行判断,

如果相等则合法

如果不相等就恶意

b.编写方法

第十课、完成用于处理支付响应的Servlet的初步编写和调试

a.编写响应servlet

b.路由器的导向

第十一课、完成用于处理支付网关响应结果的Servlet

a. 步骤

.获得支付网关传来的数据

.对原数据进行加密

.判断加密字符串跟发送过来的数据是否一致

.做相应的操作

b.字段分析

r0_Cmd 业务类型 Buy在线支付

r1_Code 扣款结果,字段值为1时表示成功

r2_TrxId 易宝交易订单号

r3_Amt 扣款金额,交易结束后,YeePay易宝将扣款到商户

r4_Cur 交易币种 人民币CNY

r5_Pid 商品ID

r6_Order 商户订单号

r7_Uid YeePay易宝会员Id

r8_MP 商户扩展信息,可以任意填写1K 的字符串,交易返回时原样返回

r9_BType 交易结果返回类型,

1:交易结束回调(浏览器重定向) 2:交易成功主动通知(服务器点对点通讯)

rb_BankId 支付银行

rp_PayDate 在银行支付的时间

hmac Md5交易签名

第十二课、大结局,从招行帐户中向本系统成功支付1分钱

a.

地球围绕太阳转,世界围绕中国转。

月亮围绕地球转,中国围绕人民转。

爱小家,构大家。
http://www.javavideo.cn/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐