微信支付已经渗透到人们日常消费的每一个角落,作为一名移动APP(iOS)开发者,也难免在有消费功能的APP中集成微信支付。本文先大体总结一下微信支付的整体业务逻辑。
账号申请注册
这一部分一般轮不到我们小开发去操作,毕竟涉及到公司的一些机密信息。一般都是项目经理,部门总监等去做,但是作为开发者我们也要稍作了解。说不定哪天你就成Leader了……
1.官网申请注册账号(注册地址)
2.资格认证审核(需要申请人身份认证,公司资质信息和发票,支付费用300元/年,5个工作日内可查询认证结果)
3.关联相关APP信息
商户服务器业务
业务逻辑
服务器业务逻辑1。用户在商户APP中选择商品,提交订单,选择微信支付。
2.商户后台收到用户支付单,调用微信支付统一下单接口。【统一下单API】。
3.统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式为Sign=WXPay
4.商户APP调起微信支付。【app端开发步骤说明】
5.商户后台接收支付通知。【支付结果通知API】
6.商户后台查询支付结果。【查询订单API】
注意事项
1.订单号和订单签名(一次签名)需要的随机字符串采用微信提供的算法生成(微信Demo里有)。
2.统一下单API里对参数签名必须将基本参数(除秘钥)按ASCII码排序,秘钥参数排在最后,参数值为空的不参与签名。
3.参数请求时必须是xml格式(也不知道在json大肆横行的年代,微信支付为啥还在用着xml)。
4.xml格式的请求参数也是有序的,基本参数ASCII码排序,秘钥参数排在最后。
5.必须是return_code和result_code同时返回SUCC才表示统一下单成功
6.支付签名(二次签名)参数名必须是小写,基本参数ASCII码排序,秘钥放最后。
7.服务器返回给客户端的必须是二次签名。
客户端业务逻辑
1.导入微信支付SDK,并在项目URL types增加微信白名单。
2.注册APPID。
3.调起支付。客户端吊起支付后,商户服务器会调用统一下单API返回预支付标识。
4.支付结果回调。在此回调里我们可以得到返回错误码,但是一定不要将这里返回的支付结果作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准,即在此回调errCode=0且服务器收到的成功支付通知时才是用户支付成功的标志。
那个说的好像差不多了,今天就到这吧。
可能有人问,作为一名iOS程序猿,后台的业务逻辑又不是我们的职责。话虽这么说,但是后台的业务逻辑我们还是要清除一点的,尽管不去专写后台代码。下次笔记,一起搭建一个本地的微信支付商户服务器后台,借此来了解后台的业务逻辑,同时也能了解和感受一下另一门语言的项目架构和风格。
--20171021夜
时间万物都需要额外的能量和秩序来维持自身,
无一例外。
-------------------------------------------------------宜休整
网友评论