订阅mysql事件_php 微信开发订阅事件并回复2条消息

public function responseMsg()

{

$postStr = $GLOBALS["HTTP_RAW_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 = "

%s

0

";

//事件

if($postObj->MsgType == "event")

{

//订阅事件

if ($postObj->Event == "subscribe")

{

//回复被动消息

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

echo $resultStr;

//当然也可以回复两条消息

/*

在开发中我们经常也会看到回复两条的情况,那它是怎么实现的呢,被动消息只能回复一条,不能连续两条发送。其实也很简单一条被动消息 一条客服消息,代码在messageToUserName方法中 ,注意:客服消息比被动 消息回复的快。同时客服消息回复很慢,超过5s 便会重复三条。很多人对此很苦恼,在之后我便会贴上代码为大家解决这一问题。

$content = "产品介绍";

$this->messageToUserName($content,$fromUsername);

*/

/*

数据库代码

mysql_connect();

....

/*

}

}

//客服消息

private function messageToUserName($content,$fromUsername)//content 就是回复的消息,$fromUsername就是openid

{

//这里要获取token

$ACC_TOKEN = $this->message();

$data = {

"touser":".$fromUsername.",

"msgtype":"text",

"text":

{

"content":".$content."

}

};

$result = $this->https_post($url,$data);

$final = json_decode($result);

return $final;

}

//获取access_token

private function message()

{

$appid = "你的appid";

$appsecret = "你的appsecret";

$output = $this->https_post($url); //http 请求 curl方式

$jsoninfo = json_decode($output, true);

$access_token = $jsoninfo["access_token"];

return $access_token;

}

//http 请求

privatefunction https_post($url,$data)

{

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($curl);

if (curl_errno($curl)) {

return Errno.curl_error($curl);

}

curl_close($curl);

return $result;

}

public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_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 = " %s 0 "; //事件 if($postObj->MsgType == "event") { //订阅事件 if ($postObj->Event == "subscribe") { //回复被动消息 $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$content); echo $resultStr; //当然也可以回复两条消息 /* 在开发中我们经常也会看到回复两条的情况,那它是怎么实现的呢,被动消息只能回复一条,不能连续两条发送。其实也很简单一条被动消息 一条客服消息,代码在messageToUserName方法中 ,注意:客服消息比被动 消息回复的快。同时客服消息回复很慢,超过5s 便会重复三条。很多人对此很苦恼,在之后我便会贴上代码为大家解决这一问题。 $content = "产品介绍"; $this->messageToUserName($content,$fromUsername); */ /* 数据库代码 mysql_connect(); .... /* } } //客服消息 private function messageToUserName($content,$fromUsername)//content 就是回复的消息,$fromUsername就是openid { //这里要获取token $ACC_TOKEN = $this->message(); $data = { "touser":".$fromUsername.", "msgtype":"text", "text": { "content":".$content." } }; $result = $this->https_post($url,$data); $final = json_decode($result); return $final; } //获取access_token private function message() { $appid = "你的appid"; $appsecret = "你的appsecret"; $output = $this->https_post($url); //http 请求 curl方式 $jsoninfo = json_decode($output, true); $access_token = $jsoninfo["access_token"]; return $access_token; } //http 请求 privatefunction https_post($url,$data) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); if (curl_errno($curl)) { return Errno.curl_error($curl); } curl_close($curl); return $result; }
经验分享 程序员 微信小程序 职场和发展