搜索
首页后端开发php教程【php开发】实现微信公众号图文消息回复与access_token(代码示例)

本篇文章主要讲述的是PHP实现微信公众号图文消息回复与access_token,具有一定的参考价值,感兴趣的朋友可以了解一下。

 //代码如下
<?php
class IndexAction extends Action {
public function __construct(){

}
public function index(){
//获得参数 signature nonce token timestamp echostr
$nonce     = $_GET[&#39;nonce&#39;];
$token     = &#39;imooc&#39;;
$timestamp = $_GET[&#39;timestamp&#39;];
$echostr   = $_GET[&#39;echostr&#39;];
$signature = $_GET[&#39;signature&#39;];
//形成数组,然后按字典序排序
$array = array();
$array = array($nonce, $timestamp, $token);
sort($array);
//拼接成字符串,sha1加密 ,然后与signature进行校验
$str = sha1( implode( $array ) );
if( $str  == $signature && $echostr ){
//第一次接入weixin api接口的时候
echo  $echostr;
exit;
}else{
$this->reponseMsg();
}
}
// 接收事件推送并回复
public function reponseMsg(){
//1.获取到微信推送过来post数据(xml格式)
$postArr = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];
//2.处理消息类型,并设置回复类型和内容
/*<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
</xml>*/
$postObj = simplexml_load_string( $postArr );
//$postObj->ToUserName = &#39;&#39;;
//$postObj->FromUserName = &#39;&#39;;
//$postObj->CreateTime = &#39;&#39;;
//$postObj->MsgType = &#39;&#39;;
//$postObj->Event = &#39;&#39;;
// gh_e79a177814ed
//判断该数据包是否是订阅的事件推送
if( strtolower( $postObj->MsgType) == &#39;event&#39;){
//如果是关注 subscribe 事件
if( strtolower($postObj->Event == &#39;subscribe&#39;) ){
//回复用户消息(纯文本格式)	
$toUser   = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time     = time();
$msgType  =  &#39;text&#39;;
$content  = &#39;欢迎关注我们的微信公众账号&#39;.$postObj->FromUserName.&#39;-&#39;.$postObj->ToUserName;
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info     = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
echo $info;
/*<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>*/
}
}
//当微信用户发送imooc,公众账号回复‘imooc is very good&#39;
/*<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>*/
/*if(strtolower($postObj->MsgType) == &#39;text&#39;){
switch( trim($postObj->Content) ){
case 1:
$content = &#39;您输入的数字是1&#39;;
break;
case 2:
$content = &#39;您输入的数字是2&#39;;
break;
case 3:
$content = &#39;您输入的数字是3&#39;;
break;
case 4:
$content = "<a href=&#39;http://www.imooc.com&#39;>慕课</a>";
break;
case &#39;英文&#39;:
$content = &#39;imooc is ok&#39;;
break;
}	
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
//注意模板中的中括号 不能少 也不能多
$fromUser = $postObj->ToUserName;
$toUser   = $postObj->FromUserName; 
$time     = time();
// $content  = &#39;18723180099&#39;;
$msgType  = &#39;text&#39;;
echo sprintf($template, $toUser, $fromUser, $time, $msgType, $content);

}
}
*/
//用户发送tuwen1关键字的时候,回复一个单图文
if( strtolower($postObj->MsgType) == &#39;text&#39; && trim($postObj->Content)==&#39;tuwen2&#39; ){
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$arr = array(
array(
&#39;title&#39;=>&#39;imooc&#39;,
&#39;description&#39;=>"imooc is very cool",
&#39;picUrl&#39;=>&#39;http://www.imooc.com/static/img/common/logo.png&#39;,
&#39;url&#39;=>&#39;http://www.imooc.com&#39;,
),
array(
&#39;title&#39;=>&#39;hao123&#39;,
&#39;description&#39;=>"hao123 is very cool",
&#39;picUrl&#39;=>&#39;https://www.baidu.com/img/bdlogo.png&#39;,
&#39;url&#39;=>&#39;http://www.hao123.com&#39;,
),
array(
&#39;title&#39;=>&#39;qq&#39;,
&#39;description&#39;=>"qq is very cool",
&#39;picUrl&#39;=>&#39;http://www.imooc.com/static/img/common/logo.png&#39;,
&#39;url&#39;=>&#39;http://www.qq.com&#39;,
),
);
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($arr)."</ArticleCount>
<Articles>";
foreach($arr as $k=>$v){
$template .="<item>
<Title><![CDATA[".$v[&#39;title&#39;]."]]></Title> 
<Description><![CDATA[".$v[&#39;description&#39;]."]]></Description>
<PicUrl><![CDATA[".$v[&#39;picUrl&#39;]."]]></PicUrl>
<Url><![CDATA[".$v[&#39;url&#39;]."]]></Url>
</item>";
}

$template .="</Articles>
</xml> ";
echo sprintf($template, $toUser, $fromUser, time(), &#39;news&#39;);
//注意:进行多图文发送时,子图文个数不能超过10个
}else{
switch( trim($postObj->Content) ){
case 1:
$content = &#39;您输入的数字是1&#39;;
break;
case 2:
$content = &#39;您输入的数字是2&#39;;
break;
case 3:
$content = &#39;您输入的数字是3&#39;;
break;
case 4:
$content = "<a href=&#39;http://www.imooc.com&#39;>慕课</a>";
break;
case &#39;英文&#39;:
$content = &#39;imooc is ok&#39;;
break;
}	
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
//注意模板中的中括号 不能少 也不能多
$fromUser = $postObj->ToUserName;
$toUser   = $postObj->FromUserName; 
$time     = time();
// $content  = &#39;18723180099&#39;;
$msgType  = &#39;text&#39;;
echo sprintf($template, $toUser, $fromUser, $time, $msgType, $content);

}//if end
}//reponseMsg end
function http_curl(){
//获取imooc
//1.初始化curl
$ch = curl_init();
$url = &#39;http://www.baidu.com&#39;;
//2.设置curl的参数
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//3.采集
$output = curl_exec($ch);
//4.关闭
curl_close($ch);
var_dump($output);
}
function getWxAccessToken(){
//1.请求url地址
$appid = &#39;wx08d5c2cb632bb5e4&#39;;
$appsecret =  &#39;06d3444fb9abd8d00314eb4a38ad61a8&#39;;
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
//2初始化
$ch = curl_init();
//3.设置参数
curl_setopt($ch , CURLOPT_URL, $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
//4.调用接口 
$res = curl_exec($ch);
//5.关闭curl
curl_close( $ch );
if( curl_errno($ch) ){
var_dump( curl_error($ch) );
}
$arr = json_decode($res, true);
var_dump( $arr );
}
function getWxServerIp(){
$accessToken = "6vOlKOh7r5uWk_ZPCl3DS36NEK93VIH9Q9tacreuxJ5WzcVc235w_9zONy75NoO11gC9P0o4FBVxwvDiEtsdX6ZRFR0Lfs_ymkb8Bf6kRfo";
$url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=".$accessToken;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$res = curl_exec($ch);
curl_close($ch);
if(curl_errno($ch)){
var_dump(curl_error($ch));
}
$arr = json_decode($res,true);
echo "<pre class="brush:php;toolbar:false">";
var_dump( $arr );
echo "
"; } }//class end

相关教程:

PHP视频教程

微信小程序视频教程

以上是【php开发】实现微信公众号图文消息回复与access_token(代码示例)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:博客园。如有侵权,请联系admin@php.cn删除
Scrapy实现微信公众号文章爬取和分析Scrapy实现微信公众号文章爬取和分析Jun 22, 2023 am 09:41 AM

Scrapy实现微信公众号文章爬取和分析微信是近年来备受欢迎的社交媒体应用,在其中运营的公众号也扮演着非常重要的角色。众所周知,微信公众号是一个信息和知识的海洋,因为其中每个公众号都可以发布文章、图文消息等信息。这些信息可以被广泛地应用在很多领域中,比如媒体报道、学术研究等。那么,本篇文章将介绍如何使用Scrapy框架来实现微信公众号文章的爬取和分析。Scr

微信公众号认证和不认证有哪些区别微信公众号认证和不认证有哪些区别Sep 19, 2023 pm 02:15 PM

微信公众号认证和不认证的区别在认证标识、功能权限、推送频率、接口权限和用户信任度等方面。详细介绍:1、认证标识,认证公众号会获得官方颁发的认证标识,即蓝色V标志,这个标志可以增加公众号的可信度和权威性,让用户更容易辨别真实的官方公众号;2、功能权限,认证公众号相比未认证的公众号拥有更多的功能和权限,例如认证公众号可以申请开通微信支付功能,实现在线支付和商业化运营等等。

如何使用Laravel开发一个基于微信公众号的在线点餐系统如何使用Laravel开发一个基于微信公众号的在线点餐系统Nov 02, 2023 am 09:42 AM

如何使用Laravel开发一个基于微信公众号的在线点餐系统随着微信公众号的广泛应用,越来越多的企业开始将其作为在线营销的重要渠道。在餐饮行业中,开发一个基于微信公众号的在线点餐系统能够提高企业的效率和销售额。本文将介绍如何使用Laravel框架来开发一个这样的系统,并提供具体的代码示例。项目准备首先,需要确保已经在本地环境中安装好了Laravel框架。可以通

Python中的爬虫实战:微信公众号爬虫Python中的爬虫实战:微信公众号爬虫Jun 10, 2023 am 09:01 AM

Python是一种优雅的编程语言,拥有强大的数据处理和网络爬虫功能。在这个数字化时代,互联网上充满了大量的数据,爬虫已成为获取数据的重要手段,因此,Python爬虫在数据分析和挖掘方面有着广泛的应用。在本文中,我们将介绍如何使用Python爬虫来获取微信公众号文章信息。微信公众号是一种流行的社交媒体平台,用于在线发布文章,是许多公司和自媒体推广和营销的重要工

公众号每天只能发一篇文章吗公众号每天只能发一篇文章吗Jun 16, 2023 pm 02:04 PM

公众号每天不是只能发一篇文章,每次最多可以发表八篇文章,多篇文章的发布方法:1、点击左侧的“素材管理”,再点击“新建图文素材”开始编辑第一篇文章;2、编辑完第一篇文章之后,点击左侧第一篇文章下面的+号,点击“图文消息”即可编辑第二篇文章;3、做完多图文后,点击“保管并群发”即可完成多篇文章的发布。

用PHP构建一个微信公众号API接口用PHP构建一个微信公众号API接口May 13, 2023 pm 12:01 PM

在当今互联网时代,微信公众号成为了越来越多企业的重要营销渠道。想要自己的微信公众号实现更多的功能,常常需要编写相应的接口。本文将以PHP语言为例,介绍如何构建一个微信公众号API接口。一、前置准备在编写微信公众号API接口之前,需要开发者拥有一个微信公众号的账号,并且在微信公众平台中申请开发者接口权限。申请成功后,可以获取到相关的开发者AppID和AppSe

PHP与微信公众号开发指南PHP与微信公众号开发指南Jun 11, 2023 pm 03:31 PM

随着微信公众号在社交网络中的逐渐普及,越来越多的开发者开始涉足微信公众号开发领域。在这其中,PHP作为一种常见的后端编程语言,也开始被广泛应用于微信公众号的开发中。本文将介绍PHP在微信公众号开发中的基础知识和常用技巧。一、PHP与微信公众号开发基础微信公众号开发微信公众号是指一种基于微信平台的互联网应用程序,可以为用户提供不同类型的服务和内容,如信息推送

使用Go语言框架构建微信公众号应用使用Go语言框架构建微信公众号应用Jun 04, 2023 am 10:40 AM

随着互联网的普及和移动设备的广泛使用,微信公众号已经成为了企业营销必不可少的一部分。通过微信公众号,企业可以实现轻松地与用户互动,推广产品和服务,提高品牌知名度。为了更好地开发微信公众号应用,越来越多的开发者和企业选择使用Go语言来构建微信公众号应用。Go语言是一种由Google开发的编程语言,它的语法简洁,适合构建高性能、高并发的实时应用程序。在简单易用和

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器