-
小程序支付流程
-
点击结算
-
payall(){ //点击结算事件 if(this.data.totalnum==0){ // 如果 没有商品 return wx.showToast({ icon:'none', title: '你还没有添加物品', }) return } if(!this.data.address.userName){ // 如果没有收货人名子(即收货人的信息就行) 也返回 wx.showToast({ title: '你还没有选择地址', icon:'none', }) return } wx.navigateTo({ // 只有满足以上两个页面才可以跳转 支付页面 url: '/pages/pay/pay', }) },
-
点击支付
-
-
async pay(){ //点击支付 请求接口是异步 要想同步化 可以用 async await try{ const token = wx.getStorageSync('token') // 先获取本地 tooken if(!token){ // 如果没有获取到 wx.navigateTo({ url: '/pages/auth/auth', // 跳转授权页面 获取tooken }) return } const order_price=this.data.totalPrice; const consignee_addr=this.data.address.all const cart = this.data.cart let goods =[] cart.forEach(x=>{ goods.push({ goods_id:x.goods_id, goods_number:x.num, goods_price:x.goods_price }) } ) const orderParams = { order_price, consignee_addr, goods }; // 4 准备发送请求 创建订单 获取订单编号 const { order_number } = await request({ url: "/my/orders/create", method: "POST", data: orderParams }); // 5 发起 预支付接口 const { pay } = await request({ url: "/my/orders/req_unifiedorder", method: "POST", data: { order_number } }); // 6 发起微信支付 await requestPayment(pay); // 7 查询后台 订单状态 const res = await request({ url: "/my/orders/chkOrder", method: "POST", data: { order_number } }); await showToast({ title: "支付成功" }); // 8 手动删除缓存中 已经支付了的商品 let newCart=wx.getStorageSync("cart"); newCart=newCart.filter(v=>!v.checked); wx.setStorageSync("cart", newCart); // 8 支付成功了 跳转到订单页面 wx.navigateTo({ url: '/pages/order/index' }); }catch (err){ await wx.showToast({ title: '支付失败', }) console.log(err); } },
auth页面
-
auth.js
import { request } from "../../request/index.js"; // 引入封装好的 request
import { login } from "../../utils/asyncWx.js"; // 引入封装好的 login
Page({
// 获取用户信息
async handleGetUserInfo(e) {
try {
// 1 获取用户信息
const { encryptedData, rawData, iv, signature } = e.detail;
// 2 获取小程序登录成功后的code
const { code } = await login();
const loginParams={ encryptedData, rawData, iv, signature ,code};
// 3 发送请求 获取用户的token
const {token}=await request({url:"/users/wxlogin",data:loginParams,method:"post"});
// 4 把token存入缓存中 同时跳转回上一个页面
wx.setStorageSync("token", token);
wx.navigateBack({
delta: 1
});
} catch (error) {
console.log(error);
}
}
})