PHP开发微信被动回复消息遇到的大坑

最近开始做CMS后台与微信公众号的整合,在做被动回复消息时,按照官方文档的XML格式回复消息,总是提示“该公众号提供的服务出现故障,请稍后再试”。但是通过微信提供的接口调试工具看我的接口貌似也没什么问题,给出的提示也是请求成功。

最后认真学习了其它网友的方案,才发现官方文档上提供的XML格式有问题,稍微修改后就可以正常的收到自定义的被动消息回复了,如果有和我类似情况的朋友,一定要注意下面XML格式啊。

我的后台是PHP,核心代码很简单。

    $HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");
    $post_obj = simplexml_load_string($HTTP_RAW_POST_DATA, 'SimpleXMLElement', LIBXML_NOCDATA);

    $msg_type = $post_obj->MsgType;

    switch ($msg_type) {
        case 'text':
            $keyword = trim($post_obj->Content);
            $msg_tpl = '<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>';
            $result =  sprintf($msg_tpl,$post_obj->FromUserName, $post_obj->ToUserName, time(), '欢迎访问大江小浪!');
            echo $result;
            return;
            break;
        
        default:
            # code...
            break;
    }

下面是能够正常回复的效果。

本文为作者原创,如果您觉得本文对您有帮助,请随意打赏,您的支持将鼓励我继续创作。

参考资料:
1、微信公众平台 被动回复消息
2、php版微信开发之接收消息,自动判断及回复相应消息的方法
3、微信开发被动回复消息:该公众号暂时无法提供服务,请稍后再试
4、微信被动回复用户消息

原文地址:https://www.cnblogs.com/cocowool/p/8684674.html