05 uniapp/微信小程式 項目day05

一.登錄與支付

1.1 登錄

1.1.1 條件判斷

當我們點擊結算應當進行條件判斷

image-20220829113928685

第一個如果沒有勾選商品

第二個是沒選擇地址

第三個是未登錄

image-20220829161042279

1.1.2 頁面布局

應該有兩個頁面,一個點擊登錄,一個登陸成功後的頁面,所以應該創建兩個組件

image-20220830175012031

他們應該按需展示,並且條件為是否有token

image-20220830175142666

然後未登錄的頁面結構

uni icon的頭像icon

image-20220830175241161

image-20220830175250045

1.1.3 獲取用戶基本資訊

由於微信登錄並不像pc點擊登錄就去調用介面,微信登錄需要調用自己的登錄api,然後獲取到一些資訊密匙等,而我們的登錄介面就需要這些密匙

也會彈出登錄授權框

image-20220830182020946

用到一個api

uni.getUserProfile其中desc為這次調用的登陸的資訊說明

首先是取消登錄的驗證

image-20220830183405582

登錄成功將我們的用戶資訊存進vuex

image-20220830184431058

image-20220830184551354

然後組件這邊存進來

注意這裡做了改造用它規定的回調來寫

image-20220830190009081

1.1.4 獲取code

我們的登錄介面還需要一個參數code

這個碼只能通過 uni.login這個api獲取

所以我們登錄成功獲取了profile資訊後還應該再去獲取code

image-20220830191212199

現在有了code就可以去發起請求了

image-20220830193010932

登錄成功應該將token永久存儲

image-20220830193059405

image-20220830193157854

state裡面也要修改

image-20220830193220900

注意我們的數據回來不僅是要存在storage裡面,要讓頁面能夠響應到還應該給她賦一次值

image-20220830193830407

1.2 用戶資訊

1.2.1 渲染用戶頭像和昵稱

現在組件定義好基本結構

image-20220831175818032

然後從vuex拿回我們之前存進去的數據,並渲染上來

image-20220831180104218

1.2.2 三個面板

接下來是這個頁面三個面版的渲染

主要是一些html及css的規劃

image-20220831181126925

1.2.3 退出登錄

主要就是要用到一個api 來彈出是否退出登錄的消息框

uni.showModal

image-20220831181406777

同樣的會有兩個返回,一個是否為null的錯誤返回,一個是成功返回,而且promise catch捕獲一下錯誤

image-20220831181548187

如果返回有值,且有confirm這個對象,那麼就清空token、userinfo、地址資訊

image-20220831181840237

1.2.4 三秒跳轉

當未登錄的時候在購物車點擊結算應該提示未登錄,還有多少s跳轉到登錄頁

定義一個初試的秒數

image-20220919183223055

當我們沒有token也就是沒有登陸的時候就去調用一個定時器每秒鐘執行這個提示

注意,toast有一個屬性mask,表示開啟了面罩不能夠點擊後面的內容,防止點擊穿透

image-20220919183845446

現在要解決的問題,就是讓秒數到0後就跳轉過去並且停止定時器

創建一個定時器

image-20220919184105167

判斷seconds是否小於0,如果是就停止定時器,並且跳轉過去,最重要的return返回seconds為3

image-20220919184257569

登錄成功後導航跳轉

當我們登陸成功應該從哪來回哪去,這裡用的方法是

首先在vuex定義一個對象,這個對象應該存儲兩個資訊,opentype以及form,分別表示跳轉的方式和跳轉的地址

image-20220919190557477

image-20220919190618251

然後我們在點擊結算那裡進行一個傳值

在我們跳轉的成功回調裡面進行傳值

image-20220919190823048

這個時候,我們的登陸成功得到token後面應該去判斷一下是否有這兩個值,有就跳轉,並且把redirectInfo重置為空對象,不然容易出現問題

image-20220919191606843

1.3 微信支付

首先前提:我們需要將請求頭改變,因為只有登錄之後才能調用支付相關的介面,所以必須為有許可權的介面添加請求頭欄位

在請求攔截器操作,我們的請求攔截器參數,會有url以及Authorization等屬性,如果說url裡面帶有my就是表示需要許可權的介面,這個時候就要參數裡面的header的authorization屬性帶上我們的token去發起請求

image-20220919193050439

微信支付三部曲

首先創建訂單

在我們點擊結算那裡都通過了驗證就整合數據,創建訂單介面需要的數據

image-20220919194440474

整合數據

image-20220919194742696

然後發起請求並保存下來

image-20220919195520348

訂單預支付

然後繼續拿這個訂單編號去發起預支付的請求,獲取到要調用微信支付api的一些參數

image-20220919195932123

實現支付

用到微信支付的api uni.requestPayment

接受兩個回調如果有錯誤就返回錯誤

image-20220919200344014

如果沒有錯誤還要再次調用我們的介面去判斷一些有沒有支付成功

image-20220919200412018

二.發布

為什麼要進行發布?

因為只要發布後才能被用戶搜索到,而且現在體積是偏大的,只有發布後進行壓縮了體積才會變小

2.1 發布為小程式

首先發行

img

需要去dccloud添加應用並重新在manifest.json輸入uniappId

image-20220920180822817

image-20220920180831622

發行成功後點擊開發者工具上傳

image-20220920180902516

上傳成功後在微信公眾平台提交審核

按照他的步驟一步一步來把詳細資訊弄完整

image-20220920182806001

審核成功後發布上線即可

2.2 發布為Androidapp

首先還是要設置好我們的manifest裡面的appid

然後要設置好圖標

image-20220920183143682

直接選擇雲打包

img

image-20220920183255596

Tags: