目錄
需求描述
第三方平台授權
首頁 php框架 ThinkPHP 介紹thinkphp5.1 easywechat4微信第三方開放平台

介紹thinkphp5.1 easywechat4微信第三方開放平台

Jun 30, 2021 pm 03:44 PM
thinkphp5.1

今天thinkphp框架專欄帶給大家的主題就是《thinkphp5.1 easywechat4 微信第三方開放平台》,以下我們來詳細介紹~

#thinkphp5.1 easywechat4 微信第三方開放平台

需求描述

  1. 目前商城(uid識別)授權第三方開發平台.
  2. 網頁授權成功後來跳到另一個商城項目連結並帶上當前微信用戶資訊和微信初始化驗證簽名.

第三方平台授權

安裝easywechat4

##
$ composer require overtrue/wechat:~4.0 -vvv
登入後複製
###引用###
use EasyWeChat\Factory;
登入後複製
###建立一個跳到微信掃二維碼授權頁面###
/**
 * 开发平台授权跳转
 *
 * @return void
 */
public function accessView(){
    // 
    $uid = Request()->route('uid' , 0);
    $url = 'http://qgcloud.capsui.com/public/index/wxopen/config?uid=' . $uid;
    $this->assign('url' , $url);
    return $this->fetch();
}
登入後複製
###跳轉方法(為什麼我不寫到上一個方法呢因為微信要求同一個位址)###
/**
 * 开发平台跳转授权扫码页
 *
 * @return void
 */
public function config(){
    $uid = Request()->get('uid' , 0);
    $config = [
        'app_id'   => '开放平台第三方平台 APPID',
        'secret'   => '开放平台第三方平台 Secret',
        'token'    => '开放平台第三方平台 Token',
        'aes_key'  => '开放平台第三方平台 AES Key'
    ];
    $openPlatform = Factory::openPlatform($config);
    
    $url = $openPlatform->getPreAuthorizationUrl('http://qgcloud.capsui.com/public/index/wxopen/wxcallback?uid=' . $uid);

    $this->redirect($url);
}
登入後複製
###授權回呼(注意:掃碼確認授權後他第一次回呼不會帶uid參數,)###
引入 
use EasyWeChat\OpenPlatform\Server\Guard;
登入後複製
/**
 * 开发平台授权回调
 *
 * @return void
 */
public function wxcallback(){
    // 这个表是记录授权成功的
    //$Wxpublic   = new Wxpublic;
    // 这个表是记录授权成功后传过来所属uid商城绑定appid
    //$ShopConfig = new ShopConfig;

    $get = Request()->param();
    
    $config = [
        'app_id'   => '开放平台第三方平台 APPID',
        'secret'   => '开放平台第三方平台 Secret',
        'token'    => '开放平台第三方平台 Token',
        'aes_key'  => '开放平台第三方平台 AES Key'
    ];
    $openPlatform = Factory::openPlatform($config);
    $server       = $openPlatform->server;

    
    // 处理授权成功事件-第一次回调
    // 闭包方法!里面调用外面的方法请在use里面填写
    $server->push(function ($message) use ($openPlatform /*, $Wxpublic*/) {
        
        $authCode = $message['AuthorizationCode'];
        $res      = $openPlatform->handleAuthorize($authCode);

        if($res['authorization_info']['authorizer_refresh_token']){
            //授权成功记录到数据库
            //$Wxpublic->insert(['appid' => $res['authorization_info']['authorizer_appid'] , 'createtime' => time()]);
        }

    }, Guard::EVENT_AUTHORIZED);

    // 处理授权取消事件-第一次回调
    // 闭包方法!里面调用外面的方法请在use里面填写
    $server->push(function ($message) use(/*$Wxpublic , $ShopConfig*/) {
        //处理数据库逻辑
        //$Wxpublic::appid($message['AppId'])->delete();
        //$ShopConfig::appid($message['AppId'])->update(['token' => '']);
    }, Guard::EVENT_UNAUTHORIZED);
    
    // 第二次回调会带一个授权code和自定义参数商城id(uid)
    if(isset($get['auth_code']) && isset($get['uid'])){
        
        $res      = $openPlatform->handleAuthorize($get['auth_code']);
        $appid    = $res['authorization_info']['authorizer_appid'];
        //数据库逻辑
        //$isConfig = $Wxpublic::appid($appid)->count();
        
        //if($isConfig){
        //$add = $ShopConfig->where('uid' , $get['uid'])->update(['token' => $appid]);
        //}
    }

    return $server->serve();
}
登入後複製
###第三方平台網頁授權&微信JSSDK初始化簽章生成###
/**
 * 网页授权调起
 *
 * @return void
 */
public function htmlAccess(){
    $appid = Request()->get('appid' , 0);
    
    $config = [
        'app_id'   => '开放平台第三方平台 APPID',
        'secret'   => '开放平台第三方平台 Secret',
        'token'    => '开放平台第三方平台 Token',
        'aes_key'  => '开放平台第三方平台 AES Key'
    ];
    $openPlatform = Factory::openPlatform($config);
    $data         = $openPlatform->getAuthorizer($appid);
    $appid        = $data['authorization_info']['authorizer_appid'];
    $refreshToken = $data['authorization_info']['authorizer_refresh_token'];

    $officialAccount = $openPlatform->officialAccount($appid , $refreshToken);
    $oauth           = $officialAccount->oauth;
    
    // 回调授权地址
    $url      = "http://qgcloud.capsui.com/public/index/wxopen/callbackOpenid";
    $response = $officialAccount->oauth->scopes(['snsapi_userinfo'])->redirect($url)->send();

}
登入後複製
###網頁授權回呼方法###
/**
 * 网页授权回调
 *
 * @return void
 */
public function callbackOpenid(){
    $appid = Request()->get('appid' , null);
    
    $config = [
        'app_id'   => '开放平台第三方平台 APPID',
        'secret'   => '开放平台第三方平台 Secret',
        'token'    => '开放平台第三方平台 Token',
        'aes_key'  => '开放平台第三方平台 AES Key'
    ];
    $openPlatform = Factory::openPlatform($config);
    $data         = $openPlatform->getAuthorizer($appid);
    
    $appid        = $data['authorization_info']['authorizer_appid'];
    $refreshToken = $data['authorization_info']['authorizer_refresh_token'];
    
    // 获取微信用户信息 如openid nickname等信息
    $officialAccount = $openPlatform->officialAccount($appid , $refreshToken);
    $oauth           = $officialAccount->oauth;
    $user            = $oauth->user();
    
    // 处理wxconfig初始化JSSDK
    $officialAccount->jssdk->setUrl('http://quguoshop.capsui.com/');
    $wxconfig = $officialAccount->jssdk->buildConfig(['chooseWXPay'], $debug = true, $beta = false, $json = true);

    $ShopConfig = new ShopConfig;
    $shopInfo   = $ShopConfig::appid($appid)->find();
    
    // 注意 这里我是带参数跳转到其他TP5项目里面再用缓存处理一下
    $url = 'http://quguoshop.capsui.com/public/wxoauthCallback?data=' . json_encode($user->toArray()) . '&token=' . $shopInfo['id'] . '&wxconfig=' . $wxconfig;
    $this->redirect($url);
}
登入後複製
######《相關推薦:###最新的10個thinkphp影片教學###》###

以上是介紹thinkphp5.1 easywechat4微信第三方開放平台的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1269
29
C# 教程
1249
24