一个放在自己搭建的阿里云轻量应用服务器,一个放在新浪云的SAE上,两个都同过了token验证,同样的代码,在阿里云上的却没办法自动回复,就是发信息到公众号,既没有回复,也没有报错,阿里云服务器上环境php7.0 +apache2, SAE上的php5.6
下面是具体代码:
public function responseMsg ()
{
$postStr = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");
if(!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = strtolower($postObj->MsgType);
switch($RX_TYPE){
case"event":
$resultStr = $this->receiveEvent($postObj);
break;
case"text":
$this->moulds($postObj);
$resultStr = $this->receiveText($postObj);
break;
default:
$resultStr = "";
break;
}
echo $resultStr;
}else{
echo "";
exit;
}
}
public function receiveEvent($object)
{
$checkEvent = strtolower($object->Event);
switch($checkEvent){
case"subscribe":
$contentStr = "欢迎关注我的公众号
点击下方菜单可以充值E卡通,进入内网!
后台回复'绑定+学号+密码'进行绑定!
这样才能使用查询成绩,课表,考试时间等功能!";
break;
default:
break;
}
$resultStr = $this->transmitText($object, $contentStr);
return $resultStr;
}
public function receiveText($object)
{
$keyword = trim($object->Content);
$fromUsername = $object->FromUserName;
if(!empty($keyword)){
switch($keyword){
case"你好":
$contentStr = "你好呀!";
break;
case"我想你了":
$contentStr = "我也想你";
break;
default:
$contentStr = "你在说什么?";
break;
}
}
$resultStr = $this->transmitText( $object, $contentStr);
return $resultStr;
}
public function transmitText($object, $content)
{
$textTp="<xml><ToUserName><[CDATA[%s]]></ToUserName><FromUserName><[CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><[CDATA[text]]></MsgType><Content><[CDATA[%s]]></Content></xml>";
$resultStr = sprintf($textTp, $object->FromUserName, $object->ToUserName, time(), $content);
return $resultStr;
}
同样的代码,在两个环境中就不同,为什么,我要怎么部署阿里云呢?
这个东西,你多看下配置。应该和服务器没有关系的。
没人吗?
– 赖大大 3年前