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

在通过微信公众平台验证之后,需要关注订阅公众号。如何获取订阅事件,并且在订阅之后回复消息,如果有需求要给用户一个数据库表中的信息,那我们可以保存用户openid(唯一),在这里说一下 这个openid 是每一个用户 对你公众号的一个唯一值,就算取消以后在关注也是这个值。订阅代码如下:

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 = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
//事件
if($postObj->MsgType == "event")
{
//订阅事件
if ($postObj->Event == "subscribe")
{

  //回复被动消息

$content = "欢迎关注xxx公众号";
$resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$content);
echo $resultStr;

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

/*

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

$content = "产品介绍";
$this->messageToUserName($content,$fromUsername);

*/

//要想在表中保存用户信息,直接保存用户的fromUsername(openid) 即可,在这之前我还保存过ip 发现ip都相同,后来想想规律 我们获取的ip是微信服务器端的ip。

/*

数据库代码

mysql_connect();

....

/*

}

}

//客服消息
private function messageToUserName($content,$fromUsername)//content 就是回复的消息,$fromUsername就是openid
{
//这里要获取token
$ACC_TOKEN = $this->message();
$data = ‘{
"touser":"‘.$fromUsername.‘",
"msgtype":"text",
"text":
{
"content":"‘.$content.‘"
}
}‘;

$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$ACC_TOKEN;

$result = $this->https_post($url,$data);
$final = json_decode($result);
return $final;
}

//获取access_token
private function message()
{
$appid = "你的appid";
$appsecret = "你的appsecret";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
$output = $this->https_post($url);  //http 请求  curl方式
$jsoninfo = json_decode($output, true);
$access_token = $jsoninfo["access_token"];
return $access_token;

}

//http 请求
private function 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;
}

时间: 2024-08-05 15:42:34

php 微信开发订阅事件并回复2条消息的相关文章

微信开发订阅号(ASP.NET MVC4+jquery mobile+AppHarbor发布)

首先应该去微信公众平台注册一个账号,因为我是用的个人,所以只能注册订阅号,然后需要提供身份证照片,这些大家慢慢折腾.然后在微信管理面板中选择高级功能,进入开发者模式. 在服务器配置中需要提供最重要的url,用来接收微信发过来的消息和回复消息,token这个随便填一个就行了,主要是用来验证消息来源. 如果你是java php开发者,那么你可以选google AppEngin 或者sina app engine 来部署你的应用,但是很不幸,我是.net,这里我们使用国外的AppHarbor,appH

夺命雷公狗---微信开发11----接收并回复链接消息

index.php 代码如下: <?php /** * wechat php test */ //define your token require_once "common.php"; define("TOKEN", "twgdh"); $wechatObj = new wechatCallbackapiTest(); //当接入成功后,请注销这句话,否则,会反复验证. //$wechatObj->valid(); //添加响应请求

夺命雷公狗---微信开发23----客服消息接口基础和推送文本

我们这边课程里面一共用到了三个文件,分别是WeChat.class.php和common.php以及index.php 我们在写这个功能之前也要学会查手册,手册我们可以在微信开发这里找到,如下所示: 点击进去后我们将会看到客服接口,我们可以点击下进去看看里面有什么动动 这里有一个发送文本消息的,我们点击进去看下 这里很明显就看到文本消息是通过一个json数据来进行实现的,废话不多说,开工 这里我们先来写一个WeChat.php的文件,这里作用主要适用于封装一个CURL上传类的,代码如下所示: <

夺命雷公狗---微信开发27----客服消息接口基础和推送图文消息

按照25课的套路在改下index.php即可实现,代码如下所示: <?php /** * wechat php test */ //define your token require_once "common.php"; //这里是引入curl发送函数的类 require_once 'WeChat.class.php'; define("TOKEN", "twgdh"); //这里让这个类继承了curl发送参数的类 class wechat

夺命雷公狗---微信开发39----微信语言识别接口1

语音识别接口的基本介绍 注意: 由于客户端缓存,开发者开启或者关闭语音识别功能,对新关注者立即生效,对已关注用户需要24小时生效,开发者可以从新关注帐号进行测试. 我们可以在测试号下方的体验接口权限表里面找到“接收语音识别结果”,如下图所示 现在这里是显示的关闭,就是开启,如果想使用,那么就必“关闭”. 点击一下开启后,他就会问你是否关闭,所以这里的意思是相反的,如图所示: 然后再点击一下确定即可关闭. 不过我们现在要对他进行开发所以这里就要显示关闭这两个字,然后点击“接收语音识别结果”即可进入

夺命雷公狗---微信开发26----客服消息接口基础和推送视频

我们按照上一课的套路继续改写下index.php即可实现,代码如下所示: <?php /** * wechat php test */ //define your token require_once "common.php"; //这里是引入curl发送函数的类 require_once 'WeChat.class.php'; define("TOKEN", "twgdh"); //这里让这个类继承了curl发送参数的类 class we

夺命雷公狗---微信开发25----客服消息接口基础和推送语音

按照23课的部署,我们再进行改造下WeChat.class.php文件,将get_token.php的代码封装到WeChat类中去,WeChat.class.php代码如下: <?php class WeChat{ //我把请求内容封装到类里面 protected function http_request($url, $data=null){ //我们使用curl函数 //初始化 $ch = curl_init(); //设置变量 curl_setopt($ch, CURLOPT_URL,$u

夺命雷公狗---微信开发40----微信语言识别接口2(点歌系统)

语音识别时候记住一定要加上中文的“!”号噢,否则一定不会成功 点歌系统开工,index.php代码如下所示: <?php /** * wechat php test */ //define your token require_once "common.php"; //这里是引入curl发送函数的类 require_once 'WeChat.class.php'; define("TOKEN", "twgdh"); //这里让这个类继承了c

夺命雷公狗---微信开发31----微信群发消息4

index.php代码如下: <?php /** * wechat php test */ //define your token require_once "common.php"; //这里是引入curl发送函数的类 require_once 'WeChat.class.php'; define("TOKEN", "twgdh"); //这里让这个类继承了curl发送参数的类 class wechatCallbackapiTest ex