微信小程序开发之微信支付

概述

最近这段时间接了一个蓝牙车位锁的项目;项目中包括APP和微信小程序;其中涉及在线支付功能,这里记录下微信小程序在线支付完功能

小程序在线支付流程

1.微信小程序登陆微信获取code
    调用接口wx.login(OBJECT)
 
// 登录
    wx.login({
      success: res => {
        wx.setStorageSync('logoRes', res)
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
       
      }
    })

程序启动进行登录,把登录获取的信息缓存

2.微信小程序把第一步获取的code提交给第三方服务器
    第三方接口通过微信小程序提交的code到微信服务器交换session_key 和 openid  这是微信获取 session_key 和 openid 的接口 https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
3.小程序调用第三方程序下单接口
    第三方程序接口做一些处理后调用微信服务器统一下单接口https://api.mch.weixin.qq.com/pay/unifiedorder   并且返回   prepay_id
第三方服务器通过把第二部和第三步的接口获取到prepay_id
4.小程序通过第三步获取到prepay_id开始支付 
   小程序调用接口wx.requestPayment(OBJECT)
              util.httpClient.httpGet("/parklock/manager/android/ble2/pay/xcx-pay-apply-by-code!loadopenid.do", {
                lockerId: 20001,
                code: value.code
              }, function (data) {
          
          //ASCII码从小到大排序(字典序)
var signA = "appId=" + appid + "&nonceStr=" + data.nonce_str + "&package=prepay_id=" + data.prepayId + "&signType=MD5&timeStamp=" + data.timeStamp;
          //拼接上商户key
var signB = signA + "&key=" + "uber7390fjeiafn84JFIEJFRE883FAKf";
          //排序后进行md5
var sign = MD5Util.hexMD5(signB).toUpperCase(); wx.requestPayment({ 'timeStamp': data.timeStamp+"", 'nonceStr': data.nonce_str, 'package': 'prepay_id=' + data.prepayId, 'signType': data.signType, 'paySign': sign, 'success': function (res) { console.log("支付成功") wx.navigateTo({ url: '../unlock/unlock?code=789', }) }, 'fail': function (res) { console.log("支付失败",res) } }) })

欢迎关注微信公众号【千里授渔】免费获取教学视频。

QQ507545336

原文地址:https://www.cnblogs.com/qlsy/p/wchat_pay.html