小程序-JAVA服务端解密与微信绑定的手机号
JAVA服务端解密与微信绑定的手机号
背景介绍
在前段时间公司开发小程序的项目中,服务端需要配合前端获取当前用户与微信绑定的手机号;需要以下两步:
1.根据前端所传的code通过服务端调微信接口获取openId,sessionkey;
2.根据前端所传的encrypdata,ivdata,sessionKey服务端进行解密后得到手机号
前提工作
首先在微信公众平台申请小程序公众号,申请成功后就能获取到 appid 和 secret两参数
代码展示
获取微信openId sessionKey
参数:
code:为前端传入
MINI_PROGRAM_REQUEST_URL :https://api.weixin.qq.com/sns/jscode2session
MINI_PROGRAM_APPID:小程序appid
MINI_PROGRAM_SECRET :小程序secret
/*** <desc>* 获取微信openId sessionKey* </desc>** @param code 微信参数* @return* @createDate 2018/12/7*/@RequestMapping(path = "/getOpenId",method = RequestMethod.POST)@ResponseBodypublic MessageVO getOpenId(String code){Map<String, Object> map = new HashMap<>();String status = "1";String msg = "ok";String requestUrl = MINI_PROGRAM_REQUEST_URL +"?appid="+MINI_PROGRAM_APPID+"&secret="+MINI_PROGRAM_SECRET+"&js_code="+code+"&grant_type=authorization_code";try {if(StringUtils.isBlank(code)){status = "0";//失败状态msg = "code为空";}else {System.out.println(requestUrl);// 发起GET请求获取凭证JSONObject jsonObject = HttpProtocolUtil.httpsRequest(requestUrl, "GET", null);if (jsonObject != null) {try {map.put("openid", jsonObject.getString("openid"));map.put("session_key", jsonObject.getString("session_key"));} catch (JSONException e) {// 获取token失败status = "0";msg = "code无效";}}else {status = "0";msg = "code无效";}}map.put("status", status);map.put("msg", msg);} catch (Exception e) {throw new DataAccessException("【小程序】获取openId失败",e);}return new MessageVO(BaseErrorCodeEnum.SUCCESS.getErrorCode(),map);}
解密与微信绑定的手机号
/*** <desc>* 解密与微信绑定的手机号* </desc>** @param encrypdata 微信参数* @param ivdata 微信参数* @param sessionKey 会话密钥* @return* @createDate 2018/11/24*/@RequestMapping(path = "/getPhoneNum",method = RequestMethod.POST)@ResponseBodypublic MessageVO getPhoneNum(String encrypdata,String ivdata,String sessionKey){try {if(StringUtils.isEmpty(encrypdata) || StringUtils.isEmpty(ivdata) || StringUtils.isEmpty(sessionKey)){return new MessageVO(BaseErrorCodeEnum.NOT_PARAM.getErrorCode());}byte[] encrypData = Base64.decode(encrypdata);byte[] ivData = Base64.decode(ivdata);byte[] sessionKeyByte = Base64.decode(sessionKey);AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivData);Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");SecretKeySpec keySpec = new SecretKeySpec(sessionKeyByte, "AES");cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);//解析解密后的字符串 String phoneNum = new String(cipher.doFinal(encrypData),"UTF-8");return new MessageVO(BaseErrorCodeEnum.SUCCESS.getErrorCode(),phoneNum);}catch (Exception e){throw new DataAccessException("【小程序_注册登录版块】解密与微信绑定的手机号失败",e);}}
小程序-JAVA服务端解密与微信绑定的手机号相关推荐
- 微信小程序 java服务端下的post请求
微信小程序的 post请求无法获取data参数,一切都是Content-Type问题,之前分析的确实有点错误,Content-Type为'application/json'时,后端需要用@Reques ...
- 小程序PHP CGI,微信小程序php服务端nginx配置
微信小程序php服务端nginx配置 微信小程序server端如果选择自己部署的话,可以选择java或者php的,为了省事我选择了php的,腾讯是用CodeIgniter框架做的demo,由于CI框架 ...
- 浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务)
浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) 参考文章: (1)浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) (2)https://www.cnblogs.com/ ...
- 【微信小程序】小程序与服务端的http通信
文章目录 搭建服务端 小程序 小程序与服务端通信 get请求 小程序向服务端发送数据 服务端接收小程序发送过来的数据 post请求 小程序向服务端发送数据 服务端接收小程序发送过来的数据 请求前后的状 ...
- 【程序源代码】共享充电桩小程序(服务端)
" 关键字:小程序 共享 充电桩 " 正文: 共享充电桩小程序(服务端) 最近好多小伙伴问我,说:有没有什么好的后台管理的工程可以做小程序的服务使用啊,能不能给可以推荐啊.想学 ...
- java 服务端 获取接收微信小程序wx.uploadFile的formData的值和上传的文件
小程序前端上传文件的js代码 wx.uploadFile({url: 'https://xxxx',//这是你自己后台的连接filePath: tempFilePath,name:"file ...
- 微信小程序java服务_微信小程序访问webService(Java)
在前台UI确认后,终于进入到后台服务的搭建及实现中.所及而来的问题就出现了,为了提高后台程序的可用性.设计初期决定,通过搭建java WebService实现.准备工作还是比较充分的,创建WebSer ...
- 微信小程序商城服务器搭建,基于微信小程序商城毕业设计(小程序客户端+服务端Node.js源码)毕业论文+运行说明...
微信小程序商城毕业设计(微信小程序客户端毕业设计) 摘 要 购物商城系统是保证以购物商城为基础的网上交易实现的体系.市场交易是由参与交易双方在平等.自由.互利的基础上进行的基于价值的交换.网上交易同 ...
- java 加密服务器_Javascript端加密java服务端解密
通常我们会通过htts来保证传输安全,但如果我们不用https,如何通过javascript来保证浏览器端发送的参数进行加密,并且通过RSA算法来处理. 这里我们可以利用jquery的一个加密插件jc ...
- C++使用OPENSSL进行RSA加密,java服务端解密
RSA是一种非对称加密. 加密和解密方式:公钥加密-私钥解密,私钥加密-公钥解密 背景 为了网络数据安全,Web端(Java)要求用RSA加密算法传数据,公钥加密私钥解密方式(RSA有公钥加密私钥解密 ...
最新文章
- 算术表达式字符串求值
- Apache Flink 在实时金融数据湖的应用
- 计算机二级web题目(6)--动态网页技术概述
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析【转】...
- Spring使用注解方式的学习笔记
- mysqldump 工具的使用
- 在.net中序列化读写xml方法的总结
- 美图秀秀计算机教程,美图秀秀怎么抠图 美图秀秀抠图详细教程
- PS为美女换服装颜色及换头发颜色
- 汇哲培训——CISA,CISSP等课程
- Win7部署Web网站之IIs安装篇
- Ubuntu9.04 desktop下LAMP的安装与配置
- 微信小程序怎么添加底部菜单按钮
- HBase数据结构与基本语法详解
- SQL Server使用SUM(求和)函数
- 二进制整数奇偶互换c语言,奇偶
- 照度计是什么测量原理
- java连接电信iot平台,物联网基础:BC28连接电信IOT平台进行数据传输
- 杜甫的唐诗三百首中的望岳
- 百度地图API学习---隐藏百度版权标志