小程序代码

php代码

public function login2()
{
$post = input();
if (!empty($post)) {
$appid = $this->wxappid;
$secret = $this->wxsecret;
if(isset($post['code'])) $code = $post['code'];
if(isset($post['iv'])) $iv = $post['iv'];
if(isset($post['rawData'])) $rawData = $post['rawData'];
if(isset($post['signature'])) $signature = $post['signature'];
if(isset($post['encryteData'])) $encryptedData = $post['encryteData'];
$url = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $appid . "&secret=" . $secret . "&js_code=" . $code . "&grant_type=authorization_code";
$weixin = file_get_contents($url);
$jsondecode = json_decode($weixin);
$res = get_object_vars($jsondecode);
$sessionKey = $res['session_key'];//取出json里对应的值
        // 验证签名
$signature2 = sha1(htmlspecialchars_decode($rawData) . $sessionKey);
if ($signature2 !== $signature) return json("signNotMatch");
            $data = [];
            $errCode = $this->decryptData($encryptedData, $iv, $sessionKey, $data);

            if ($errCode == 0) {
return $data;
} else {
return json('获取失败');
}
}
}
public function decryptData( $encryptedData, $iv,$sessionKey, &$data )
{
if (strlen($sessionKey) != 24) {
return json('sessionKey错误');
}
$aesKey=base64_decode($sessionKey); if (strlen($iv) != 24) {
return json('iv错误');
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($encryptedData);
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
$dataObj=json_decode( $result );
if( $dataObj == NULL )
{
return json('IllegalBuffer错误');
}
if( $dataObj->watermark->appid != $this->wxappid )
{
return json('IllegalBuffer错误');
}
$data = $result;
return $data;
}

php 解密小程序获取unionid的更多相关文章

  1. 小程序获取Unionid

    小程序获取用户Unionid,必须授权获取密文.但授权成功后不是永久的.除非关注了公众号或者App微信绑定了, 解决办法是通过code获取openid,然后用openid去数据库查对应的Unionid ...

  2. 小程序获取unionId以及手机号

    1.前端小程序传入后端接口的入参如下: code :临时登录凭证(必传)encryptedData:密文iv:偏移量 2.接收到入参后的java后端接口中的代码如下: @Action(value = ...

  3. 微信小程序获取unionid

    链接:https://blog.csdn.net/a493001894/article/details/80323403

  4. .net 小程序获取用户UnionID

    第一次写博客,写的不好多多海涵! 1.小程序获取UnionID的流程用code去换取session_key,然后去解密小程序获取到的那串字符! 话不多说,原理大家都懂!!!!!! 直接上代码 publ ...

  5. 微信公众号&小程序 -- 获取并解密用户数据(获取openId、unionId)

    本文转自https://my.oschina.net/u/3235888/blog/832895 前言 微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc ...

  6. 小程序获取openid和unionid java实现

    官方api:https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html#wxloginobject 参考文章:https:/ ...

  7. .Net之微信小程序获取用户UnionID

    前言: 在实际项目开发中我们经常会遇到账号统一的问题,如何在不同端或者是不同的登录方式下保证同一个会员或者用户账号唯一(便于用户信息的管理).这段时间就有一个这样的需求,之前有个客户做了一个微信小程序 ...

  8. thinkphp3.2.3 小程序获取手机号 php 解密

    首先是把这个文件夹放到\ThinkPHP\Library\Org里面 //zll 根据加密字符串和session_key和iv获取手机号 /** * [getphone description] * ...

  9. 微信小程序获取手机号码看这篇文章就够了

    前言 微信小程序获取手机号码,从官方文档到其他博主的文档 零零散散的 (我就是这样看过来 没有一篇满意的 也许是我搜索姿势不对) 依旧是前人栽树 后人乘凉 系列.保证看完 就可以实现获取手机号码功能 ...

随机推荐

  1. C语言fread/fwrite填坑记

    坑的描述 用fwrite把数据写入文件,再用fread读取,发现后半部分的数据可能是错的. 原因:原本要写入文件的数据中,有0x0A,如果用的是文本模式打开的文件流,在windows下0x0A会被转换 ...

  2. 14.并发与异步 - 2.任务Task -《果壳中的c#》

    线程是创建并发的底层工具,因此具有一定的局限性. 没有简单的方法可以从联合(Join)线程得到"返回值".因此必须创建一些共享域.当抛出一个异常时,捕捉和处理异常也是麻烦的. 线程 ...

  3. day16匿名函数

    匿名函数,好像也就是 lambda 表达式 先来看一段函数,返回 def func(n): return n * 3 print(func(5))15 用lambda表达式写: func = lamb ...

  4. Kafka集群搭建 (2.11-0.9.0.1)

    之前写过kafka_2.9.2-0.8.2.2版本的安装,kafka在新的0.9版本以上改动比较大,配置和api都有很大更新,并且broker对应的partition支持多线程生产和消费,所以性能比之 ...

  5. Promise源码深入理解

    ) ) }); ) }, ) }); ) ) }, ) }); ) }, ) }); p.then(function (x) { console.log(x) }) //输出 1 链式调用1 链式调用 ...

  6. 【redis】-- springboot集成redis及使用

    springboot自动配置的redis并不是特别好用,所以需要我们使用原生的jedis, 1.添加依赖 2.在application文件中配置 # Redis服务器地址 redis.host= # ...

  7. SQLyog 最新版本12.5-64bit 完美破解,亲测可用!

    声明:本文只是提供一个网络上找到的针对12.5版本的注册码使用方式做一个说明,不建议企业用户破解,有条件的还是希望大家购买原版.当然个人学习用的但又不想购买原版的,这里只是提供个途径,请勿用做商业用途 ...

  8. 关于Android文件Apk下载的那点事

    1.Android文件Apk下载变ZIP压缩包解决方案 如果你的下载服务器为Nginx服务器,那么,在Nginx安装目录下的conf/mime.types文件的对应位置,加上以下一行语句,指定APK文 ...

  9. CSS_细节总结

    1. 负外边距 上下200*200盒子的重叠,切记用 absolute 绝对定位 为最佳解决方案. 定位 position : fixed    absolute    relative( top 为 ...

  10. Linux 手册惯用的节名

    linux 手册将