微信小程序支付
支付流程如图:
一.创建订单
1.在创建订单时要先获取用户登录成功后的token值
1.1获取用户的token值,要先获取用户信息,和code值参给token
1.1(1)给支付绑定一个点击事件
以下字段主要用作后台服务器生成用户token所有,无特殊用意
encryptedData(执行小程序获取用户信息得到)
rawData(执行小程序获取用户信息得到)
iv(执行小程序获取用户信息得到)
signature(执行小程序获取用户信息得到)
code(执行小程序登录后获取)
创建订单页
handleOrderPay(){ //判断缓存 中有没有token const token = wx.getStorageSync("token"); //判断 if(!token){ wx.navigateTo({ url:'/pages/auth/index' //跳转到授权页面 ,进行token获取 }) return; } }
授权页面
使用微信小程序button组件的开放能力open-type拿到用户信息
再结合button的bindgetuserinfo属性
HTML <button open-type="getUserInfo" bindgetuserinfo="handleGetUserInfo(起个名字)"> 获取授权 </button>
await handleGetUserInfo(e){ //通过点击这个事件获取到微信返回的用户信息 console.log(e) //获取用户信息 const {encrypteData,rawData,iv,signature} = e.detail; //获取小程序登录成功后的code值 wx.login({ timeout:10000, success:(result) =>{ const { code } = result; } }) //在获取完请求token所必要的参数后,encryptedData,rawData,iv,signature,code,把值统一放到一个变量里中进行传参 const loginParams ={ encryptedData,rawData,iv,signature,code } //发送请求,获取用户token const { token }= await request({url:"请求地址"},data:loginParams,method:"post"}) //封装了后台请求,不解请看https://www.cnblogs.com/whenwei123/p/14133820.html console.log(token) //打印可查看token ,如无企业账号,是无法成功的 //把token存入缓存中, 同时跳转回上一个创建订单页面 wx.setStorageSync('token',token); wx.navigateBack({ delta:1 //1表示返回上一层 2两层 }); } })
创建订单页
async handleOrderPay(){ //判断缓存 中有没有token const token = wx.getStorageSync("token"); //判断 if(!token){ wx.navigateTo({ url:'/pages/auth/index' //跳转到授权页面 ,进行token获取 }) return; } } //创建订单,获取订单编号 //准备创建订单的请求的参数,根据后台给的文档进行传参 //准备 请求头参数 const header ={Authorization:token}; //获取token,因为在上面已经获取过缓存中的token了 //准备 请求体参数 const order_price = this.data.totalPrice; //订单价格 const consignee_addr =this.data.address.all; //订单收货地址 const cart = this.data.cart; let goods = []; //循环遍历数组放到新数组 cart.forEach(v => goods.push({ goods_id:v.goods_id, //商品ID goods_number:v.num, //购买数量 goods_price:v.goods_price //单价 })) const orderParams ={order_price ,consignee_addr,goods } //4 准备发送请求, 创建 订单 获取订单编号 const { order_number }= await request({url:"请求地址",method:"POST",data:orderParams ,header:header}) console.log(order_number ) //打印查看订单编号
准备预支付,在创建订单页js下继续写
// 5 获取pay,准备预支付 const res = await request({url:请求地址},method:'请求方式',header,data:{order_number}) //两个参数一个是header(token),一个是order_number(订单编号) console.log(res) //打印可看到一个叫pay的参数

//发起微信支付
//此时使用微信内置的支付的代码wx.requestPayment,可以发现返回的参数正好可以和微信内的支付代码一样,

//把数据一一对应填进去
//查询后台 订单状态,请求后台
const res = await request({url:"请求后台的地址"},method:"请求方式",header,data:{order_number}) //两个参数一个是header(token),一个是order_number(订单编号)
console.log(res)
wx.showToast({
title:"支付成功"
})
视频了解可通过此处学习了解:https://www.bilibili.com/video/BV1nE41117BQ?p=98