下载文件选择phpdemo
[https://res.wx.qq.com/wxdoc/dist/assets/media/aes-sample.eae1f364.zip](https://res.wx.qq.com/wxdoc/dist/assets/media/aes-sample.eae1f364.zip)
在控制器中调用
```
<?php
namespace app\system\api;
use app\common\controller\Common;
use Env;
use think\Db as Db;
class Xcx extends Common
{
public function sendCode(){
$APPID = 'wx9633f7d19a7822f9';
$AppSecret = 'd24b0b731ad4930843003990ab886d20';
$code = input('get.code');
if(empty($code)){
echo "code不能为空";
die;
}
$url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$APPID.'&secret='.$AppSecret.'&js_code='.$code.'&grant_type=authorization_code';
$arr = $this -> vegt($url);
$arr = json_decode($arr,true);
// $openid = $arr['openid'];
$session_key = $arr['session_key'];
// 数字签名校验
$signature = input('get.signature');
$signature2 = sha1($_GET['rawData'].$session_key);
if($signature != $signature2){
echo "数字签名失败";
die;
}
// 获取信息,对接口进行解密
// Vendor("PHP.wxBizDataCrypt");
require_once '../extend/PHP/wxBizDataCrypt.php';//引用类文件
$encryptedData = $_GET['encryptedData'];
$iv = $_GET['iv'];
if(empty($signature) || empty($encryptedData) || empty($iv)){
echo "传递信息不全";
}
include_once "../extend/PHP/wxBizDataCrypt.php";
$pc = new \WXBizDataCrypt($APPID,$session_key);
$errCode = $pc->decryptData($encryptedData,$iv,$data);
if($errCode != 0){
echo "解密数据失败";
die;
}else {
$data = json_decode($data,true);
session('myinfo',$data);
$save['open_id'] = $data['openId'];
$save['cooker_name'] = $data['nickName'];
$save['sex'] = $data['gender'];
$save['cooker_address'] = $data['city'];
$save['ctime'] = time();
$save['cooker_header'] = $_GET['cooker_header'];
!empty($data['unionId']) && $save['unionId'] = $data['unionId'];
$res = Db::table('hisi_system_cooker') -> where(['open_id'=>$data['openId']]) -> find();
if(!$res){
$db = Db::table('hisi_system_cooker') -> insert($save);
$userId = Db::table('hisi_system_cooker') -> getLastInsID(); //获得刚插入的id
if($db !== false){
$data['msg'] = '保存用户成功';
$data['userId'] = $userId;
$data['userInfo'] = $save;
echo json_encode($data);
}else{
echo "error";
}
}else{
$data['msg'] = '用户已经存在';
$data['data'] = $res;
echo json_encode($data);
}
}
//生成第三方3rd_session
// $session3rd = null;
// $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
// $max = strlen($strPol)-1;
// for($i=0;$i<16;$i++){
// $session3rd .=$strPol[rand(0,$max)];
// }
// echo $session3rd;
}
public function vegt($url){
$info = curl_init();
curl_setopt($info,CURLOPT_RETURNTRANSFER,true);
curl_setopt($info,CURLOPT_HEADER,0);
curl_setopt($info,CURLOPT_NOBODY,0);
curl_setopt($info,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($info,CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($info,CURLOPT_URL,$url);
$output= curl_exec($info);
curl_close($info);
return $output;
}
}
```
或者也可以下面这种
```
<?php
namespace app\teacherapi\controller;
use think\Controller;
/**
* @date: 2018-12
* 微信操作类
*/
class WxDecode extends Controller
{
public function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
/**
* @author: zxf
* @date: 2018-12-08
* @description: 解密微信用户敏感数据
* @return array
*/
public function WxDecode()
{
// 接收参数
$data = request() -> param();
// 引入解密文件 在微信小程序开发文档下载
vendor('wx.WXBizDataCrypt');
vendor('wx.ErrorCode');
$appid = config('TESTPPID');
$appsecret = config('TESTSECREET');
$grant_type = "authorization_code"; //授权(必填)
$code = $data['code']; //有效期5分钟 登录会话
$encryptedData=$data['encryptedData'];
$iv = $data['iv'];
$signature = $data['signature'];
$rawData = $data['rawData'];
// 拼接url
$url = "https://api.weixin.qq.com/sns/jscode2session?"."appid=".$appid."&secret=".$appsecret."&js_code=".$code."&grant_type=".$grant_type;
$res = json_decode($this->httpGet($url),true);
$sessionKey = $res['session_key']; //取出json里对应的值
$signature2 = sha1(htmlspecialchars_decode($rawData).$sessionKey);
// 验证签名
if ($signature2 !== $signature){
return json("验签失败");
}
// 获取解密后的数据
$pc = new \WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data );
if ($errCode == 0) {
return return_succ($data);
} else {
return return_error($errCode);
}
}
}
```
参考网址
[https://www.jb51.net/article/174181.htm](https://www.jb51.net/article/174181.htm)
- tp5图片上传
- 文件上传到七牛云
- 上传到阿里云
- 富文本编辑器
- phpexcel和spreadsheet
- phpexcel导出
- phpexcel导入
- spreadsheet
- tp5_api接口
- 跨域请求
- JWT
- 图片和视频上传接口
- 验证码
- tp5小程序登录
- tp5小程序支付
- tp5基础架构
- 验证层
- 模型层Model
- 控制器构找
- tp5.0支付宝
- 海报二维码
- 轮播图
- echarts柱状图
- layui的图片弹窗
- p标签显示指定行数(全部)
- jquery和layerdate调用日期
- ajax发送文件和图片的坑啊
- JS日期点击上一天和下一天
- 百度分享js
- POST请求
- 商品数据表
- tp5.0支付宝最全
- tp5路由的坑
- 二维数组排序
- tp5模型分组group错误
- 二维变一维数组
- 无限树形结构
- json对象转数组
- 模型关联查询
- tp5的模型获取器和字段设定
- 经纬度获取距离排序