Giter VIP home page Giter VIP logo

think-wechat's Introduction

thinkphp-wechat

FOSSA Status

微信SDK For ThinkPHP 5.1 基于overtrue/wechat

框架要求

ThinkPHP5.1(中间件要求支持ThinkPHP5.1.6+)

安装

composer require naixiaoxin/think-wechat 

配置

  1. 修改配置文件 修改项目根目录下config/wechat.php中对应的参数

  2. 每个模块基本都支持多账号,默认为 default。

使用

接受普通消息

新建一个Controller,我这边用的是Note

<?php

namespace app\wechat\controller;


use think\Controller;

class Note extends Controller
{

    public function index()
    {
        //    先初始化微信
        $app = app('wechat.official_account');
        $app->server->push(function($message){
            return 'hello,world';
        });
        $app->server->serve()->send();
    }
}

获得SDK实例

使用facade

use Naixiaoxin\ThinkWechat\Facade;

$officialAccount = Facade::officialAccount();  // 公众号
$work = Facade::work(); // 企业微信
$payment = Facade::payment(); // 微信支付
$openPlatform = Facade::openPlatform(); // 开放平台
$miniProgram = Facade::miniProgram(); // 小程序  
$openWork = Facade::openWork(); // 企业微信第三方服务商  
$microMerchant = Facade::microMerchant(); // 小微商户  

以上均支持传入自定义账号:例如

$officialAccount = Facade::officialAccount('test'); // 公众号

以上均支持传入自定义账号+配置(注:这里的config和配置文件中账号的格式相同):例如

$officialAccount = Facade::officialAccount('',$config); // 公众号

Oauth登录中间件(ThinkPHP5.1.6+)

使用中间件情况下,config的oauth.callback可以随便写~,反正是直接获取了当前URL

\think\facade\Route::rule('user','usere')->middleware(\Naixiaoxin\ThinkWechat\Middleware\OauthMiddleware::class);

上面的路由定义了 /user 是需要微信授权的,那么在这条路由的回调 或 控制器对应的方法里, 你就可以从 session('wechat_oauth_user_default') 拿到已经授权的用户信息了。

关于ThinkPHP5.1的中间件使用方法不在叙述,详情可以查看官方文档

中间件参数说明

由于ThinkPHP中间件只支持一个参数,所以以:做分割

支持传入account账号别名以及scope类型

若不传入account,会使用default账号

若不传入scope,会使用配置文件中的oauth.scope

支持一下两种方式

default:snsapi_base
snsapi_base

HOOK

你可以监听相应的事件,并对事件发生后执行相应的操作。

  • OAuth授权 wechat_oauth
// 该事件有以下属性
$params['user']; // 同 session('wechat_oauth_user_default') 一样
$params['is_new']; // 是不是新的会话(第一次创建 session 时为 true)

更多 SDK 的具体使用请参考:https://easywechat.com

参考项目

License

MIT

FOSSA Status

think-wechat's People

Contributors

fossabot avatar psr4 avatar qiqizjl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

think-wechat's Issues

单调

可以不可以考虑多地方使用下呢?

关于初始化的问题

我在这里新增了一个类指向 open_work。但是加载的时候,并没有获取到这个的open_work的配置。我在config中也添加了open_work的配置,仍然读取不到。想请教一下我应该怎么配置。
image

Facade.php里面加的

    /**
     * @return \EasyWeChat\OpenWork\Application
     */
    public static function openWork($name = '', $config = [])
    {
        return $name ? app('wechat.open_work.' . $name,  ["config"=>$config]) : app('wechat.open_work',  ["config"=>$config]);
    }

无法调用

[0] ClassNotFoundException in Container.php line 442
类不存在: wechat.mini_program

tp版本:5.1.29

composer安装失败

