订阅号 图文回复php,微信开发(PHP实现订阅号的公众号配置和自动回复)

首先在微信公众平台(网址:https://mp.weixin.qq.com)申请一个订阅号,然后在开发里找到开发者工具点击公众平台测试账号,在测试账号内进行微信开发实验。    1. 设置一个自己的有效的域名网址和TOKEN(就是暗号),TOKEN一定要与PHP代码中的TOKEN验证一致否则会一直配置失败(写有这段代码的文件一定要传到有效的域名网址内。与设置的网址必须相同)。    下面是PHP代码(在微信公众平台开发里的开发者文档内有部分代码) 。

//define your token

define("TOKEN", "weixin");

$wechatObj = new wechatCallbackapiTest();

$wechatObj->run();

class wechatCallbackapiTest

{

public function run()

{

if ($this->checkSignature()==false) {

die('非法请求');

}

if (isset($_GET["echostr"])) {

$echostr = $_GET["echostr"];

echo $echostr;

exit();

} else {

$this->responseMsg();

}

/*$echoStr = $_GET["echostr"];

//valid signature , option

if($this->checkSignature()){

echo $echoStr;

exit;*/

}

}

public function responseMsg()

{

//get post data, May be due to the different environments

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

//extract 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(!empty( $keyword ))

{

$msgType = "text";

$contentStr = "Welcome to wechat world!";

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

echo $resultStr;

}else{

echo "Input something...";

}

}else {

echo "";

exit;

}

}

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;

}

}

}

?>

2.自动回复 首先重新写一个方法在上面那个文件夹里,再调用此方法,注意不能重名。以下代码是给订阅号发天气,它会回复天气晴朗,发放假,它会回复你“不好好奋斗瞎想啥?”回复其他则会回复"Welcome to wechat world!"public function responseMsg()

{

//get post data, May be due to the different environments

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

file_put_contents('msg.txt', $postStr,FILE_APPEND);

//extract 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();

//$msgType = $postObj->MsgType;//消息类型

//$event = $postObj->Event;//时间类型,subscribe(订阅)、unsubscribe(取消订阅)

$textTpl = "

%s

0

";

if(!empty( $keyword ))

{

$msgType = "text";

$contentStr = $this->autohuifu($keyword);

//$contentStr = "Welcome to wechat world!";

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

echo $resultStr;

}else{

echo "Input something...";

}

}else {

echo "";

exit;

}

}

