我使用的是laravel5.2, 早期版本可能不适合下面的方法。
- 在routes.php写下接收微信服务器post请求的路径:
Route::post('wechatmp', 'WechatController@responseMsg');
-
在App\Http\Middleware\VerifyCsrfToken里,将该请求路径去除CSRF TOKEN的保护,官网说明:
class VerifyCsrfToken extends BaseVerifier { protected $except = [ 'wechatmp', ]; }
在这里补充一下,csrf Token是一种laravel自身提供的请求保卫机制。必须符合csrf token的验证,对方发来的post请求才会被接受,常用在laravel的ajax请求。当然如果我们真的要开放某个接口,就使用上面的方式,把这个接口对应的csrf token关掉。
-
按照你熟悉的方式,在WechatController里写responseMsg:
-
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; } }
后面的微信公众平台开发者文档都有。
-
- https://blog.csdn.net/tianlebest/article/details/60667259
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/113057.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...