Jadual Kandungan
需求描述
第三方平台授权
第三方平台 网页授权&微信JSSDK初始化签名生成
Rumah rangka kerja 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
Salin selepas log masuk
引用
use EasyWeChat\Factory;
Salin selepas log masuk
创建一个跳转到微信扫二维码授权页面
/**
 * 开发平台授权跳转
 *
 * @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();
}
Salin selepas log masuk
跳转方法(为什么我不写到上一个方法呢 因为微信要求同一个地址)
/**
 * 开发平台跳转授权扫码页
 *
 * @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);
}
Salin selepas log masuk
授权回调(注意:扫码确认授权后他第一次回调不会带uid参数,)
引入 
use EasyWeChat\OpenPlatform\Server\Guard;
Salin selepas log masuk
/**
 * 开发平台授权回调
 *
 * @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();
}
Salin selepas log masuk

第三方平台 网页授权&微信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();

}
Salin selepas log masuk
网页授权回调方法
/**
 * 网页授权回调
 *
 * @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);
}
Salin selepas log masuk

《相关推荐:最新的10个thinkphp视频教程

Atas ialah kandungan terperinci 介绍thinkphp5.1 easywechat4微信第三方开放平台. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah pertimbangan utama untuk menggunakan ThinkPhp dalam seni bina tanpa pelayan? Apakah pertimbangan utama untuk menggunakan ThinkPhp dalam seni bina tanpa pelayan? Mar 18, 2025 pm 04:54 PM

Artikel ini membincangkan pertimbangan utama untuk menggunakan ThinkPhp dalam arkitek tanpa pelayan, memberi tumpuan kepada pengoptimuman prestasi, reka bentuk tanpa statik, dan keselamatan. Ia menyoroti faedah seperti kecekapan kos dan skalabiliti, tetapi juga menangani cabaran

Apakah ciri -ciri canggih bekas suntikan ketergantungan ThinkPhp? Apakah ciri -ciri canggih bekas suntikan ketergantungan ThinkPhp? Mar 18, 2025 pm 04:50 PM

ThinkPhp's Container IOC menawarkan ciri -ciri canggih seperti pemuatan malas, mengikat kontekstual, dan suntikan kaedah untuk pengurusan ketergantungan yang cekap di php apps.Character Count: 159

Apakah ciri-ciri utama rangka kerja ujian ThinkPHP? Apakah ciri-ciri utama rangka kerja ujian ThinkPHP? Mar 18, 2025 pm 05:01 PM

Artikel ini membincangkan rangka kerja ujian ThinkPHP, yang menonjolkan ciri-ciri utamanya seperti ujian unit dan integrasi, dan bagaimana ia meningkatkan kebolehpercayaan aplikasi melalui pengesanan bug awal dan kualiti kod yang lebih baik.

Bagaimanakah saya dapat mengelakkan kelemahan suntikan SQL dalam ThinkPhp? Bagaimanakah saya dapat mengelakkan kelemahan suntikan SQL dalam ThinkPhp? Mar 14, 2025 pm 01:18 PM

Artikel ini membincangkan menghalang kelemahan suntikan SQL dalam ThinkPHP melalui pertanyaan parameter, mengelakkan SQL mentah, menggunakan ORM, kemas kini tetap, dan pengendalian ralat yang betul. Ia juga meliputi amalan terbaik untuk mendapatkan pertanyaan pangkalan data dan validat

Apakah perbezaan utama antara ThinkPhp 5 dan ThinkPhp 6, dan kapan hendak menggunakan masing -masing? Apakah perbezaan utama antara ThinkPhp 5 dan ThinkPhp 6, dan kapan hendak menggunakan masing -masing? Mar 14, 2025 pm 01:30 PM

Artikel ini membincangkan perbezaan utama antara ThinkPhp 5 dan 6, yang memberi tumpuan kepada seni bina, ciri, prestasi, dan kesesuaian untuk peningkatan warisan. ThinkPhp 5 disyorkan untuk projek tradisional dan sistem warisan, sementara ThinkPhp 6 sesuai dengan PR baru

Bagaimana untuk membina sistem giliran tugas yang diedarkan dengan ThinkPhp dan RabbitMQ? Bagaimana untuk membina sistem giliran tugas yang diedarkan dengan ThinkPhp dan RabbitMQ? Mar 18, 2025 pm 04:45 PM

Artikel ini menggariskan membina sistem giliran tugas yang diedarkan menggunakan ThinkPhp dan RabbitMQ, yang memberi tumpuan kepada pemasangan, konfigurasi, pengurusan tugas, dan skalabilitas. Isu -isu utama termasuk memastikan ketersediaan yang tinggi, mengelakkan perangkap biasa seperti implope

Apakah cara terbaik untuk mengendalikan muat naik fail dan penyimpanan awan di ThinkPhp? Apakah cara terbaik untuk mengendalikan muat naik fail dan penyimpanan awan di ThinkPhp? Mar 17, 2025 pm 02:28 PM

Artikel ini membincangkan amalan terbaik untuk mengendalikan muat naik fail dan mengintegrasikan penyimpanan awan di ThinkPhp, yang memberi tumpuan kepada keselamatan, kecekapan, dan skalabiliti.

Bagaimana untuk melaksanakan penemuan perkhidmatan dan mengimbangi beban dalam microservices ThinkPHP? Bagaimana untuk melaksanakan penemuan perkhidmatan dan mengimbangi beban dalam microservices ThinkPHP? Mar 18, 2025 pm 04:51 PM

Artikel ini membincangkan pelaksanaan penemuan perkhidmatan dan mengimbangi beban dalam microservices ThinkPHP, memberi tumpuan kepada persediaan, amalan terbaik, kaedah integrasi, dan alat yang disyorkan. [159 aksara]

See all articles