驗證成功,但關注后無法收到回復消息!
要崩潰了,折騰了一天,還是不能關注回復成功,但是驗證是成功的。xml 模板中也將所有的空格刪除了!以下是完整代碼,哪位大神看一下哪里出問題了,謝謝!
????public?function?api() ????{ ????????//?獲得驗證參數 ????????$nonce??????=?$_GET[?'nonce'?]; ????????$timestamp??=?$_GET[?'timestamp'?]; ????????$token??????=?'wechat'; ????????$echostr????=?$_GET[?'echostr'?]; ????????$signature??=?$_GET[?'signature'?]; ???????? ????????//?形成數組并按字典排序 ????????$array??????=?array(); ????????$array??????=?array(?$nonce,?$timestamp,?$token?); ????????sort(?$array?); ????????//?拼接字符串并?sha1?加密,然后校驗 ????????$str?=?sha1(?implode(?$array?)?); ????????if?(?$str?==?$signature??&&?$echostr?)?{ ????????????echo?$echostr; ????????????exit; ????????}?else?{ ????????????$this->responseMsg(); ????????} ????} ????//?接受事件推送并回復 ????public?function?responseMsg() ????{ ????????//?獲取微信推送?post?數據(xml?格式) ????????$postArr?=?$GLOBALS["HTTP_RAW_POST_DATA"]; ????????libxml_disable_entity_loader(true); ????????//?處理消息,并設置回復類型及內容 ????????$postObj?=?simplexml_load_string($postArr,?'SimpleXMLElement',?LIBXML_NOCDATA); ????????//?$postObj->ToUserName?=?''; ????????//?$postObj->FromUserName?=?''; ????????//?$postObj->CreateTime?=?''; ????????//?$postObj->MsgType?=?''; ????????//?$postObj->Event?=?''; ????????//?判斷事件推送:訂閱 ????????if?(?strtolower(?$postObj->MsgType??==?'event'?)?)?{ ????????????if?(?strtolower?(?$postObj->Event?==?'subscribe'?)?)?{ ????????????????//?設置回復消息 ????????????????$toUser?????=?$postObj->FromUserName; ????????????????$fromUser???=?$postObj->ToUserName; ????????????????$sendTime?????=?time(); ????????????????$msgType????????=?'text'; ????????????????$content????????=?'hahahahahahah'; ????????????????$template???????=?'<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>'; ????????????????$msg?=?sprintf(?$template,?$toUser,?$fromUser,?$sendTime,?$msgType,?$content?); ????????????????echo?$msg; ????????????} ????????} ????}
2018-06-15
另外,我用的 Laravel 框架!
2018-06-15
解決了,找到原因了,只做一次驗證就行,沒必要做兩次驗證!
2018-06-14
改為:
也沒回復!