填写服务器配置
打开https://mp.weixin.qq.com,登录到相应的公众号。在 开发-》基本配置里填写相关信息
URL:是与微信进行接入认证的地址,由于我的默认页面是
Token:由开发者自定义填写,用作生成签名
EncodingAESKey:随机生成即可
消息加密方式:明文模式
服务端程序验证
可参考微信开发接入指南
1)获取微信通过GET传过来的参数
2)对token、timestamp、nonce三个参数进行字典排序
3)将上一步中的三个字符串参数进行拼接,并sha1加密
4)得到第三步加密后的字符串与微信传来的signature对比
官方demo如下:
<?php /** * wechat php test */ //define your token define("TOKEN", "faxiangame"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } // public function responseMsg() // { // //get post data, May be due to the different environments // $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; // //extract 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; // } // } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>
要注意的是:程序中定义的token要与微信基本配置里填写的token值一致
接着到公众号中提交配置,如果显示提交成功,则微信接入成功,如下图
接入失败的情况
1)访问URL响应时间过长
2)token不一致
3)URL端口错误
4)代码有误
快速验证方法
如果程序中signature比对成功,则需要原样返回微信传过来的echostr。所以可以在对应的PHP文件,如我的是wx.php,直接写一行代码就可以快速验证
时间: 2024-10-27 11:52:31