w7corp / easywechat

📦 一个 PHP 微信 SDK

Home Page:https://easywechat.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

微信开放平台 第三方平台提示No component_verify_ticket found.

490626721 opened this issue · comments

我用的环境

  • PHP 版本:8.2
  • overtrue/wechat 版本:^6.7
  • 是否使用了框架?框架名称:ThinkPHP6.0

问题及现象

已经测试了,事件接收能接收到component_verify_ticket消息体,具体代码如下

public function authorization_event () {
        Log::info('authorization_event:'.json_encode(Request::param()));
        if (isset($params["auth_code"])) {
            try {
                $app = $this->OpenPlatformInit();
                $params = Request::param();
                $agent = **********************;
                if ($agent->isEmpty()){
                    return backData("", "不存在此代理用户", 60000);
                }
                $authorization = $app->getAuthorization($params["auth_code"]);
                // authorizer_appid
                $agent->authorizer_appid = $authorization->getAppId();
                //AuthorizerAccessToken
                $agent->access_token = $authorization->getAccessToken();
                // 注意:authorizer_access_token 有效期只有2小时
                $agent->refresh_token = $authorization->getRefreshToken();
                // 授权应用类型 1公众号 2小程序
                $agent->platform_type = $params["platform_type"];
                // auth_time authorizer_access_token获取的时间
                $agent->authorizer_time = date("Y-m-d H:i:s");
                $agent->save();
                Log::info('授权信息:'.json_encode($params));
            } catch (InvalidArgumentException|\ReflectionException $e) {
                return backData("", $e->getMessage(), 60000);
            } catch (\Throwable $e) {
                return backData("", $e->getMessage(), 60000);
            }
        } 
        $app = $this->OpenPlatformInit();
        $server = $app->getServer();
        // 解密后的消息
        $message = $server->getDecryptedMessage();
        Log::info('authorization-event-DecryptedMessage: '.json_encode($message));
}

log中解密后的消息体为:
authorization-event-DecryptedMessage: {"AppId":"*****************","Encrypt":"***********************","CreateTime":"1690941906","InfoType":"component_verify_ticket","ComponentVerifyTicket":"ticket@@@mZkhNqpXP4PQ03ugB_sprouUv-Pflfk5s5OzDaPeknFiSt4-R0e4OPxebqNLr4nRPMZZsbeIaaM2YjEKPGJ31Q"}

也已经测试了easywechat SDK中你们自带的缓存

$cache = new Psr16Cache(new FilesystemAdapter(namespace: 'easywechat', defaultLifetime: 1500));
$cache->set("1121", "测试cache内容", 6000);

$cacheContent = $cache->get("1121");

可以正确获取到内容

但是就是一直提示 No component_verify_ticket found.
错误文件 vendor/w7corp/easywechat/src/OpenPlatform/VerifyTicket.php 第59行

commented

我是出现了这个情况,请问有解决吗

同样遇到了这个问题,你是怎么解决的