例子:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277
使用效果

以上是推送模板消息,官方推薦步驟,本人再此處不用,第四部之前都是后台操作的,所以在此處,已經知道模板id了,直接進行第六步發送消息
第一步:首先獲取appid。appsecret信息,然后通過微信提供的api地址進行獲取accesstoken
第二布:通過sendMessage方法發送消息,完成
$appid = $GLOBALS['cfg_weixi_appkey'];
$appsecret = $GLOBALS['cfg_weixi_appsecret'];
if ($appid && $appsecret) {
$atoken = Common::get_token($appid, $appsecret);//獲取ACCESS_TOKEN
}
$member = Common::session('member');//獲取用戶id
if (!empty($member)) {
$notuse = DB::select('wechatcode', 'nickname')->from('member')
->where('mid', '=', $member['mid'])
->execute()
->current();//獲取用戶表中wechatcode字段的openid信息
$oppenid = $notuse['wechatcode'];
$proname = '商品名稱';
$price = '588';
$report = '啊颯颯及時';
$rest = Common::sendMessage($atoken, $oppenid, $proname, $price, $report);//通過這個方法發送模板信息
}
var_dump($rest);die;
以下是,調用的兩個方法:
/**
* [獲得全局access_token]
* @copyright [copyright]
* @author docblokr 2018-07-18
* @version [version]
* @param [type] $appid [微信appid]
* @param [type] $appsecret [微信的appsecret]
* @return [type] [description]
*/
public static function get_token($appid, $appsecret)
{
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret;
$curl = curl_init(); // 啟動一個CURL會話
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 從證書中檢查SSL加密算法是否存在
$tmpInfo = curl_exec($curl); //返回api的json對象
//關閉URL請求
curl_close($curl);
$arr = json_decode($tmpInfo, true); //將結果轉為數組
return $arr['access_token'];//最終獲取的accesstoken
}
/**
* [推送模板信息]
* @copyright [參數]
* @author docblokr 2018-07-18
* @version [version]
* @param [type] $token [ACCESS_TOKEN]
* @param [type] $openid [發送給誰的openid]
* @param [type] $proname [購買的商品名稱]
* @param [type] $price [價格]
* @param [type] $report [自定義發送的內容]
* @return [type] [description]
*/
public static function sendMessage($token, $openid, $proname, $price, $report)
{
$urlm = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $token; //發送模板信息請求地址
//發送的模板信息(微信要求json格式,這里為數組(方便添加變量)格式,然后轉為json)
$post_data = array(
"touser" => $openid, //推送給誰,openid
"template_id" => "ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY", //微信后台的模板信息id
"url" => "http://www.baidu.com", //模板跳轉鏈接
"data" => array(
"first" => array(
"value" => "恭喜你購買成功!",
"color" => "#173177"
),
"proname" => array(
"value" => $proname, //傳的變量
"color" => "#173177"
),
"price" => array(
"value" => $price,
"color" => "#173177"
),
"report" => array(
"value" => $report,
"color" => "#173177"
),
"reporttime" => array(
"value" => date('Y-m-d H:i:s'),
"color" => "#173177"
),
"remark" => array(
"value" => "歡迎再次購買!",
"color" => "#173177"
),
)
);
//將上面的數組數據轉為json格式
$post_data = json_encode($post_data);
/*發送模板消息
http請求方式: POST
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
*/
//發送數據,post方式發送模板消息
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $urlm);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($post_data)) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
