在用户同意授权获取手机号后,前端会获取到一段加密的数据,必须要解密后才可以拿到我们想要的手机号信息,第一次弄的时候在这里耽误了些时间所以记录一下。

首先第一步:微信授权登录

在授权登录后,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解密微信手机号数据相关推荐

  1. 解密微信小程序加密的微信运动数据(java)

    使用java springmvc对微信小程序获取到的加密微信运动数据进行解密 //解密微信运动数据@ResponseBody@RequestMapping(value = "getEncry ...

  2. java实现微信运动数据,从小程序的获取及存储

    1.获取过程及需要的参数,图已经很明显,这个是在网上拿别人的图,写的很好很到位,就不一一解释,比较我也是菜鸟 2,在小程序这边,我们需要用 wx.login来给后台传code(因为微信小程序,不支持在 ...

  3. Java后端解密微信小程序手机号数据

    目录 一.敏感数据获取步骤 二.Java后端解密数据 1.实体类 2.解密工具类 3.涉及到jar包 4.测试类 一.敏感数据获取步骤 1.小程序端登录后,得到登录时获取的 code(仅可使用一次) ...

  4. java实现微信、手机号登陆_Java后端解密微信小程序手机号数据

    小程序端登录后,得到登录时获取的 code(仅可使用一次) App({ onLaunch: function () {//登录 wx.login({ success: res=>{//发送 re ...

  5. 好玩的接口 之 Java 解密微信小程序获取手机号

    LZ-Says:有些东西,真的是很矛盾,本来很简单的事儿,各自坚持,结果,不欢而散,不舍?如何? 前言 最近搞接口,基于 Spring Boot,怎么说呢,很虐. 不过熟悉了业务,表结构等等,相对来说 ...

  6. PHP之 “微信走步数据” ,获取并解密处理的实践操作(关键代码)

    应用场景 在微信小程序的开发中,我们经常需要从微信端获取一些处理,以方便我们的程序操作处理,如"从微信端获取走步数据","从微信端获取手机号"等,而这些数据,考 ...

  7. 微信小程序前端解密获取手机号

    微信小程序在获取用户手机号时安全正确的做法是把获取的iv等信息传递给后端,让后端解密,再提供接口返回给前端:这个是正规的流程. 但要是遇到一个比较一般的后端或者懒的后端的话,前端也可以考自己完成手机号 ...

  8. 微信小程序获取手机号,前端解密手机号,微信sessionKey过期,微信手机号授权

    项目场景: 本文主要: 官方文档 官方文档指出需要先进行login基础授权,获取code,然后后台换取sessionKey ,注意这个==sessionKey ==是会过期的,但是有时候你可能会发现就 ...

  9. 微信小程序获取微信运动数据并解密

    官方API 官方API 步骤 1,APP端拉起微信小程序 2,小程序端获取微信运动数据 3,后台解密获取的微信运动数据 实现 1,APP端调起微信小程序 准备工作: 1)微信开放平台,微信公众平台注册 ...

最新文章

  1. NIOS2-IDE环境下的一些操作技巧
  2. Qt 信号-槽的同步与异步处理
  3. 服务器登记信息查询,勤哲Excel服务器数据查询
  4. ZKTeco live20R指纹采集识别适配谷歌浏览器
  5. oracle sql 分组,排序备忘
  6. CAN(FD)收发器选型及替换指南(二)
  7. 服务器硬件防火墙和软件防火墙的功能和区别
  8. 服务器如何修改vt,如何设置VT?
  9. Java实现短信验证码
  10. vijos 1443 月亮之眼
  11. win7和win10哪个好用
  12. 医疗卫生信息化领域的一些术语和标准
  13. 以太网PHY寄存器分析
  14. VASP学习1入门知识
  15. ENGINE=InnoDB AUTO_INCREMENT=51(mysql)
  16. STC15单片机-通过PWM调整灯亮度
  17. 如何在Activity中获取调用者 -- getReferrer()
  18. Oracle中rownum的使用与总结(详解)
  19. INSERT、UPDATE、DELETE、TRUNCATE指令详解
  20. 里奥老师乾坤大挪移—深入浅出字体2

热门文章

  1. 系统架构设计师典型例题
  2. Xcode 如何添加inHouse模式
  3. 补贴大战,烧不出社区团购的未来
  4. assert定义和用法
  5. 基于5G用户卡的5G接入认证分析及试验
  6. CREO:CREO软件新建之草绘(.sec)、零件(.prt)、组件(.asm)、制造(.mfg)、绘图(.drw)、格式(.frm)、报表(.rep)、图表(.dgm)、布局简介、使用方法之详细攻略
  7. intel realsense d435深度摄像头使用
  8. 雪球(Snow Ball)定价实作:使用Heston模型与GPU加速运算
  9. 关于OWASP Top 10 2021的整理
  10. abaqus 三维基坑开挖渗流模型,含地下连续墙,内支撑,地下水渗流,流固耦合