微信小程序支付流程

181 阅读1分钟

一、首先熟悉支付流程

image.png

二、支付前进行的操作

在用户登录的时候就获取用户的 openid 为支付做准备

  1. qpp.js中 通过 wx.login 来获取用户的 code
  2. 通过 code 先后端发送请求得到 openid
  3. openid 存储到本地 方便使用

三、当进行支付操作时

  1. 通过 接口获取 预支付信息
  2. 需要发送的参数:
参数名称
openid存储的openid
body商品描述
out_trade_no编号(new Date().getTime())
total_fee多少钱 以分为单位

3.通过后端返回的预支付信息

image.png

  1. 通过wx.requestPayment发起支付请求参数就是后端返回的预支付信息

四、代码

获取openid

// app.js
App({
  onLaunch() {
    //1.在用户登录的时候获取用户的 openid
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        // 1.1获取用户的code
        let code = res.code
        // 1.2根据用户的code获取用户的openid
        wx.request({
          url: 'http://mppay.0820.cloud/openid.php',
          data: { code },
          success: res => {
            //1.3对openid进行存储
            wx.setStorageSync('openid', res.data.openid)
          },
          fail: err => {
            console.log(err);
          }
        })
      }
    })
  },
})

支付

// 2.在获取完毕openid之后 获取预支付信息
  goPay() {
    wx.request({
      url: 'http://mppay.0820.cloud/jsapi.php',
      method: "POST",
      data: {
        //用户id
        openid: wx.getStorageSync('openid'),
        //商品信息
        body: "支付测试",
        //编号
        out_trade_no: new Date().getTime(),
        //支付多少 是以钱的分为单位
        total_fee: 1
      },
      success: res => {
        console.log(res, 'res');
        //2.1调取支付窗口
        wx.requestPayment({
          ...res.data,
          success: res => {
            console.log(res, 'payres');
          },
          fail: err => {
            console.log(err, 'errpay');
          }
        })
      },
      fail: err => {
        console.log(err, 'err');
      }
    })
  },