前置

申请支付相关准备内容:https://pay.weixin.qq.com/static/applyment_guide/applyment_detail_miniapp.shtml

先看文档

小程序登录流程

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

登录流程图

image.png
这个说明一定要好好看清楚!!!
image.png
说明

  1. 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
  2. 调用 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