网站首页 > 知识剖析 正文
在使用php对接微信公众号自定义开发的时候,被一句话整得快崩溃了——“该公众号提供的服务出现故障,请稍后再试”。非常的烦恼,几经波折,最后终于如愿以偿地解决了,这里就把过程中你也可能遇到的问题整理了一下。
可能的原因有:
一、php版本导致的
在开发中,这也是一个大概率导致上述问题的存在,现在php的版本有很多,但是对于微信开发程序来说,是有一定区别的,因为不同的版本,代码的书写也是不一样的。
一般我们在获取用户发来的信息的时候第一句都是:
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
但是这句代码在php7及以上版本都可能获取不到值,导致公众号的接口文件不能反馈信息,从而导致“该公众号提供的服务出现故障,请稍后再试”,你可以先把回复信息相关的代码都删除,单独留一个:
public function responseMsg(){ echo ''; }
然后在公众号里面随便发一个信息,如果服务器没有返回错误或者其他信息,那么就表示两种可能:
1、回复信息的代码错误;
2、接收用户信息的代码没有获取到值。
针对第二个你可以试试把:
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
改成
$postStr =file_get_contents('php://input');
二、微信公众号接入了第三方授权
这一个问题你可以先关闭第三方授权,然后试试。
三、php代码错误
这一条也是大概率导致“该公众号提供的服务出现故障,请稍后再试”的原因所在,但是代码的错误千变万化,不同的人犯的错误均不一样,所以这里就不错列举了,这里提供一个正确的代码,共大家自行比对:
public function responseMsg() {
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$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> <FuncFlag>0</FuncFlag> </xml>";
if(!empty( $keyword )) {
$msgType = "text";
$contentStr = "Welcome to wechat world!"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo ""; exit;
}
}
- 上一篇: 小程序支付流程
- 下一篇: OpenCart3 插件开发步骤
猜你喜欢
- 2024-12-03 微信上其实还有很多你不知道的事,Python微信平台开发编写实录
- 2024-12-03 开发技巧汇总|对于imag.js你不知道的事
- 2024-12-03 微信支付集成文档
- 2024-12-03 手把手教你 5 分钟将公司 CEO 数字克隆装进公众号...
- 2024-12-03 DTD语法详细教程:DTD语法详解
- 2024-12-03 解读微信公众平台多客服功能
- 2024-12-03 OpenCart3 插件开发步骤
- 2024-12-03 小程序支付流程
- 2024-12-03 微信现金红包支付介绍和使用操作流程
- 2024-12-03 MIME 类型大全,你值得收藏
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)