开发工具 PHP 7.4,服务器华为云 + IIS10.0,有独立外网IP,想要在公众号上实现用自己的服务器回复用户发送的消息,现在碰到三种情况
在 php 接口处,能接受到来自微信服务器 post 到的内容,包括关注公众号、用户发送的文本消息,说明了接口接收post正常,并且能正常读取出 post 到的 xml 数据如下
<xml><ToUserName><![CDATA[gh_xxxxxxfd1]]></ToUserName>
<FromUserName><![CDATA[ojQexxxxxxxxxxxxxxxxxiYpo]]></FromUserName>
<CreateTime>1592463194</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[13]]></Content>
<MsgId>22798591295867026</MsgId>
</xml>
但根据官方文档给出的回复文本消息的要求,xml、"success"、"" 这三种回复都在测试公众号上被提示 "该公众号提供的服务出现故障,请稍候再试",以 xml 内容回复为例
function responseTextMessage($toUser, $fromUser, $content)
{
$xmlRespModel = '<xml>';
$xmlRespModel .= "<ToUserName><![CDATA[%s]]></ToUserName>";
$xmlRespModel .= "<FromUserName><![CDATA[%s]]></FromUserName>";
$xmlRespModel .= "<CreateTime>%s</CreateTime>";
$xmlRespModel .= "<MsgType><![CDATA[%s]]></MsgType>";
$xmlRespModel .= "<Content><![CDATA[%s]]></Content>";
$xmlRespModel .= "</xml>";
return sprintf(
$xmlRespModel,
$toUser,
$fromUser,
time(),
"text",
$content
);
}
// 省略其它代码
$resultStr = responseTextMessage($xml->FromUserName, $xml->ToUserName,$xml->Content);
echo $resultStr;
exit();
转到使用 微信公众平台接口调试工具,接口类型:消息接口调试,接口列表:文本消息,各项都填完后,报错
请求地址:
http://mptest.tlitt.com/event.php
成功或失败:
post data error,please check your server!
错误原因:
http requset error
请问是 服务器配置问题吗?如果是的话,为什么接口接收Post数据没有问题,还是php代码有问题?
可能是微信后台连接你的域名有问题。可以尝试用这个API来检测网络:
https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Network_Detection.html
可以看看你的接口返回的http状态是200,还是201,如果是201,修改为200就可以了