TP5 PHP發送小程序訂閱消息
發表時(shí)間:2020-9-25
發布人(rén):融晨科技
浏覽次數:58
發送訂閱消息之(zhī)前你先去申請模闆 , 公共的(de)直接選用就(jiù)可以(yǐ), 沒有符合的(de)你還得申請,審核時(shí)間有點久,
然後根據你申請的(de)模闆來(lái)填寫模闆需要(yào / yāo)的(de)參數就(jiù)好了(le/liǎo), 前提是(shì)用戶要(yào / yāo)授權接收訂閱消息 , 不(bù)然用戶是(shì)收不(bù)到(dào)的(de) , 如果想要(yào / yāo)以(yǐ)後可以(yǐ)實現自動發送, 可以(yǐ)引導用戶永久授權 . 這(zhè)樣就(jiù)不(bù)用每次都需要(yào / yāo)授權,因爲(wéi / wèi)現在(zài)訂閱消息隻有一次性訂閱消息
//根據小程序裏面的(de)模闆消息來(lái)設置
$msg = [
'time3' => ['value'=> date('Y-m-d H:i:s', time())],
'thing4' => ['value'=> $userName['name']],
'thing2' => ['value'=> $userInfo['content']],
'phrase8' => ['value'=> "報價消息"],
'thing7' => ['value'=> "您當前有{$count}條未讀消息, 可能需要(yào / yāo)盡快處理"],
];
用戶的(de)openid
$sendSubscribeMessage[] = $this->sendSubscribeMessage($userOpneid['wx_openid'],
'Mpfk11CE1uTnElfGbsSQ9Y6wjejdXtg2fhSpxvQYSRw', 'pages/myPrice/index', $msg);
//access_token
$access_token = $this->getAccessToken();
//請求url
$url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' . $access_token ;
/***
* @param $touser //需要(yào / yāo)接受訂閱消息的(de)openid
* @param $template_id //模闆ID
* @param $page //點擊返回頁面路徑
* @param $dataArray //訂閱格式請參照小程序訂閱消息模闆中的(de)格式
* @return array
* 訂閱消息模闆
*/
public function sendSubscribeMessage($touser, $template_id, $page, $dataArray)
{
//access_token 一般都存在(zài)緩存 ,
$access_token = $this->getAccessToken();
//請求url
$url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' . $access_token ;
//發送内容
$data = [] ;
$data['touser'] = $touser; //用戶的(de)openid
$data['template_id'] = $template_id; //所需下發的(de)訂閱模闆id
//點擊模闆卡片後的(de)跳轉頁面,僅限本小程序内的(de)頁面。支持帶參數,(示例index?foo=bar)。該字段不(bù)填則模闆無跳轉。
$data['page'] = $page;
//模闆内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } }
$data['data'] = $dataArray;
//跳轉小程序類型:developer爲(wéi / wèi)開發版;trial爲(wéi / wèi)體驗版;formal爲(wéi / wèi)正式版;默認爲(wéi / wèi)正式版
$data['miniprogram_state'] = 'trial';
$data['lang'] = 'zh_CN';
$json_data = json_encode($data);
$http = new Http();
return [
'openid' => $touser,
'data' => $http->curlRequest($url, $json_data)//這(zhè)裏面就(jiù)是(shì)個(gè)curl請求 , 轉成數組返回
];
}
/***
* @return mixed
* 獲取access_token
*/
protected function getAccessToken()
{
$AccessToken = Cache::get('accessToken');
if ($AccessToken) return $AccessToken; else{
$model = new Http();
$access_token = $model->curlRequest('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->appid.'&secret='.$this->appsecret);
$access_token = $access_token['access_token'];
Cache::set('accessToken',$access_token, 5400);
return Cache::get('accessToken');
}
}