1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 微信公众号 服务器配置 token 测试 微信公众号开发:基本配置Token验证简单事件回复...

微信公众号 服务器配置 token 测试 微信公众号开发:基本配置Token验证简单事件回复...

时间:2022-05-25 15:45:35

相关推荐

微信公众号 服务器配置 token 测试 微信公众号开发:基本配置Token验证简单事件回复...

公众号配置的URL就是你自己服务器上验证TOKEN的方法的地址

比如我验证TOKEN的方法访问地址是/wx_api.php

那我公众号配置的URL就要填/wx_api.php(配置完之后记得点启用哦)

/**

* wechat php test

*/

header('Content-type:text');

//定义TOKEN 与公众号的配置要相同

define("TOKEN", "weixin");

$wechatObj = new wechatCallbackapiTest();

if (isset($_GET['echostr'])) {//验证TOKEN

$wechatObj->valid();

}else{//公众号被动回复

$wechatObj->responseMsg();

}

class wechatCallbackapiTest

{

public function valid()

{

$echoStr = $_GET["echostr"];

if($this->checkSignature()){

echo $echoStr;

exit;

}

}

public function responseMsg()

{

if (!empty($postStr)){

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

$open_id = $postObj->FromUserName;

var_dump($open_id);

$RX_TYPE = trim($postObj->MsgType);

switch($RX_TYPE)//触发事件类型

{

case "text"://用户发送文本事件

$resultStr = $this->handleText($postObj);

break;

case "event"://用户关注/取关等事件

$resultStr = $this->handleEvent($postObj);

break;

default://其他

$resultStr = "Unknow msg type: ".$RX_TYPE;

break;

}

echo $resultStr;

}else {

echo $postStr;

exit;

}

}

public function handleText($postObj)

{

$fromUsername = $postObj->FromUserName;

$toUsername = $postObj->ToUserName;

$keyword = trim($postObj->Content);

$time = time();

$textTpl = "

%s

0

";

if(!empty( $keyword ))

{

$msgType = "text";

if($keyword=="你好"){

$contentStr = "你好呀";

}elseif($keyword=="你是猪"){

$contentStr = "你才是猪";

}else{

$contentStr = "感谢您关注【XXX】";

}

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

echo $resultStr;

}else{

echo "Input something...";

}

}

public function handleEvent($object)

{

//$arrObj = self::std_class_object_to_array($object);//将对象转化为数组(可不要,就是方便有数据库操作需要数组的操作)

//var_dump($arrObj);

$contentStr = "";

switch ($object->Event)

{

case "subscribe":

$contentStr = "感谢您关注【XXX】";

break;

default :

$contentStr = "Unknow Event: ".$object->Event;

break;

}

$resultStr = $this->responseText($object, $contentStr);

return $resultStr;

}

public function responseText($object, $content, $flag=0)

{

$textTpl = "

%s

%d

";

$resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);

return $resultStr;

}

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;

}

}

static function std_class_object_to_array($stdclassobject)

{

$_array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject;

$array = array();

foreach ($_array as $key => $value) {

$value = (is_array($value) || is_object($value)) ? self::std_class_object_to_array($value) : $value;

$array[$key] = $value;

}

return $array;

}

}

?>

如果你验证token的方法地址和公众号回复的方法地址不一样

公众号配置时URL先填验证token的方法地址,验证成功之后把公众号回复的方法代码写到验证token的方法里去,把原验证token方法的代码注释掉

emmmm....对就这样hi hi

然后推荐一个微信公众号开发的免费在线调试工具:

只需要填URL就好了 Token的话最好填weixin

消息类型就根据自己测试需求选,完了之后点击发送消息/验证token就好了,接收消息栏会返回你调试打印的东西和回复的东西

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。