微信小程序项目_秋泊优选48

44、支付支页面_订单创建功能(支付获取用户token)

给支付按钮绑定点击事件(bindtap=“handleOrderPay”)
pages\pay\index.wxml

    <!--支付按钮-->
    <view class="order_pay_wrap" bindtap="handleOrderPay">
        支付{{totalNum}}
    </view>

添加点击事件—>跳转授权页面
pages\pay\index.js

  // 点击支付
  handleOrderPay(){
    // 1 判断缓存中有没有token
    const token=wx.getStorageSync("token");
    // 2 判断
    if(!token){
      wx.navigateTo({
        url: '/pages/auth/index'
      });
      return;
    }
  }

在这里插入图片描述
授权页面标题
pages\auth\index.json

{
  "usingComponents": {},
  "navigationBarTitleText": "支付授权"
}

授权页面按钮实现
获取用户信息按钮的属性
在这里插入图片描述
pages\auth\index.wxml

<!--样式
type="primary" 字体样式绿色
plain          背景透明
--->
<button type="primary" plain open-type="getUserInfo" bindgetuserinfo="handleGetUserInfo">
    获取授权
</button>

样式
pages\auth\index.wxss

button{
    margin-top: 40rpx;
    width: 70%;
}

在这里插入图片描述
点击按钮的事件
pages\auth\index.js

Page({
  // 获取用户信息
  handleGetUserInfo(e){
    console.log(e);
  }
})

在这里插入图片描述
获取用户token
在这里插入图片描述
login的封装
utils\asyncWx.js

// Promise 形式login
export const login=()=>{
    return new Promise((resolve, reject)=>{
        wx.login({
            timeout: 10000,
            success: (result) => {
                resolve(result);
            },
            fail: (err) => {
                reject(err);
            }
        });   
    })
}

code值得获取

import { request }from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
import { login }from "../../utils/asyncWx.js";
Page({
// 获取用户信息
async handleGetUserInfo(e){
    // 1 获取用户信息
    const { encryptedData, rawData, iv, signature } = e.detail;
    // 2 获取小程序登录成功后的code
    const {code}=await login();
    console.log(code);
  }
})

在这里插入图片描述
获取token值(注意:没有企业账号的APPID 无法获取)
pages\auth\index.js
在这里插入图片描述
pages\auth\index.js

import { request }from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
import { login }from "../../utils/asyncWx.js";
Page({
// 获取用户信息
async handleGetUserInfo(e){
    // 1 获取用户信息
    const { encryptedData, rawData, iv, signature } = e.detail;
    // 2 获取小程序登录成功后的code
    const {code}=await login();
    const loginParams={ encryptedData, rawData, iv, signature ,code};
    // 3 发送请求获取用户的token
    const res=await request({url:"/users/wxlogin",data:loginParams,method: "post"});
    console.log(res);
  }
})

在这里插入图片描述
把token存入缓存中同时跳转回上一个页面

import { request }from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
import { login }from "../../utils/asyncWx.js";
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)
    }
  }
})

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值