支付宝公共服务窗开发总结

前些日子有幸接触了支付宝服务窗的开发,总的来说,和微信的服务窗开发很像,老大确定的用HTML5+CSS3开发,来写一下自己的总结,java方向。


后台用的servlet+jdbc的方式,因为功能很少,操作不多,逻辑处理也不多,就算套用大框架,也用不到那么全面的功能。总结主要说一下和支付宝相关的代码,其他部分暂可一带而过。


公私钥

首先,开发支付宝服务窗要有客户与支付宝谈成协议之后,在支付宝服务窗页面用指定的账户登录后,第一步要做的,就是激活开发者模式。这里需要用到的三个值,支付宝公钥、开发者公钥、开发者私钥,支付宝公钥是开发者模式页面提供的,开发者公私钥是用支付宝提供的工具计算生成的,其中,私钥要再进一步转化成pkcs8格式,才能进行java开发,当然,所有的这些都是用支付宝工具生成,按照给定的指定输入到cmd窗口就可以。


支付宝网关和开发者网关

这两个概念要区分,支付宝网关是支付宝提供的网关地址,开发者网关是需要由我们开发部署的网关地址,那么我们做的就是一个servlet,部署到外网服务器上之后,就可以与支付宝网关交换数据,以达到激活网关的效果。


激活开发者模式

开发者网关并非一定要servlet,只不过我们写java后台,用servlet来与支付宝交互数据很方便。开发者模式的激活,要求开发者网关直接返回一个支付宝指定的消息,这条消息具体应该如何编写,公私钥以及如何签名,在支付宝的开发文档里都有详细写明,这里不再进一步描述。按照要求写好返回消息之后,在开发者模式页面填写相关信息,就会提示激活成功。


菜单配置

支付宝服务窗口所有按钮的反应模式,都由link out alipay 这三种反应模式,即参数中的actionType

link:顾名思义,直接弹出一个页面,支付宝不做任何消息操作,也不接收任何传值的行为,弹出的页面地址由配置菜单时指定,写在actionParam中。

out:当菜单中的反应模式配置为out时,即支付宝要发送一个消息到开发者网关,由开发者网关识别消息并进行响应,此时actionParam中配置的参数为开发者自己指定的字符串(如:actionParam:ZFB_01),如果开发者网关对这个消息不做任何响应,那么支付宝手机钱包会报出网络异常的提示。

alipay:这种方式是调用支付宝已开发好了的服务,只能在开发者平台上配置,如地图功能等,但是说实话,感觉不好用。。。地图不如自己写页面来的方便。


支付宝消息

支付宝所有消息,都有request和response构成,成对出现,而且有特定的格式,如果request发送之后没有response,则会报出网络异常的错误。

每一种request和response都有指定的格式,有必填项,有可选项,response有一个最简短的构造方式,不做任何处理,只是回复一下支付宝,可适用于大部分情况,具体构造形式需参考支付宝开发文档。


执行流程参考

那么当我们配置好开发者网关之后,servlet是这样执行的,当支付宝发送请求到我们的开发者网关,发送的request,既是servlet方法中的request,servlet中的request是由HttpServletRequest包装,为了方便我们获取,对request的解析,用了专门的方法:

Map<String, String> params = new HashMap<String, String>();
        if(null != request){
            Set<String> paramsKey = request.getParameterMap().keySet();
            for(String key : paramsKey){
                params.put(key, request.getParameter(key));
            }
        }
这样做的好处是,将request中请求的具体内容变成一个较好操作的map对象,方便我们处理。

那么,按照上面的做法,我们获得了一个map对象,其中包含着支付宝发送来的请求,然后,我们需要根据请求的内容来判定此条请求是用来做什么的(比如:绑定,解绑,点击菜单等),那么我们需要一个分配器来解析这条请求的内容,有了分配器的众多的if else之后,对应的业务逻辑可以包装在执行器中,比如我获取到一个账户绑定的请求之后,我需要用执行器去解析这个请求的内容,识别为绑定请求之后,再进入对应的执行器, 由执行器同步返回一个账户绑定的response。






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值