网银开发流程
修订历史:
2011.11.21(初稿)..............................................................................................................................................................................郑洪耕
网银开发一般包括四个部分。
痴痴的等美丽的海岛第一部分:基本信息
第二部分:配置信息
定义好银行给商户分配的资料数据,有商户号、柜台号、分行号、用于加密算法或者打开密钥文件的密钥串、密钥文件位置、银行LOGO文件位置、支付前缀(一般是为了区别生产站和
测试站的订单号,也有银行以此字段来区别商户)等字段需要设置。
第三部分:处理提交给银行的数据
一般情况下使用表单(FORM)的方式生成支付页面给顾客,让顾客点击 "前往银行支付" 按钮后把数据提交给银行,使顾客可以登上网上银行支付,需要提交的数据一般包括如下字段:
1.支付单号:组成订单号方法类似 “前缀_订单号_支付记录号” ,但必须注意银行允许的字段长度。如果银行允许的字段长度太短,就要对订单号进行压缩。如果订单号无法压缩到合适的长度,就只能放弃传订单号,组成方法换成 “前缀_支付记录号”。必须传支付记录号是因为只有支付记录号才能唯一对应一笔付款,在银行返回的支付信息里可以到我们提交的支付单号,然后通过连接符 “_” 拆分出订单号来得到是哪笔支付。注意:有个别银行对支付单号的字符也有要求,比如只能用数字、或者不能用 “_” 等。
2.交易金额:按银行规定的格式,一般截取到小数点后两位。
3.银行返回(通知)地址:有钱银行需要将此地址转换成标准URL地址(URLENCODE);可以
用系统统一的取地址方法得到这个返回地址;但有些银行不支持URL里有参数,碰到这种情况就必须准备一个专门接收此银行通知信息的程序文件作为返回地址;或者用同一个程序文件接收所有银行的通知,然后判断银行通知信息里包含的字段名字,全部(或者大部分)对上的,就认为是某银行的返回结果;如果有某几个银行通知字段是绝对一样的,就要再专门针对各个银行来写接收的程序文件。
4.商户号:银行必须知道顾客是要把钱付到哪个商家,所以必须传商户的基本信息,商户号极其重要,请准确填写。
716啥意思5.日期、备注等字段:按银行需要的格式传就好了,交易日期一般直接用当前时间,例如 date('YmdHis',$_SERVER['REQUEST_TIME']);备注字段一般银行会在支付通知时直接返回原字符串,所以如果银行有提供备注字段,可直接用来传支付记录号,以节省算记录号的开销。
李思 李璐6.补充:有些银行还需要确定支付类型(个人支付、企业支付等)、通知类型(前台通知、服务器通知,请一定使用两种都通知的类型),按银行预定义的代号准确填写。
第四部分:处理银行返回的支付信息
银行会根据我们提交的返回地址,一般以表单POST方式通知支付结果(当然也可以直接用REQUEST字段来获取结果),收到结果通知后,支付接口需要处理以下信息:
1.丧失劳动能力核对商户号:商户号不对,就说明钱不是打到我们的户头。。。。你懂的。
2.检查成功标志:如果标志不是支付成功,就没必要再继续,直接给出 支付未成功 的提示信息。
3.验证签名:验证主要就是验证银行的身份,防止被黑客伪造,只有确定了银行的身份准确无误才能确定钱款确实是支付到我们的户头。按银行说明书的方法,把银行返回的信息,取出需要的字段按顺序组成验签字段,然后与银行传回的签名串一起传入验签程序进行验证,返回的结果为真时就确定确实是真正的银行返回结果。
4.支付记录号的获取:有两种方式,第一种就是银行如果提供备注直接返回的功能,就直接从备注里取记录号,方便快捷,省下计算的开销;第二种就是用连接符来拆分出记录号。
5.支付金额:一般情况下不需要对支付金额进行处理,直接回传到系统就行了,但有些银
行支付金额是乘以100取整的,所以必须对应的除以100回传给系统。
6.怀柔景点支付币种:一般情况下也不需要进行处理,因为当前银行都是以人民币进行交易,不过将来如果有多币种支付,这点必须完善。
发布评论