微信模板消息php
1. 微信小程序 實現模板消息群發、發送給指定用戶
最近在做一款拼課類小程序,大概需求就是分享課程頁面給好友,好友參與達到一定數量後則拼課成功。
按理說很平常的需求,微信公眾號里邊應該很容易實現拆配,但是想在小程序里邊實現這么個功能卻有點蛋疼了。
為什麼小程序實現起來比較費勁呢,那就要說下小程序發送模板消息的機制了,先看文檔怎麼說:
劃重點, 本人 、 交互 ,也就是說這個模板消息,必須由用戶手動來觸發,你想後台定時給用戶推個消息,洗洗睡吧你。
再來看下面:
這個重點你們自己劃吧,發模板消息必須滿足這兩種情況中的一種,支付就不說了,用戶付款後可以推送幾條消息,重點是這個 表單提交 。
意思就是我想給用戶發個模板消息,第一要搞個表單,第二要讓用戶來提交這個表單(獲取formId),而且這個模板消息還只能發給提交表單的用戶本人,你想發給別的用戶,呵呵。
好了,說多了都是氣,既然這樣設計,也是有一定道理,但是道理都是講給守規矩的人聽的,至於不守規矩的,喂!說的就是你。
通過上面的分析我們知道,想發送一個基本的模板消息需要以下步驟:
模板消息介面 POST https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN 有這么幾個參數 :
前面扯了一堆概念,下面我們來把這個功能具體的實現一遍吧,我這里後台用的是php laravel,原理都一樣。
我這只寫一個例子,一看就明白
有些時候用戶操作頻繁,可能會導致伺服器收到大量請求,所以可以優化下,把formId先存到一個全局變數里邊(數組),當達到一定數量後統一發給後台來保存。這塊可以靈活運用。
服務端的實現也就兩個功能, 收集 和 發送 。
假設我們現在有這么一個類FormIdCollection,可以收集(save)和獲取(get)某個openid的formId,那我們給前台暴露的api只需要簡單的調用下就可以了,至於發消息,也只需要get一個formId,即可。
下面是FormIdCollection類的一個具體實現,基於laravel(說實話,挺好用的),另外引芹御謹入了一個微信開發包 overtrue/wechat (這里主要是用嫌基來發模板消息、有點大材小用了), https://www.easywechat.com/
我已經封裝了一個laravel擴展包,感興趣的朋友可以上github上看下 https://github.com/laravuel/laravel-wfc 。
至於非框架的php實現,小夥伴可以幫忙弄下。
2. php 微信模板消息 5000人的推送
1、php+redis 消息隊列
2、swoole非同步執行
想玩並發的話,php 的話除了 pcntl_fork 多個進程跑腳本,本身有批處理的模塊,可以用 curl_multi_* 批量發送
3. 求微信公眾號介面 給客戶發送信息的 PHP代碼
你好,可以用客服消息介面或模板消息介面實現。但是需要認證公眾號才能有許可權。
認證服務號可以發送客服介面消息[需要對應openid24小時內有互動]和模板消息,訂閱號則沒有模板消息許可權。
發送文字消息示例:
$postdata='{"touser":"o5BkRs_vRwfPqAb1ceXHfJDzmQ5o","msgtype":"text","text":{"content":"HelloWorld"}}';
$opts=array(
'http'=>array(
'method'=>'POST',
'Content-Length'=>strlen($postdata),
'Host'=>'api.weixin.qq.com',
'Content-Type'=>'application/json',
'content'=>$postdata
)
);
$context=stream_context_create($opts);
$result=file_get_contents('https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=你的access_token',true,$context);
echo$result;
4. php發送1000條微信模板消息萬多久
幾分鍾。
用swoole,循環task,就可以發送1000條微蘆畝蔽慶信了,不需要耗費太長的時間陪並森,如果操作熟練的話,短短幾秒鍾也是有可能的。
消息的發送速度主要看你的操作熟練程度了,新手的話會稍微的慢一些,大概會花費幾分鍾的時間的。
5. PHP 同一時間 發送10W-100W微信模板消息,怎麼解決速度上與穩定性...
用swoole,循環task 10w就6,7分鍾吧
6. 幫忙寫個微信公眾平台模板消息範例 PHP
如圖所示:openidid改成你自己的,介面URL改下,由於網路不等發鏈接
<?php
$access_token='_e8';
$url='改成介面URL?access_token='.$access_token;//access_token改成你的有效值
$data=array(
'first'=>array(
'value'=>'有一名客戶進行了一次預約!',
'color'=>'#FF0000'
),
'keyword1'=>array(
'value'=>'2015/10/514:00~14:45',
'color'=>'#FF0000'
),
'keyword2'=>array(
'value'=>'都會型告備坦SPA',
'color'=>'#FF0000'
),
'keyword3'=>array(
'value'=>'1cvvvv',
'color'=>'#FF0000'
),
'keyword4'=>array(
滾基'value'=>'上海市浦東新區XXXXSPA館',
'color'=>'#FF0000'
),
'keyword5'=>array(
'value'=>'無',
'color'=>'#FF0000'
),
'remark'=>array(
'value'=>'請您務必准時到場為客戶提供SPA服務!',
'color'=>'#FF0000'
)
);
$template_msg=array('touser'=>'ojM5us46feM315cpmfQ9hAWfX8rE','template_id'=>'','topcolor'=>'#FF0000','data'=>$data);
$curl=curl_init($url);
$header=array();
$header[]='Content-Type:application/x-www-form-urlencoded';
curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
//不輸出header頭信息
curl_setopt($curl,CURLOPT_HEADER,0);
//襪桐偽裝瀏覽器
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/41.0.2272.118Safari/537.36');
//保存到字元串而不是輸出
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
//post數據
curl_setopt($curl,CURLOPT_POST,1);
//請求數據
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($template_msg));
$response=curl_exec($curl);
curl_close($curl);
echo$response;
7. php 推送微信公眾號模板消息
很簡單,謹中根據自己的控制器去調用類中的 cash_message( data)方法 openid就是微信的openid
data是需睜晌喊要推送悉野的信息
8. php如何編寫一個微信公眾平台的消息推送
給你個代碼樣例不可以直接復制使用
/**
*發送模板消息
*@param$tmpId模板ID
*@param$openId用戶openID
*@param$param模板參數
*@param$url
*@returnmixed
*@authorfjlhuman
*/
publicfunctionsendTmpMessage($tmpId,$openId,$param,$url){
$postUrl="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$this->accessToken;
$arrData['touser']=$openId;
$arrData['template_id']=$tmpId;//'6OT8DDNF-CbiadTsbEKKSCZVHe_9hnhxOBT7EvURNcE';
$arrData['url']=$url;
$arrData['data']=$param;
$json=json_encode($arrData);
$result=Curl::post($postUrl,$json);
$result=json_decode($result,true);
$rData['isTure']=false;
$rData['msg']="";
if($result['errcode']==0){
$rData['isTure']=true;
$rData['msg']="發送成功";
}else{
$rData['msg']=$result['errcode'];
}
return$rData;
}
詳情請參考微信公眾平台技術文檔->模板消息介面
9. 微信公眾號模板消息無法跳轉到指定小程序頁面
最近做了一個需求在公眾號網頁推送的模板消息,連接跳轉到關聯小程序,遇到總是跳轉到首頁的問題。說一下裡面的坑
後端是PHP進 行消息發送 官方發送數據例子如下:
最開始 為了構造一個json數據格式,
第一步:我是先把 數據構造成一個多維數組 $arr,
第二步:$json_data = json_encode($arr),然後再 $json = urldecode($json_data);
第三步:再然後 就是 通過 curl_init 進行發送了,這里不再詳述。
接下來有個坑,發送不成功,錯誤信息 如下
{「errcode」:40165,「errmsg」:"invalid weapp pagepath}
網路下,很快有了答案,說慧困官方文檔有誤,把 pagepath 改為 path 即可,我試了下,果然可以,消息推送正常,開心壞了!
奇怪的事情發生了,點擊推送消息後沒有跳轉到小程序指定頁面,一直是首頁!
然後網路搜索各種答案,有說 路徑參數名,改為 page(試了下居然可以),有的說 為 pagepath(這不是剛跳出來的坑嗎?為啥別人居然可以成功發送?)
經過各種測試終於發現問題所在,第二步有問題!json_encode() 把原來數組中的路徑 斜杠轉義了! 'pages/auth/auth?id=6' 變成了 'pages\/auth\/auth?id=6' 難怪輪碧螞找不到路徑!
後來看了下手冊,有防止 json_encode() 轉義 斜杠的參數
JSON_UNESCAPED_SLASHES (不轉義斜杠,對應的臘埋數字 64)
然後把第二步 改為 $json_data = json_encode($arr, JSON_UNESCAPED_SLASHES )
還得把 頁面參數由 path 改為 pagepath (不改會報錯!)
再發送消息就可以正常接收並跳轉到指定小程序頁面啦!下面是我的構造的正確的多維數組格式
10. php微信模版消息為什麼收到空白
首先謹昌你得先在後台里建立自己的模版消息,然後通過設置好的模版消息進行對應的操作
操作的步驟為以下幾個步驟:
1 設置所屬行業
2 獲取設置的行業信息
3 獲得模板ID
4 獲取模板祥局扒列表
5 刪除模板
6 發送模板消息
7 事件推送
在調用模板消息介面後,會返回JSON數據包。正常時的返回JSON數據包示例:
{
"errcode":0,
臘伍"errmsg":"ok",
"msgid":200228332
}
當返回的消息中errocde為0且返回了errmsg為OK和msgid後才說明發送的消息模版成功了