前置
申请支付相关准备内容:https://pay.weixin.qq.com/static/applyment_guide/applyment_detail_miniapp.shtml
先看文档
小程序登录流程
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
登录流程图
这个说明一定要好好看清楚!!!
说明
- 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
- 调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识UnionID(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
小程序调起支付API
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7
整套支付流程至此结束,不过还没完结……
手机支付
微信支付弹框无法唤起?但是debug模式下又是可以唤起……
重点在上述说明的2点,你可能是这样想的:
- 前端调用wx.login()获取临时登录凭证code,然后再传回服务端
- 紧接着前端再调用auth.code2Session接口,换取用户唯一标识
OpenID
这就完事了,但这实际不算完事,这个过程前端传给服务端的openid其实服务端获取不到,为啥获取不到(目前没得说明) - 那咋办?
- 再回去看说明里的第1点的最后一句话,这最后一句话需要和第2点的第一句话整合起来理解:并传回到开发者服务端,必须由服务端调用auth.code2Session接口,然后服务端把openid返回给前端,然后前端再把服务端返回的openid当作入参再给服务端,最后才是唤起支付
- 整个过程需要服务端起到一个承接作用
FAQ
入坑指南参考
https://zhuanlan.zhihu.com/p/131567419
https://developers.weixin.qq.com/community/develop/doc/63ddbef1d064e801903a3584555c68f4