訂閱號 圖文回復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.pswp.cn/news/272728.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272728.shtml
英文地址,請注明出處:http://en.pswp.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…