public function autohuifu($keyword){

if($keyword =='天气'){

$contentStr = "天气晴朗";

}else if($keyword =='放假'){

$contentStr = "成天不好好奋斗瞎想啥?";

}else{

$contentStr = "Welcome to wechat world!";

}

return $contentStr;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272728.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为何技术领域中女程序员较少?

对于大多数人来说,他们意识中的科技人就是扎克伯格,乔布斯或者是比尔盖茨——经常出现在新闻里的典型的男科技企业家。其实在科技领域还有一些女性,比如苏珊沃西基(YouTube的CEO)和吉尼罗曼提(IBM的CEO&…

This version of MySQL doesn't yet support 'LIMIT IN/ALL/ANY/SOME subquery 解决方法

This version of MySQL doesnt yet support LIMIT & IN/ALL/ANY/SOME subquery的意思是,这版本的 MySQL 不支持使用 LIMIT 子句的 IN/ALL/ANY/SOME 子查询,即是支持非 IN/ALL/ANY/SOME 子查询的 LIMIT 子查询。 也就是说,这样的语句是不能…

php 递归分销角色,PHP递归无限分类

我们面试程序开发的时候,经常会被问到递归的问题。今天我们在本文中以“素材火的特效分类表”作为演示,使用PHP递归结合Mysql实现无限级分类。难易:初级下载资源下载积分:50积分递归简单的说就是一段程序代码的重复调用&#xff0…

Android音频系统之AudioPolicyService

地址:http://blog.csdn.net/edmond999/article/details/18599327 1.1 AudioPolicy Service 在AudioFlinger小节,我们反复强调它只是策略的执行者,而AudioPolicyService则是策略的制定者。这种分离方式有效地降低了整个系统的藕合性&#xff0…

程序员常去的14个顶级开发社区

我们来看一下程序员经常去的 14 个顶级开发者社区,如果你还不知道它们,那么赶紧去看看,也许会有意想不到的收获。一、Stack Overflow9 月份,Stack Overflow 也将迎来其 6 岁的生日,毫无疑问,Stack Overflo…

basename php 中文,php basename不支持中文怎么办

不久前遇到一段代码使用了basename,我文件名是中文的,每次返回都只有后缀。后来发现basename函数有猫腻,不支持中文文件名,但凡有以中文开头的文件名将被忽略了。函数说明/*** 从路径中返回文件名* param string $path* 在Windows…

C#特性-表达式树

表达式树ExpressionTree 表达式树基础 转载需注明出处:http://www.cnblogs.com/tianfan/刚接触LINQ的人往往觉得表达式树很不容易理解。通过这篇文章我希望大家看到它其实并不像想象中那么难。您只要有普通的LINQ知识便可以轻松理解本文。表达式树提供一个将可执行代…

程序员的一个好习惯,你有几个?

在很多外人看来,作为我们程序员这个行业只要会敲代码会改bug基本就可以了,但是现在行业人员几近饱和,没有过硬的几把刷子就想着可以甩掉身后的大部队也是不可能的。所以说我们要不断的学习不断的充实自己让企业在裁员的时候压根就考虑不到我们的头上来。…

matlab四维图程序,Matlab 四维图形绘制

这个问题可以用slice命令实现:%%%%%%clear all[x,y,z] meshgrid(0:.5:10,0:.5:10,0:.5:10);c x.^2y.^2z.^2;xs [0,2,4,6,8,10];ys [4];zs [6]; % xs,ys,zs可决定切片形式和位置,help slice可明白其具体含义slice(x,y,z,c,xs,ys,zs)colormap hsv当然…

cURL模拟POST方式提交数据

curl_post.php文件: 1 $url http://localhost/test/curl_post_deal.php;2 3 $post_data array( 4 username > cURL, 5 age > 18, 6 sex > male 7 ); 8 $ch curl_init(); 9 10 curl_setopt($ch, CURLOPT_URL, $url); //请求的地址 11 curl_setopt(…

2017已过半,这半年,你累吗?

大半年下来有人问你挣了多少钱却从来没有人问你最近的日子你累不累近来你受了多少委屈近来有多少心酸近来经历过多少艰难最近付出了多少不被人知的辛苦有时候真的很累、很累但是所有的累只能一笑而过这个累是自己经历的积累这个累是自己身上应该有的责任除了坚强,别…

mysql 5.5 压力测试,mysql 压力测试

mysql 压力测试sysbench支持的测试模式:1、CPU运算性能2、磁盘IO性能3、调度程序性能4、内存分配及传输速度5、POSIX线程性能6、数据库性能(OLTP基准测试)目前sysbench主要支持 mysql,drizzle,pgsql,oracle 等几种数据库。二、编译安装sysbench[roottest package]# …

自学编程的六点技巧

有一天,我的一个在学编程的朋友问我:“我想快速学习编程,你有什么好的推荐吗?我曾在上大学的时候自学过编程,这么多年过去了,我意识到我或许是在用最困难的方式去学习和了解编程。本来我完全可以用更快的速…

AngularJs $anchorScroll、$controller、$document

$anchorScroll 根据HTML5的规则,当调用这个函数时,它检查当前的url的hash值并且滚动到相应的元素。 监听$location.hash()并且滚动到url指定的锚点的地方。可以通过$anchorScrollProvider.disableAutoScrolling()禁用。 依赖:$window $loca…

Jquery操作复选框总结

1、获取单个checkbox选中项(三种写法)$("input:checkbox:checked").val()或者$("input:[typecheckbox]:checked").val();或者$("input:[nameck]:checked").val();2、 获取多个checkbox选中项$(input:checkbox).each(function() {if ($(this).att…

java对五排六列考生随机排座,Java入门第三季6-5扩展练习-随机字符串排序

原课程地址https://www.imooc.com/video/4254* 扩展练习要求* 利用Collections.sort()方法对泛型为String的List进行排序版本2* 1.创建完List之后,往其中添加10条随机字符串* 2.每条字符串的长度为10以内的随机整数* 3.每条字符串的每个字符都是随机生成的&#xff…

信息安全系统设计基础第十周学习总结

第八章 异常控制流 (1)控制流:控制转移序列。 控制转移:从一条指令到下一条指令。 异常控制流:现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流。 (2&#xff09…

MVC、 MVP、 MVVM之间的区别

一、 简介三者的目的都是分离关注,使得UI更容易变换(从Winform变为Webform),使得UI更容易进行单元测试。二、MVC/MVP1 、MVC1、View接受用户的交互请求2、View将请求转交给Controller3、Controller操作Model进行数据更新4、数据更…

java散列法的运用实例,Java HashMap compute() 使用方法及示例

Java HashMap compute() 使用方法及示例Java HashMap compute()方法计算一个新值,并将其与哈希映射中的指定键相关联。compute()方法的语法为:hashmap.compute(K key, BiFunction remappingFunction)compute()参数compute()方法有两个参数:ke…

team geek

1. 转载自http://book.douban.com/review/6007037/,版权归丸子(^.^)v所有。 New Google employees (we call “Nooglers”) often ask me what makes me effective at what I do. I tell them only half-jokingly that it’s very simple: I do the Right Thing for…