微信支付主要的流程:
1 、申请微信公众号及支付功能申请:根据公众号申请流程申请即可。2、获取商户支付配置信息及支付测试配置:
如上图所示,支付授权目录最多可以配置三个域名,测试授权目录只可以一个,这里需要注意的是域名大小写必须要网站URL一致,否则会无法通过授权,提示支付请求的URL不合法。另外,测试支付的微信号必须加到测试白名单,否则无法进行支付测试。
3、H5页面发起支付请求,请求生成支付订单。
4、获取用户授权(获取用户的openid):
授权获取openid,可能会遇到提示网站URL未注册等问题,需要检查接口权限->网页服务->网页账号->网页授权获取用户基本信息的url是否与请求的URL一致。获取code码和openid的具体实现可以查看微信支付api接口。
5、调用统一下单API,生成预付单:
授权获取openid,可能会遇到提示网站URL未注册等问题,需要检查接口权限->网页服务->网页账号->网页授权获取用户基本信息的url是否与请求的URL一致。获取code码和openid的具体实现可以查看微信支付api接口。
6、生成JSAPI页面调用的支付参数并签名,按照API的demo:
注意时间戳timeStamp是32位字符串,如果不是字符串或者过长,会提示如下信息:
7、返回支付参数prepay_id,paySign参数的html文本给前端。
8、微信浏览器自动调起支付JSAPI接口支付,提示用户输入密码。
9、确认支付,输入密码,提交支付。
10、异步通知商户支付结果,商户收到通知返回确认信息。
11、返回支付结果,并发微信消息提示。
12、展示支付信息给用户,跳转到支付结果页面。
因为该项目采用API服务化、前后端分离的开发模式,所以上述的微信支付流程与微信支付开发文档的业务流程有出入,不是前后端分离的项目请按照支付开发文档的流程进行开发。
上面是微信支付的开发,项目还设计有微信自动退款的功能,考虑到微信退款的安全性问题,目前未接入退款流程,以后接入再做总结。
由于小编见识有限,有不足之处请指出!
作者简介:
Yeoman:一个正在努力的菜鸟