uniapp的button的getphonenumber后解析

16 篇文章 0 订阅

//1.页面代码

<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber" class="binding">
								<text>绑定手机号</text>
							</button>
  1. 解析返回数据(地址:解析详细讲解地址),可以去该博主文章里面去下载插件包,下载后的文件我是放在components文件夹下的
    在这里插入图片描述

3.在utils文件下创建WXBizDataCrypt.js文件:
在这里插入图片描述
4.在所需要的解mi的页面引入该解mi js

var WXBizDataCrypt = require(‘@/utils/WXBizDataCrypt’)

![在这里插入图片描述](https://img-blog.csdnimg.cn/37d47996ccc44b6389ce08d5e3645f6e.jpeg#pic_center)

/**
 * Created by rd on 2017/5/4.
 */
// 引入CryptoJS  路径依个人导入情况变动
var Crypto = require('@/components/cryptojs-master/cryptojs.js').Crypto;
var app = getApp();

function RdWXBizDataCrypt(appId, sessionKey) {
  this.appId = appId
  this.sessionKey = sessionKey
}

RdWXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
  // base64 decode :使用 CryptoJS 中 Crypto.util.base64ToBytes()进行 base64解码
  var encryptedData = Crypto.util.base64ToBytes(encryptedData)
  var key = Crypto.util.base64ToBytes(this.sessionKey);
  var iv = Crypto.util.base64ToBytes(iv);

  // 对称解mi使用的算法为 AES-128-CBC,数据采用PKCS#7填充
  var mode = new Crypto.mode.CBC(Crypto.pad.pkcs7);
  
  try {
    // 解mi
    var bytes = Crypto.AES.decrypt(encryptedData, key, {
        asBpytes:true,
        iv: iv,
        mode: mode
    });
    
    var decryptResult = JSON.parse(bytes);
    
  } catch (err) {
    console.log(err)
  }


  return decryptResult
}

module.exports = RdWXBizDataCrypt

3.methods方法

			//绑定手机号
			getPhoneNumber(e) {
				let thit = this
				console.log(e)
				// 判断一下这里是不是小程序 如果是小程序,走获取微信手机号进行绑定
				if (e.mp.detail.errMsg == 'getPhoneNumber:ok') {
					uni.showLoading({
						title: '绑定中',
					})
					
					let jsCode = '';
					//获取code
					uni.login({
						provider: 'weixin',
						success: (loginRes) => {
							jsCode = loginRes.code;
							// 		console.log('222',loginRes);
							//获取session_key
							uni.request({
								url: 'https://api.weixin.qq.com/sns/jscode2session',
								method: 'GET',
								data: {
									appid: this.$APP_ID, //你的小程序的APPID
									secret: this.$APP_SECRET, //你的小程序秘钥secret,  
									js_code: jsCode, //wx.login 登录成功后的code
									grant_type: 'authorization_code'
								},
								success: (cts) => {
									console.log('获取信息', cts); // 换取成功后 暂存这些数据 留作后续操作
									// this.openid = cts.data.openid //openid 用户唯一标识
									// this.session_key = cts.data.session_key //session_key  会话密钥
									//方法一:前端解mi
									//this.$APP_ID  商户appid
								    //cts.data.session_key  
									var pc = new WXBizDataCrypt(this.$APP_ID, cts.data.session_key)
									 var data = pc.decryptData(e.detail.encryptedData , e.detail.iv)
									// console.log('解析',data);
									
								}
							});
						},
						fail: () => {
							uni.showToast({
								title: "微信登录授权失败",
								icon: "none"
							});
						}
					})
				} else {
					uni.showToast({
						title: '已拒绝授权',
						icon: 'none',
						duration: 2000,
					})
				}
			},

注意:获取session_key需要配置域名,若没有配置可以先关闭域名检验
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值