小程序获取支付授权

9 篇文章 0 订阅
4 篇文章 0 订阅

我们想要获取授权呢,需要一个button按钮,这个按钮上个绑定一个属性,然后就是绑定一个事件,这个事件相当于我们的点击事件,这个事件中,有事件对象,这个事件对象中有我们需要的参数,然后我们使用小程序内封装好的方法wx.login()方法,这个方法会返回一个code,然后我们就可以拼装一个对象作为参数去请求登录接口了。这个登录接口登录成功呢会返回一个token。然后使用本地存储保存一下。在让用户返回到支付页面就可以了。
因为这里牵扯到地狱回调,所以我自己封装了一个Promise和async/await。

注意:在小程序使用async/await时,需要开启小程序右上角的 详情 -> 本地设置 -> 开启 增强编译,还要开启ES6专ES5

<button open-type="getUserInfo" bindgetuserinfo="userinfo">授权</button> 
// 这个属性和方法都是小程序给我们封装好的,我们可以直接添加进去 这个事件相当于点击事件了

首先我们新建一个js文件,然后在这个js文件中导出一个Promise

export default () => { // 导出一个Promise
  return new Promise((resolve, reject) => {
    wx.login({  // 使用Promise 封装的 wx.login();
      success(res) { // 成功回调
        resolve(res);	// 执行then 并把res发送出去
      }, fail(err) { // 失败回调
        reject(err);	
      }
    })
  })
}

然后我们在新建一个js文件。首先引入我们刚封装好的 Promise
使用我封装好的的wx.request()promise加async/await封装小程序的request

import login from './util'; // 引入封装的 wx.login()
import {getLogin} from '../request/api';    // 登录接口请求 这个是封装好的requesr请求;

export default async (e) => {
  //  当前button 点击的 的事件 e
  let res = await login(); // 使用promise封装的 wx.login() 
  let code = res.code;  // 返回一个code
  const loginParams = { 
    encryptedData: e.detail.encryptedData,
    iv: e.detail.iv,
    rawData: e.detail.rawData,
    signature: e.detail.signature,
    code
  }
  // 根据发送过来的参数e创建一个对象,这几个对象属性是不可变的,是要根据wx.login()返回的参数code和
  // 事件对象e里面的4个参数合成一个对象,这个对象就是我们要发送的参数
  let data = await getLogin(loginParams);
  // 然后发送登录请求,发送过去一个参数,这个参数是一个对象,这个对象的key 必须是 
  // encryptedData  iv  rawData signature code
  return data; // 然后把数据返回出去
} 

我们封装好后就可以在需要的页面调用了;
首先是引入

import login from '../../utils/getLogin'; // 引入我们封装好的方法
Page({
	userinfo(e){ // e 事件对象
	 console.log(e);
    login(e).then(res => { // 调用我们封装好的方法 他是Promise 所以可以then
      let token = res.token;			// 获取一下后端返回的token
      wx.setStorageSync('token', token);		// 本地存储存一下
      wx.navigateBack({				// 返回上一个页面
        delta: 1
      })
      console.log(res);
    })
	}

})

如有不解之处,请留言评论
如有更好的方法,请提出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值