微信小程式傳送模板訊息
阿新 • • 發佈:2018-12-19
小程式下發模板訊息統一通過微信“服務通知”傳送,如下圖
1. 獲取 access_token access_token 是全域性唯一介面呼叫憑據,開發者呼叫各介面時都需使用 access_token,需妥善儲存。
2. 新增模板訊息 跟公眾號一樣,需要現在小程式後臺新增模板訊息,然後獲取到對應的模板訊息ID。
3. 傳送模板訊息 根據模板訊息ID對應的模板訊息關鍵字,在後端構造訊息內容,在使用者提交表單或者支付的時候,獲取到form_id(表單提交場景下,為 submit 事件帶上的 formId),後端將訊息傳送出去。引數如下:
PHP示例程式碼
$formid = $redis->hget('id',$id); //取formid $requert = json_decode($formid,true); foreach ($requert as $k => $v) { $time = date('Y-m-d H:i:s', $v['time']); //是否過期 if ($time < $date) { unset($requert[$k]); } } if (!empty($requert)) { $keys = array_keys($requert); $arr = $keys[0]; $formids = $requert[$arr]['formid']; $openids = $openid[$i]; $key1 = '天氣真好';//主題 $key2 = '天氣相當好';//描述 $key3 = '點選點選點選';//備註 $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' . getAsskey(); //這裡一定要按照微信給的格式 $data = array( "touser" => $openids, "template_id" => 'sdnskndwoidhnueiwhdnwionkajn', "page" => 'sajd/isjdi/shnf?usdn=cioasdm', "form_id" => $formids, "data" => array( "keyword1" => array( "value" => $key1, ), "keyword2" => array( "value" => $key2, ), "keyword3" => array( "value" => $key3, ), ), "emphasis_keyword" => "keyword1.DATA",//需要進行加大的訊息 ); $res = postCurl($url, $data, 'json');//將data陣列轉換為json資料 //清除用過的formid unset($requert[$arr]); $redis->hset( 'id', $id, json_encode($requert)); }
function postCurl($url,$data,$type) { $curl_init=curl_init(); curl_setopt($curl_init,CURLOPT_POST,1); curl_setopt($curl_init,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($curl_init,CURLOPT_SSL_VERIFYHOST,false); if($type == 'json'){ $data = json_encode($data);//對陣列進行json編碼 } curl_setopt($curl_init,CURLOPT_URL,$url); if(!empty($data)){ curl_setopt($curl_init,CURLOPT_POSTFIELDS,$data); } curl_setopt($curl_init,CURLOPT_RETURNTRANSFER,1); $res = curl_exec($curl_init); if(curl_errno($curl_init)){ echo 'Error+'.curl_error($curl_init); } return $res; }
function getAsskey() { $access = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&secret="; $oauth2 = getJson($access); $access_token = $oauth2['access_token']; return $access_token; } function getJson($url){ $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); return json_decode($output, true); }