微信公众号支付开发流程总结

近期负责的一个微信直销项目,需要用到公众号支付功能。该项目是从微信公众号引导客户进入H5页面选购产品、下单支付,要在网页端调起支付API(即在微信浏览器里面打开H5网页中执行JS调起支付)。小编在开发过程中踩过不少坑,也花费了不少时间,所以有必要做个简单的总结,为以后类似业务的开发留点东西。


微信支付主要的流程:

1 、申请微信公众号及支付功能申请:根据公众号申请流程申请即可。

2、获取商户支付配置信息及支付测试配置:

微信公众号支付开发流程总结_第1张图片


如上图所示,支付授权目录最多可以配置三个域名,测试授权目录只可以一个,这里需要注意的是域名大小写必须要网站URL一致,否则会无法通过授权,提示支付请求的URL不合法。另外,测试支付的微信号必须加到测试白名单,否则无法进行支付测试。

3H5页面发起支付请求,请求生成支付订单。

4、获取用户授权(获取用户的openid):

微信公众号支付开发流程总结_第2张图片

授权获取openid,可能会遇到提示网站URL未注册等问题,需要检查接口权限->网页服务->网页账号->网页授权获取用户基本信息的url是否与请求的URL一致。获取code码和openid的具体实现可以查看微信支付api接口。

5、调用统一下单API,生成预付单:

微信公众号支付开发流程总结_第3张图片

授权获取openid,可能会遇到提示网站URL未注册等问题,需要检查接口权限->网页服务->网页账号->网页授权获取用户基本信息的url是否与请求的URL一致。获取code码和openid的具体实现可以查看微信支付api接口。

微信公众号支付开发流程总结_第4张图片

6、生成JSAPI页面调用的支付参数并签名,按照APIdemo:

微信公众号支付开发流程总结_第5张图片

注意时间戳timeStamp32位字符串,如果不是字符串或者过长,会提示如下信息

微信公众号支付开发流程总结_第6张图片

7、返回支付参数prepay_id,paySign参数的html文本给前端。

微信公众号支付开发流程总结_第7张图片微信公众号支付开发流程总结_第8张图片

8、微信浏览器自动调起支付JSAPI接口支付,提示用户输入密码。

微信公众号支付开发流程总结_第9张图片

9、确认支付,输入密码,提交支付。

10、异步通知商户支付结果,商户收到通知返回确认信息。

11、返回支付结果,并发微信消息提示。

12、展示支付信息给用户,跳转到支付结果页面。

  因为该项目采用API服务化、前后端分离的开发模式,所以上述的微信支付流程与微信支付开发文档的业务流程有出入,不是前后端分离的项目请按照支付开发文档的流程进行开发。

 

  上面是微信支付的开发,项目还设计有微信自动退款的功能,考虑到微信退款的安全性问题,目前未接入退款流程,以后接入再做总结。

 

由于小编见识有限,有不足之处请指出!

作者简介:

Yeoman:一个正在努力的菜鸟




你可能感兴趣的:(PHP)