用laravel搭一个微信公众号后台

news/2025/2/23 21:58:54

我使用的是laravel5.2, 早期版本可能不适合下面的方法。

  1. 在routes.php写下接收微信服务器post请求的路径:
    php" style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:12px;border:none;">
    Route::post('wechatmp', 'WechatController@responseMsg');
    
  2. 在App\Http\Middleware\VerifyCsrfToken里,将该请求路径去除CSRF TOKEN的保护,官网说明:

    class VerifyCsrfToken extends BaseVerifier
    {
     protected $except = [
        'wechatmp', 
     ];
    }
    

    在这里补充一下,csrf Token是一种laravel自身提供的请求保卫机制。必须符合csrf token的验证,对方发来的post请求才会被接受,常用在laravel的ajax请求。当然如果我们真的要开放某个接口,就使用上面的方式,把这个接口对应的csrf token关掉。

  3. 按照你熟悉的方式,在WechatController里写responseMsg:

    1. php" style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:12px;border:none;">php" style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:12px;border:none;">
      public function responseMsg(Request $request){
       
           $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
            if (!empty($postStr)){
               $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
               $RX_TYPE = trim($postObj->MsgType);
            //   $this->test($RX_TYPE) ;
               switch ($RX_TYPE)
               {
                   case "text":
                       $resultStr = $this->receiveText($postObj);
                       break;
           case "image":
               $resultStr = $this->receiveImage($postObj); 
             break ;
           case "voice":
                 $resultStr = $this->receiveVoice($postObj) ;
             break ;
                   case "event":
                       $resultStr = $this->receiveEvent($postObj);
                       break;
                   default:
                       $resultStr = "unknow msg type: ".$RX_TYPE;
                       break;
               }
               echo $resultStr;
           }else {
               echo "";
               exit;
           }
       }
      
      php" style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:12px;border:none;">php" style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:12px;border:none;"> php" style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:12px;border:none;">

    后面的微信公众平台开发者文档都有。

  4. https://blog.csdn.net/tianlebest/article/details/60667259

http://www.niftyadmin.cn/n/989479.html

相关文章

JSON数据从MongoDB迁移到MaxCompute最佳实践

摘要: 本文为您介绍如何利用DataWorks数据集成直接从MongoDB提取JSON字段到MaxCompute。 数据及账号准备首先您需要将数据上传至您的MongoDB数据库。本例中使用阿里云的云数据库 MongoDB 版,网络类型为VPC(需申请公网地址,否则无法…

天才们为什么独身一世?

蜀道之难,难于上青天。如果有人问:有什么比蜀道还难?老孙会说:思维。从一种思维到另一种思维之间的“蜀道”,更加艰难!男人和女人之间,就有那么一条蜀道。畅销书《男人来自火星,女人…

深入理解MYSQL undo redo

undo log保证事务的原子性(回滚) A、BeginB、记录A1到undo log中C、修改记录A3D、记录B1到undo log中E、修改记录B2F、写入undo log到磁盘中G、写入数据到磁盘中H、Commit 复制代码A-E步骤都是在内存中完成 A-F之间如果出现问题,由于undo log…

[编程题]圈地运动

[编程题]圈地运动 圈地运动,就是用很多木棍摆在地上组成一个面积大于0的多边形~ 小明喜欢圈地运动,于是他需要去小红店里面买一些木棍,期望圈出一块地来。小红想挑战一下小明,所以给小明设置了一些障碍。障碍分别是&a…

从现在开始要学习Python了

Python是个好东东,即没有C和C烦人的指针问题,功能似乎也比PHP要强不少,再重要的是它是纯粹的面向对象语言,语句清晰,容易理解,这对于学习来说有着很大的优势,学习语言的初期都是看别人代码的&am…

动态规划之 筷子

描述 A 先生有很多双筷子。确切的说应该是很多根,因为筷子的长度不一,很难判断出哪两根是一双的。这天,A 先生家里来了K 个客人,A 先生留下他们吃晚饭。加上A 先生,A夫人和他们的孩子小A,共K3个人。每人需要…

动态规划优化

状态优化 bzoj2064 分裂 存在通解&#xff1a;把原始集合都合并&#xff0c;再一一拆开。 如果可以划分一些集合&#xff0c;使得原始集合和目标集合对应的小集合相等&#xff0c;那么可以节省操作次数。 ans(n1-1)(n2-1)-2*(x-1) x为划分的相同集合数。 n<10,状压 另外&…

[讽刺笑话] 移动公司老板与公厕老大爷的经典对白

超强的移动公司老板与公厕老大爷的经典对白今天早上&#xff0c;移动公司某经理在外突然感觉内急&#xff0c;只好找公共厕所。“干什么的&#xff1f;”大爷喊。“我是移动老总&#xff0c;我内急。”经理。“你不知道现在什么都要收费啊&#xff1f;”大爷。“行&#xff0c;…