學習筆記【23種設計模式-第四節:Prototype原型模式 -克隆羊、深淺拷貝】
阿新 • • 發佈:2020-12-17
支付流程如圖:
一.建立訂單
1.在建立訂單時要先獲取使用者登入成功後的token值
1.1獲取使用者的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