本章將會簡單說一下微信小程序的模板消息發送,相對來說比較簡單,但也有一個小坑要注意的。
微信的地址為:
https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN
相關參數為
參數必填說明touser是接收者(用戶)的 openidtemplate_id是所需下發的模板消息的idpage否點擊模板卡片后的跳轉頁面,僅限本小程序內的頁面。支持帶參數,(示例index?foo=bar)。該字段不填則模板無跳轉。form_id是表單提交場景下,為 submit 事件帶上的 formId;支付場景下,為本次支付的 prepay_iddata是模板內容,不填則下發空模板color否模板內容字體的顏色,不填默認黑色 【廢棄】emphasis_keyword否模板需要放大的關鍵詞,不填則默認無放大基本參數和地址就是以上測試的,有的人會疑惑form_id,openid,tmeplate_id該從哪里獲取下面為先簡單說下
form_id可以由前端提供,前端可以在每一個按鈕上面提交表單獲取form_id給后端,同時后端拿到相關openid。在這里為建議的是前端盡可能多的給后端提供,就是每個按鈕都提供給后端一個id,form_id的有效期為7天,不管運營人員有沒有使用,數量多好過數量少。
template_id為模板id,可以登陸微信小程序后臺在模板消息那里獲取到。
當我們知道這些參數后,開發者肯定想馬上測試一下,然后就讓前端提供form_id,這里為將說下2個坑
第一坑:電腦獲取的form_id是不可以使用的
第二坑:form_id是要手機真機獲取的,但真機的同時還要是線上的項目,未上線本地測試會提示校驗form_id,微信是沒有說明這個注意點的,即是需要在審核成功發布后在線上測試。
接下來就說下后端代碼
?php //獲取accesstoken public function getAccessToken($appid,secret){ $url = https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential appid={$appid} secret={$secret} $res = $this- curl_get($url); $res = json_decode($res,1); return $res[ access_token //獲取模板消息內容主體//因為是測試所以寫死,大家可以通過傳參的方式獲取 public function getMsg($openid,$template_id,$form_id,$emphasis_keyword= keyword1 ){ $data[ data ]= [ keyword1 = [ value = test1 , color = ], keyword2 = [ value = test2 , color = ], keyword3 = [ value = test1 , color = //內容主體 $data[ touser ] = $openid;//用戶的openid $data[ template_id ] = $template_id;//從微信后臺獲取的模板id $data[ form_id ] = $form_id;//前端提供給后端的form_id $data[ page ] = pages/index/index //小程序跳轉頁面 $data[ emphasis_keyword ] = $emphasis_keyword;//選擇放大的字體 return $data; public function send($appid,secret,$openid,$template_id,$form_id){ $access_token = $this- getAccessToken($appid,secret); $send_url = https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send? access_token= . $access_token; $data = $this- getMsg($openid,$template_id,$form_id); $str = $this- curl_post($send_url,json_encode($data)); $str = json_decode($str,1); return $str; public function curl_post($url, $fields, $data_type= text ) $cl = curl_init(); if(stripos($url, https:// ) !== FALSE) { curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($cl, CURLOPT_SSLVERSION, 1); curl_setopt($cl, CURLOPT_URL, $url); curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt($cl, CURLOPT_POST, true); curl_setopt($cl, CURLOPT_POSTFIELDS, $fields); $content = curl_exec($cl); $status = curl_getinfo($cl); curl_close($cl); if (isset($status[ http_code ]) $status[ http_code ] == 200) { if ($data_type == json ) { $content = json_decode($content); return $content; } else { return FALSE; public function curl_get($url, $data_type= text ) $cl = curl_init(); if(stripos($url, https:// ) !== FALSE) { curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($cl, CURLOPT_SSLVERSION, 1); curl_setopt($cl, CURLOPT_URL, $url); curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1 ); $content = curl_exec($cl); $status = curl_getinfo($cl); curl_close($cl); if (isset($status[ http_code ]) $status[ http_code ] == 200) { if ($data_type == json ) { $content = json_decode($content); return $content; } else { return FALSE; punblic function index(){ $appid = xxx //小程序appid $openid = xxx //接收用戶的openid $template_id = xxx //從微信后臺獲取的模板id $form_id = xxx //七天內的formid $data = $this- send($appid,secret,$openid,$template_id,$form_id); var_dump($data);//打印測試結果 }
以上就是發送模板消息的代碼,其實只要獲取到幾個相應的參數就可以 注意相關坑就可以成功測試發送了
相關推薦:
小程序中如何實現三級選擇器組件?(代碼示例)
微信小程序實例:微信小程序中彈窗的實現代碼
微信小程序中如何進行頁面的跳轉
以上就是使用php實現微信小程序發送模板消息(附代碼)的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答