微信公众号基本配置
程序员文章站
2022-05-04 13:53:03
今天配置了一下下午的token,但是不知道怎么回事就是配置不成功,在网上找了多的方法也没有解决了这个问题,但是最终做在一个论坛上找到了解决的方法。真是激动的不要不要的,话不多说直接怼代码。 这个是微信公众平台上的配置。 这边的url值要直接点到文件上,不然不会成功. 然后后台的设置 若是这种方法也不 ......
今天配置了一下下午的token,但是不知道怎么回事就是配置不成功,在网上找了多的方法也没有解决了这个问题,但是最终做在一个论坛上找到了解决的方法。真是激动的不要不要的,话不多说直接怼代码。
这个是微信公众平台上的配置。
这边的url值要直接点到文件上,不然不会成功.
然后后台的设置
1 <?php 2 namespace app\weixin\controller; 3 4 use think\Controller; 5 6 define("TOKEN", "******");//这里要输入你的token值 7 8 // $wechatObj = new wechatCallbackapiTest(); 9 10 // $wechatObj->valid(); 11 12 class Wx2 extends Controller { 13 14 public function index() 15 { 16 $echoStr = $_GET["echostr"]; 17 18 //valid signature , option 19 if($this->checkSignature()){ 20 ob_clean(); //丢弃缓存中的内容 21 echo $echoStr; 22 exit; 23 } 24 } 25 26 public function responseMsg() 27 { 28 //get post data, May be due to the different environments 29 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 30 31 //extract post data 32 if (!empty($postStr)){ 33 34 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 35 $fromUsername = $postObj->FromUserName; 36 $toUsername = $postObj->ToUserName; 37 $keyword = trim($postObj->Content); 38 $time = time(); 39 $textTpl = "<xml> 40 <ToUserName><![CDATA[%s]]></ToUserName> 41 <FromUserName><![CDATA[%s]]></FromUserName> 42 <CreateTime>%s</CreateTime> 43 <MsgType><![CDATA[%s]]></MsgType> 44 <Content><![CDATA[%s]]></Content> 45 <FuncFlag>0</FuncFlag> 46 </xml>"; 47 if(!empty( $keyword )) 48 { 49 $msgType = "text"; 50 $contentStr = "Welcome to wechat world!"; 51 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); 52 echo $resultStr; 53 }else{ 54 echo "Input something..."; 55 } 56 57 }else { 58 echo ""; 59 exit; 60 } 61 } 62 63 private function checkSignature() 64 { 65 $signature = $_GET["signature"]; 66 $timestamp = $_GET["timestamp"]; 67 $nonce = $_GET["nonce"]; 68 69 $token = TOKEN; 70 $tmpArr = array($token, $timestamp, $nonce); 71 sort($tmpArr,SORT_STRING); 72 $tmpStr = implode( $tmpArr ); 73 $tmpStr = sha1( $tmpStr ); 74 75 if( $tmpStr == $signature ){ 76 return true; 77 }else{ 78 return false; 79 } 80 } 81 82 83 }
若是这种方法也不行的,只有修改编码方式来执行了,修改编码方式在网上有好多,自己随便一搜索就出来,
今天就分享到这里,然后觉得我写的不错的请推荐,谢谢
上一篇: 快开学了吧