/app/think-5.1.12 # ./composer.phar require naixiaoxin/think-wechat
Using version ^1.0 for naixiaoxin/think-wechat
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
- Conclusion: don't install naixiaoxin/think-wechat 1.0.1
- Conclusion: remove overtrue/socialite 1.3.0
- Installation request for naixiaoxin/think-wechat ^1.0 -> satisfiable by naixiaoxin/think-wechat[1.0.0, 1.0.1].
- Conclusion: don't install overtrue/socialite 1.3.0
- naixiaoxin/think-wechat 1.0.0 requires overtrue/wechat ~4.0 -> satisfiable by overtrue/wechat[4.0.0, 4.0.1, 4.0.10, 4.0.11, 4.0.12, 4.0.13, 4.0.14, 4.0.15, 4.0.16, 4.0.17, 4.0.18, 4.0.19, 4.0.2, 4.0.20, 4.0.21, 4.0.22, 4.0.23, 4.0.24, 4.0.25, 4.0.26, 4.0.27, 4.0.28, 4.0.29, 4.0.3, 4.0.30, 4.0.4, 4.0.5, 4.0.6, 4.0.7, 4.0.8, 4.0.9].
- overtrue/wechat 4.0.0 requires overtrue/socialite ^2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.1 requires overtrue/socialite ^2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.10 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.11 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.12 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.13 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.14 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.15 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.16 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.17 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.18 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.19 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.2 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.20 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.21 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.22 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.23 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.24 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.25 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.26 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.27 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.28 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.29 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.3 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.30 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.4 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.5 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.6 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.7 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.8 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- overtrue/wechat 4.0.9 requires overtrue/socialite ~2.0 -> satisfiable by overtrue/socialite[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- Can only install one of: overtrue/socialite[2.0.0, 1.3.0].
- Can only install one of: overtrue/socialite[2.0.1, 1.3.0].
- Can only install one of: overtrue/socialite[2.0.2, 1.3.0].
- Can only install one of: overtrue/socialite[2.0.3, 1.3.0].
- Installation request for overtrue/socialite (locked at 1.3.0) -> satisfiable by overtrue/socialite[1.3.0].

Installation failed, reverting ./composer.json to its original content.

企业微信中间件授权问题

middleware('\Naixiaoxin\ThinkWechat\Middleware\OauthMiddleware::class:work:test')
在开发企业微信应用时调用中间件auth授权出错。是传参错了吗

easyswoole 安装中出现问题

PHP Fatal error: Uncaught Error: Class 'think\facade\Hook' not found in /data/wwwroot/default/vendor/naixiaoxin/think-wechat/src/helper.php:8
Stack trace:
#0 /data/wwwroot/default/vendor/composer/autoload_real.php(66): require()
#1 /data/wwwroot/default/vendor/composer/autoload_real.php(56): composerRequireea24a8d88377c9cd0962665edfe67ce8('0e1a642d4bee6d1...', '/data/wwwroot/d...')
#2 /data/wwwroot/default/vendor/autoload.php(7): ComposerAutoloaderInitea24a8d88377c9cd0962665edfe67ce8::getLoader()
#3 /data/wwwroot/default/vendor/easyswoole/easyswoole/bin/easyswoole(12): require('/data/wwwroot/d...')
#4 {main}
thrown in /data/wwwroot/default/vendor/naixiaoxin/think-wechat/src/helper.php on line 8

在队列(think-queue)中调用出错

`namespace app\home\queue;
use think\queue\Job;

use Naixiaoxin\ThinkWechat\Facade;
use app\home\model\Wechat;

class ReleaseCode{

public function fire(Job $job, $data){
  $data = json_decode($data, true);
  $openPlatform = Facade::openPlatform();
    $miniProgram = $openPlatform->miniProgram($data['program']['authorizer_appid'], $data['program']['refresh_token']);
    $code = $miniProgram->code;
    $category = $code->getCategory();
    $page = $code->getPage();
    
    $config = json_decode($data['program']['config'], true);
    //获取已授权小程序设置的类目 get_category
    if((int)$category['errcode'] === 0){
        $config['category'] = $category['category_list'];
    }
    //获取小程序的第三方提交代码的页面配置 get_page
    if((int)$page['errcode'] === 0){
        $config['page'] =   $page['page_list'];
    }
    if(!Wechat::update(['id'=>$data['program']['id'],'config'=>json_encode($config)])){
        //TODO  收集错误
        $job->release(2);
    }
    $job->delete();
    if ($job->attempts() > 3) {
        //通过这个方法可以检查这个任务已经重试了几次了
        $job->delete();
    } 
}

}命令端运行报[think\exception\ClassNotFoundException]
class not exists: wechat.open_platform `

这个是怎么回事?

文档错误

文档中: 上面的路由定义了 /user 是需要微信授权的,那么在这条路由的回调 或 控制器对应的方法里, 你就可以从 session('wechat.oauth_user.default') 拿到已经授权的用户信息了。

session('wechat.oauth_user.default') 应该是 session('wechat_oauth_user_default')
一直试都不成功 看了session的本地缓存才改正确

AppID 不合法

使用jssdk 控制台报错AppID 不合法,确定合法其他调用都正常
image
image

从overtrue/wechat滚过来提issue啦

如题 原issue w7corp/easywechat#1260
BUG一个 配置文件 wechat.php 里的defaults 应该 改成 default

接口返回数据问题:

        //三种 返回方式
        //wechat文档写法
        //输出 HTTP/1.0 200 OK Cache-Control: no-cache, private Date: Sun, 17 Jun 2018 12:06:08 GMT success
        return $server->serve();

        //安装了 https://github.com/qiqizjl/think-wechat
        //根据说明 尝试的方法
        //输出了 success 后 又尝试输出一个 boolean 被tp类型检测报错
        $server->serve()->send();

        //由上述方法想到的临时解决方法 立即结束脚本
        //可以只输出 success
        $server->serve()->send();die;

send后die只是临时解决方法

easywechat在tp5.1框架下使用symfony无效问题:
这个能找到原因最好拉 不过找不到原因使用tp缓存也是OK的 😄

component_verify_ticket问题

$openPlatform = Facade::openPlatform(); $openPlatform->getPreAuthorizationUrl('https://easywechat.com/callback');
的时候报component_verify_ticket错误“Credential "component_verify_ticket" does not exist in cache.”

master分支think-wechat/src/Behavior/AppInit.php中$apps数组key值重复

think-wechat/src/Behavior/AppInit.php中,以下加粗地方key值重复了。
protected $apps
= [
'official_account' => OfficialAccount::class,
'work' => Work::class,
'mini_program' => MiniProgram::class,
'payment' => Payment::class,
'open_platform' => OpenPlatform::class,
'open_platform'** => OpenWork::class,
'micro_merchant' => MicroMerchant::class,
];

ThinkPHP V5.1.15下使用出错

[0] ThrowableError in wechat.php line 31
Fatal error: Call to undefined function storage_path();

/*
* 日志配置
*
* level: 日志级别,可选为:
* debug/info/notice/warning/error/critical/alert/emergency
* file:日志文件位置(绝对路径!!!),要求可写权限
*/
'log' => [
'level' => env('WECHAT_LOG_LEVEL', 'debug'),
'file' => env('WECHAT_LOG_FILE', storage_path('logs/wechat.log')),
],

中间件bug

5.1环境
OauthMiddleware第40行应该是
$scopes = config(\sprintf('wechat.official_account.%s.oauth.scopes.', $account), ['snsapi_base']);
scopes后面有.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.