V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wploey
V2EX  ›  PHP

各位大佬帮我测下微信 token 验证

  •  
  •   wploey · 2020-09-14 19:36:57 +08:00 via Android · 2401 次点击
    这是一个创建于 1318 天前的主题,其中的信息可能已经有所发展或是发生改变。

    服务器环境用的 laradock, https 证书是 certbot 生成的

    项目代码是 laravel 7+ easywechat 5

    token 接口地址 https://lide.huilaicar.com/wechat/serve

    token:60166ea337d0d3d8f9b6be41ab44eb72

    aes:wo5WGfuIBbeloj7BiygwBAyv9b0gucf5ieoPT5bru7k

    本地 ngrok 可以通过验证,线上提交这个接口时,返回{ret: 200302, err_msg: "verify token fail"}

    nginx 日志没有任何请求😂

    网上找不到答案了…

    第 1 条附言  ·  2020-09-14 20:36:47 +08:00

    Laravel Framework 7.28.1 "overtrue/laravel-wechat": "~5.0"

    app/Http/Controllers/WechatController.php

    <?php
    
    namespace App\Http\Controllers;
    
    class WechatController extends Controller
    {
    
        public function serve()
        {
            $app = app('wechat.official_account');
    
            $app->server->push(function ($message) {
                if ($message['Event'] === 'subscribe') {
                    return 'xxx';
                } else {
                    return '222';
                }
            }, \EasyWeChat\Kernel\Messages\Message::EVENT);
    
            return $app->server->serve();
        }
    }
    

    routes/web.php

    Route::any('/wechat/serve', 'WechatController@serve');
    

    app/Http/Middleware/VerifyCsrfToken.php

    protected $except = [
           '/wechat/serve'
        ];
    

    nginx

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        
        server_name lide.huilaicar.com;
        root /var/www/wx/public;
        index index.php index.html index.htm;
    
        ssl_certificate /var/certs/cert1.pem;
        ssl_certificate_key /var/certs/privkey1.pem;
    
        location / {
             try_files $uri $uri/ /index.php$is_args$args;
        }
    
        location ~ \.php$ {
            try_files $uri /index.php =404;
            fastcgi_pass php-upstream;
            fastcgi_index index.php;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_read_timeout 600;
            include fastcgi_params;
        }
    
        location ~ /\.ht {
            deny all;
        }
    
        location /.well-known/acme-challenge/ {
            root /var/www/letsencrypt/;
            log_not_found off;
        }
    
        error_log /var/www/wx/storage/logs/laravel_error.log;
        access_log /var/www/wx/storage/logs/laravel_access.log;
    }
    
    第 2 条附言  ·  2020-09-14 22:59:19 +08:00
    真奇怪, 这服务器是腾讯的, 我在阿里服务器上用了同样的代码, 也是用的 Let's Encrypt 证书,阿里的可以通过, 怎么这个就一点反应都没= =.
    第 3 条附言  ·  2020-09-15 16:26:13 +08:00

    接口地址改

    To                         Action      From
    --                         ------      ----
    443                        ALLOW       Anywhere
    80                         ALLOW       Anywhere
    
    2 条回复    2020-09-15 00:35:24 +08:00
    vacker
        1
    vacker  
       2020-09-14 19:58:49 +08:00 via Android
    又不能在公众号后台点提交怎么帮你测

    最好贴代码

    还有看看中间件排除路由没有
    vacker
        2
    vacker  
       2020-09-15 00:35:24 +08:00 via Android
    Nginx 日志都没有,看服务器防火墙开端口没有
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   953 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:26 · PVG 05:26 · LAX 14:26 · JFK 17:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.