PHP解密微信手机号数据
在用户同意授权获取手机号后,前端会获取到一段加密的数据,必须要解密后才可以拿到我们想要的手机号信息,第一次弄的时候在这里耽误了些时间所以记录一下。
首先第一步:微信授权登录
在授权登录后,PHP端会根据前端提供的CODE获取到一个数组,保存session_key和openid,这两个参数非常重要,
可以直接保存数据库或者返回给前端,具体实现根据业务调整
注意:session_key会过期,如果保存数据库,最好每次授权登录都重新更新一下session_key)
第二步:小程序授权获取手机号
小程序调用微信getPhoneNumber函数,获取到信息加密字符串等数据(encryptedData,iv),将拿到的数据传送给服务器即可。
切记,如果服务器没有保存session_key参数的话,前端在授权登录成功后让后台提供该参数,并同encryptedData,iv两个参数一起在传给后端,下面是js代码示例(我们的session_key参数是登录成功时,直接保存在用户信息里面了,所以js接口没有传)
http.post(app.globalData.bind_phone, {encryptedData: e.detail.encryptedData,iv: e.detail.iv,unionId: app.globalData.unionId,}).then(res => {app.showSuccessToast(res.message, () => {// 这里处理绑定手机号成功后的逻辑,自行根据业务需要补充})})
第三步:PHP解密
// 获取前端传过来的参数encryptedData,iv,unionId$param = $crypt->request();// 通过unionid获取用户信息$wxMember = $memberModel->where([['wechat_open_id', '=', $param['unionId']],])->find();if (is_null($wxMember) || !$wxMember['status']) {return $crypt->response(['code' => -1,'message' => '该用户不存在或已被注销',], true);}if ($wxMember['phone']) {return $crypt->response(['code' => -2,'message' => '该账号已绑定手机号,不可再次绑定',], true);}//获取解密信息$aesKey=base64_decode($wxMember['session_key']); // 对授权登录时获取到的session_key进行base64_decode处理$aesIV = base64_decode($param['iv']); // 对前端给的iv参数进行base64_decode处理$aesCipher = base64_decode($param['encryptedData']); // 对前端给的encryptedData参数进行encryptedData处理$result = openssl_decrypt($aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV); // 按照微信要求的方式,进行解密操作$param['phone'] = json_decode($result, true)['phoneNumber']; // 对获得的json转义// 获取到手机号的后续代码逻辑根据业务要求自行解决
PHP解密微信手机号数据相关推荐
- 解密微信小程序加密的微信运动数据(java)
使用java springmvc对微信小程序获取到的加密微信运动数据进行解密 //解密微信运动数据@ResponseBody@RequestMapping(value = "getEncry ...
- java实现微信运动数据,从小程序的获取及存储
1.获取过程及需要的参数,图已经很明显,这个是在网上拿别人的图,写的很好很到位,就不一一解释,比较我也是菜鸟 2,在小程序这边,我们需要用 wx.login来给后台传code(因为微信小程序,不支持在 ...
- Java后端解密微信小程序手机号数据
目录 一.敏感数据获取步骤 二.Java后端解密数据 1.实体类 2.解密工具类 3.涉及到jar包 4.测试类 一.敏感数据获取步骤 1.小程序端登录后,得到登录时获取的 code(仅可使用一次) ...
- java实现微信、手机号登陆_Java后端解密微信小程序手机号数据
小程序端登录后,得到登录时获取的 code(仅可使用一次) App({ onLaunch: function () {//登录 wx.login({ success: res=>{//发送 re ...
- 好玩的接口 之 Java 解密微信小程序获取手机号
LZ-Says:有些东西,真的是很矛盾,本来很简单的事儿,各自坚持,结果,不欢而散,不舍?如何? 前言 最近搞接口,基于 Spring Boot,怎么说呢,很虐. 不过熟悉了业务,表结构等等,相对来说 ...
- PHP之 “微信走步数据” ,获取并解密处理的实践操作(关键代码)
应用场景 在微信小程序的开发中,我们经常需要从微信端获取一些处理,以方便我们的程序操作处理,如"从微信端获取走步数据","从微信端获取手机号"等,而这些数据,考 ...
- 微信小程序前端解密获取手机号
微信小程序在获取用户手机号时安全正确的做法是把获取的iv等信息传递给后端,让后端解密,再提供接口返回给前端:这个是正规的流程. 但要是遇到一个比较一般的后端或者懒的后端的话,前端也可以考自己完成手机号 ...
- 微信小程序获取手机号,前端解密手机号,微信sessionKey过期,微信手机号授权
项目场景: 本文主要: 官方文档 官方文档指出需要先进行login基础授权,获取code,然后后台换取sessionKey ,注意这个==sessionKey ==是会过期的,但是有时候你可能会发现就 ...
- 微信小程序获取微信运动数据并解密
官方API 官方API 步骤 1,APP端拉起微信小程序 2,小程序端获取微信运动数据 3,后台解密获取的微信运动数据 实现 1,APP端调起微信小程序 准备工作: 1)微信开放平台,微信公众平台注册 ...
最新文章
- NIOS2-IDE环境下的一些操作技巧
- Qt 信号-槽的同步与异步处理
- 服务器登记信息查询,勤哲Excel服务器数据查询
- ZKTeco live20R指纹采集识别适配谷歌浏览器
- oracle sql 分组,排序备忘
- CAN(FD)收发器选型及替换指南(二)
- 服务器硬件防火墙和软件防火墙的功能和区别
- 服务器如何修改vt,如何设置VT?
- Java实现短信验证码
- vijos 1443 月亮之眼
- win7和win10哪个好用
- 医疗卫生信息化领域的一些术语和标准
- 以太网PHY寄存器分析
- VASP学习1入门知识
- ENGINE=InnoDB AUTO_INCREMENT=51(mysql)
- STC15单片机-通过PWM调整灯亮度
- 如何在Activity中获取调用者 -- getReferrer()
- Oracle中rownum的使用与总结(详解)
- INSERT、UPDATE、DELETE、TRUNCATE指令详解
- 里奥老师乾坤大挪移—深入浅出字体2
热门文章
- 系统架构设计师典型例题
- Xcode 如何添加inHouse模式
- 补贴大战,烧不出社区团购的未来
- assert定义和用法
- 基于5G用户卡的5G接入认证分析及试验
- CREO:CREO软件新建之草绘(.sec)、零件(.prt)、组件(.asm)、制造(.mfg)、绘图(.drw)、格式(.frm)、报表(.rep)、图表(.dgm)、布局简介、使用方法之详细攻略
- intel realsense d435深度摄像头使用
- 雪球(Snow Ball)定价实作:使用Heston模型与GPU加速运算
- 关于OWASP Top 10 2021的整理
- abaqus 三维基坑开挖渗流模型,含地下连续墙,内支撑,地下水渗流,流固耦合