框架环境:tp5

access_token.php

jsapi_ticket.php

放到public

然后jsapi_ticket.php放到extend目录

/*** 获取公众号信息*/public function wx_public_info() {$yourAppID = Config::get("site.wx_public_AppID");$yourAppSecret = Config::get("site.wx_public_AppSecret");import('lib.wx_public.jssdk', EXTEND_PATH , '.php');$jssdk = new \JSSDK($yourAppID, $yourAppSecret);$signPackage = $jssdk->GetSignPackage();$this->success("ok", $signPackage );}

如果对象报错,修改jssdk.php

private function httpGet($url) {$curl = curl_init();curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_TIMEOUT, 500);// 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。// 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
//    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
//    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);curl_setopt($curl, CURLOPT_URL, $url);$res = curl_exec($curl);curl_close($curl);return $res;}
<?php/*** 获取微信用户信息* 第一步:判断有没有code,有code去第三步,没有code去第二步* 第二步:用户同意授权,获取code* 第三步:通过code换取网页授权access_token* 第四步:使用access_token获取用户信息*/
namespace app\api\controller;use app\common\controller\Api;
use think\Db;
use think\Config;
use app\common\library\Sms;class Wexin extends Api
{protected $noNeedLogin = ['*'];protected $noNeedRight = ['*'];public $appid = '';public $appsecret = '';public $api_url = '';public $id = '';public function _initialize() {parent::_initialize();$this->appid = Config::get('site.wx_public_AppID');$this->appsecret = Config::get('site.wx_public_AppSecret');}/*** 1、获取微信用户信息,判断有没有code,有使用code换取access_token,没有去获取code。* @return array 微信用户信息数组*/public function get_user_all(){$code = $this->request->request("code",'');$state = $this->request->request("state",'');$callback = $this->request->request("url",'');if (!$code) {//没有code,去微信接口获取code码//微信服务器回调url,这里是本页url;注意::这里回调的url是http://www.xxxx.com/index.php。如果想要获取完整的路径用 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']
//            $callback = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];$this->get_code( $callback , $state );} else {//获取code后跳转回来到这里了$data = $this->get_access_token($code);//获取网页授权access_token和用户openid$data_all = $this->get_user_info($data['access_token'], $data['openid']);//获取微信用户信息$w = [];$w['openid'] = array("eq",$data['openid']);$user_info = Db::name("user")->field("id")->where( $w )->find();
//            $this->success('ok', $data_all);if( !$user_info ){$this->success("ok",['type' => 1,   //  未注册'data' => $data_all]); }else{$this->auth->public_login( $user_info['id'] ) ;//            echo '<pre>';print_r($data_all);die;$this->success("ok",['type' => 2,    //  已注册'data' => $this->auth->getUserinfo()]); }}}/*** 2、用户授权并获取code* @param string $callback 微信服务器回调链接url*/private function get_code( $callback , $state ){$appid = $this->appid;$scope = 'snsapi_userinfo';
//        $state = md5(uniqid(rand(), TRUE));//唯一ID标识符绝对不会重复$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid . '&redirect_uri=' . urlencode($callback) . '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';header("Location:$url");}/*** 3、使用code换取access_token* @param string 用于换取access_token的code,微信提供* @return array access_token和用户openid数组*/private function get_access_token($code){$appid = $this->appid;$appsecret = $this->appsecret;$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code';$user = json_decode(file_get_contents($url));if (isset($user->errcode)) {echo 'error:' . $user->errcode . '<hr>msg  :' . $user->errmsg;exit;}$data = json_decode(json_encode($user), true);//返回的json数组转换成array数组return $data;}/*** 4、使用access_token获取用户信息* @param string access_token* @param string 用户的openid* @return array 用户信息数组*/private function get_user_info($access_token, $openid){$url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN';$user = json_decode(file_get_contents($url));if (isset($user->errcode)) {echo 'error:' . $user->errcode . '<hr>msg  :' . $user->errmsg;exit;}$data = json_decode(json_encode($user), true);//返回的json数组转换成array数组return $data;}/** 微信注册*/public function wx_register() {$password = $this->request->request('password');$mobile = $this->request->request('mobile');$openid = $this->request->request('openid');$reffer_code = $this->request->request('reffer_code');$captcha = $this->request->request('captcha');$pay_password = $this->request->request('pay_password');$longitude = $this->request->request('longitude');$latitude = $this->request->request('latitude');//        var_dump( $this->request->request() );die;if ( strlen($password)>16 || strlen($password)<8 ) {$this->error("请输入8-16位密码");}if( !$reffer_code ){$this->error("请输入邀请码");}$check_pwd = controller("common")->check_transaction_code( $pay_password );if( !$check_pwd ){$this->error( "请输入六位数字" );}$encryption_pwd = controller("common")->encrypt_transaction_code( $pay_password );$w = [];$w['reffer_code'] = array("eq",$reffer_code);$p_info = Db::name("user")->field("id,pid")->where( $w )->find();if( !$p_info ){$this->error("邀请码不存在");}if (!Sms::check($mobile, $captcha, 'register')) {$this->error( "验证码不正确" );}$my_reffer_code = $this->create_reffer_code();$extend['reffer_code'] = $my_reffer_code;$extend['nickname'] = $mobile;$extend['openid'] = $openid;$extend['pay_pwd'] = $pay_password;$extend['pid'] = $p_info['id'];$extend['p_pid'] = $p_info['pid'];$extend['pay_pwd'] = $encryption_pwd;if( $latitude && $longitude ){$address_ = [];$baidu_key = Config::get('site.baidu_key');$address_ = getCityName($baidu_key, $latitude, $longitude);if( $address_ ){$extend['province'] = $address_['province'];$extend['city'] = $address_['city'];$extend['area'] = $address_['district'];}}$ret = $this->auth->wx_public_register($mobile, $password, $mobile, $extend);if ($ret) {$data = ['userinfo' => $this->auth->getUserinfo()];$this->success("注册成功", $data);} else {$this->error($this->auth->getError());}}/*** 生成邀请码*/public function create_reffer_code() {$d = substr(base_convert(md5(uniqid(md5(microtime(true)),true)), 16, 10), 0, 6);$w['reffer_code'] = array('eq', $d);$user_info = Db::name('user')->field("id")->where($w)->find();if ($user_info) {$this->create_invite_code();}return $d;}}

php接入微信公众号jssdk相关推荐

  1. 微信公众号自动回复html,[.NET] 简单接入微信公众号开发:实现自动回复

    简单接入微信公众号开发:实现自动回复 一.前提 先申请微信公众号的授权,找到或配置几个关键的信息(开发者ID.开发者密码.IP白名单.令牌和消息加解密密钥等). 二.基本配置信息解读 开发者ID:固定 ...

  2. 从零接入微信公众号(Java实现 附源码)

    目录 从零接入微信公众号 一.微信测试号的申请与关注 1.申请 2.访问域名配置 3.关注 二.测试号快速生成底部导航栏 1.获取 access_token 2.自定义菜单 三.微信公众号网页授权 1 ...

  3. 微信开发:springboot接入微信公众号

    微信公众号现今已经成为我们日常生活中获取信息的一个重要途径,今天这篇博客主要是介绍如何用springboot接入微信的公众号.微信的公众号分三种:订阅号,一般个人使用,很多功能受限:服务号,个人与企业 ...

  4. ChatGPT接入微信公众号(手把手教学)

    前言 本篇文章参考国内服务器 3 分钟将 ChatGPT 接入微信公众号(超详细)配置,纠正了一些过时的信息. 准备 一个微信公众号 一个能访问外网的梯子 一个ChatGPT账号 有了这些就可以配置了 ...

  5. 企业宣传片如何快速接入微信公众号中?

    原创文章:2019-8-6 文章内容:快速在微信公众号中接入自己公司的视频宣传片 大家好,我来说说企业视频宣传片.产品宣传片如何接入微信公众号,让关注公众号的用户,轻松点击观看,提升企业形象,提升产品 ...

  6. 搜狗搜索正式接入微信公众号

    搜狗搜索正式接入微信公众号 6月9日中午消息,搜狗搜索今日宣布正式接入微信公众号数据.用户将在搜狗搜索页面查询和浏览微信公众号文章. 据悉,在搜狗搜索框中输入微信公众号关键词,便可在搜索结果页中查看相 ...

  7. chatgpt接入微信公众号

    您好,要想将 chatgpt 接入微信公众号,您需要按照如下步骤进行操作: 在微信公众平台上注册一个订阅号或服务号. 创建一个 chatgpt 的机器人,并获取它的 API 密钥. 在微信公众平台上设 ...

  8. PHP接入微信公众号(一)

    PHP接入微信公众号 前言:微信公众号现在是大家不可缺少的宣传平台,毕竟背靠微信这个巨大流量平台,所以将项目接入微信公众号是必须要掌握的技能 前提 服务器资源:你需要拥有一台公网服务器资源(阿里云.腾 ...

  9. 使用AirCode云平台,两步将ChatGPT接入微信公众号

    使用AirCode云平台,两步将ChatGPT接入微信公众号 最近很火的ChatGPT可以说已经满大街可见了,到处都有各种各样的体验地址,有收费的也有免费的,总之是五花八门.花里胡哨. 所以呢,最近我 ...

最新文章

  1. 进程守护系统,你懂吗?
  2. php中读取大文件实现方法详解
  3. 创建Maven项目时实际使用JDK为1.8,该怎样修改其默认的JDK1.5
  4. Django中related_name的作用
  5. WEB框架研究笔记一(准备)
  6. python 开发api_使用FastAPI和Python快速开发高性能API
  7. [matlab]斜阶梯式长条引起的重力异常计算
  8. 详解 Android 的 Activity 组件
  9. 【华为云技术分享】选择困难症必看!云服务器操作系统选择技巧+经验
  10. Spring :@Inject注解
  11. jdk,jre,jvm的区别以及联系
  12. LOCK - 明确地锁定一个表
  13. gx works2 存储器空间或桌面堆栈不足_2020福清市gx螺旋输送机价格厂家发货-衡泰...
  14. 比较x^y和y^x的大小
  15. WebView 入坑
  16. Java se官方中文API下载链接
  17. nbiot信号 服务器,物联网协议之NBIOT
  18. 使用DNS来屏蔽广告
  19. python用可变参数求积_流畅的python读书笔记-第八章-对象引用、可变性和垃圾回收...
  20. Windows 提高办公效率的应用

热门文章

  1. 网站加强用户停留时间的方法
  2. vue项目中图标可拖拽功能实现
  3. Flume-day02_基础案例
  4. PostMessage跨域漏洞
  5. odoo的many2many和one2many字段给默认值
  6. 谷歌浏览器安装webstorm插件JetBrains IDE Support Chrome下载地址及使用方法实现自动刷新
  7. 【数智化案例展】StarRocks × 众安保险:全新实时分析能力开启数字化经营新局面...
  8. STM32CubeMX 简介
  9. Chrome查找发请求的js之黑箱调试
  10. java injection_java安全编码指南之:输入注入injection