微信开发遇到问题
route.php
filter当中的weixin.check如下
CheckController.php当中的index方法如下
我已经做好了服务器的配置了,在微信提供的调试页面也返回会了对应的xml信息。也就是说我接受了微信post过来的xml并且把回复的xml写好传过去微信那边
可是悲催的是:我用我的微信向公众号发送信息的时候。公众号还是说“该公众号暂时无法提供服务,请稍后再试”。
不知道我犯了什么低级错误。请各位大人高台贵手帮帮我。
Route::group(array('prefix' => 'u', 'before' => 'weixin.check'), function(){
Route::any('/', 'App\Controllers\Customer\CheckController@index');
Route::resource('/checkSignature', 'App\Controllers\Customer\CheckController');
Route::any('text', 'App\Controllers\Customer\CheckController@textMessage');
});
filter当中的weixin.check如下
Route::filter('weixin.check', function(){
if(Input::get('echostr')){
//微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
$signature = Input::get('signature');
//时间戳
$timestamp = Input::get('timestamp');
//随机数
$nonce = Input::get('nonce');
$token = 'FoodOrder';
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if($tmpStr != $signature){
return false;
}
return Input::get('echostr');
}
});
CheckController.php当中的index方法如下
public function index()
{
$postStr = file_get_contents("php://input");
// $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
// $postStr = Input::get('HTTP_RAW_POST_DATA');
if(!empty($postStr)){
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
if(!empty($keyword)){
$MsgType = "text";
$contentStr = "Welcome to Food Order";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $MsgType, $contentStr);
return $resultStr;
}else{
return 'cao ni ma';
}
}else {
return 'ni ma bi';
}
// return $this->textMessage();
}
我已经做好了服务器的配置了,在微信提供的调试页面也返回会了对应的xml信息。也就是说我接受了微信post过来的xml并且把回复的xml写好传过去微信那边
可是悲催的是:我用我的微信向公众号发送信息的时候。公众号还是说“该公众号暂时无法提供服务,请稍后再试”。
不知道我犯了什么低级错误。请各位大人高台贵手帮帮我。
3 个回复
JohnLui
赞同来自: kaxiu
qufo
赞同来自:
导致公众号无法提供服务的原因很多。你自己调试一下估计就知道了。
用 postman 或者其他类似的软件,往你配置的 url 发一个你自己虚构的 xml 包,当然,包要符合微信的规范,然后看一下你的服务器返回来的 xml 是不是有问题就知道了。
如果单纯向某用户发消息得到这个错误。让这位用户跟公众号号互动一下,比如给公从号发个消息,然后公众号就可以在24小时内给这位用户主动发消息了。
我说过,原因很多,或许我上面一个都没猜对。
motecshine - 菜鸟
赞同来自: