微信公众平台开发|发送模板消息

今天给大家分享一遍关于微信公众平台发送模板消息
一、在微信公众号后台申请“模板消息”功能

申请很简单,小编当天就申请下来了

\

申请下来之后,添加你需要的模板,然后就会得到一个模板ID(开发是要用到)

\

二、功能开发
大家看看官方提供的开发文档估计也大概明白整个流程了,其实也就是一个http请求
小编就写了一个类(WeChatSendMsg.class.php),使用该类需开启curl,直接贴上代码
// +----------------------------------------------------------------------
// | 微信公众号 发送模板消息
// +----------------------------------------------------------------------
// | Copyright (c) 2016 http://www.lrfun.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: lrfun 
// +----------------------------------------------------------------------

Class WeChatSendMsg{
	protected $appid;
    protected $secrect;
    protected $accessToken;
	
	function __construct(){
		$this->appid       = "xxx";
		$this->secrect     = "xxx";
		$this->accessToken = $this->getAccessToken();
	}
	
	/***
	 * 获取access_token
	 * @return
	 **/
	private function getAccessToken(){
		$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->secrect;
		$res = json_decode($this->httpRequest($url),true);
		//$access_token = $res['access_token'];
		return $res['access_token'];
	}
	
	/***
	 * POST或GET请求
	 * @url 请求url
	 * @data POST数据
	 * @return
	 **/
	private function httpRequest($url, $data = ""){
		$curl = curl_init();
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
		if(!empty($data)){	//判断是否为POST请求
			curl_setopt($curl, CURLOPT_POST, 1);
			curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
		}
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		$output = curl_exec($curl);
		curl_close($curl);
		return $output;
	}
	
	public function sendTemplateMessage($data = ""){
		$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$this->accessToken;
		$result = $this->httpRequest($url, $data);
		echo $result;
	}
}

调用该类

require_once('WeChatSendMsg.class.php');
$data = array(
	"touser"=>"wqerU8R8WmVo7ylk3b-frjuo",//openId
	"template_id"=>"iq91YDi7QaACAyZlm7RaboyNEHDdU2YizPju7rshUq8",//刚刚上面提到的模板ID
	"url"=>"http://www.lrfun.com",//详情链接
	"data"=>array(
		"name"=> array("value"=>"微信公众号 发送模板消息"),//name:与该模板的参数名相对应
		"remark"=>array("value"=>"模板消息发送。。。")//remark:与该模板的参数名相对应
	)
);
$sendMsg = new WeChatSendMsg();
$sendMsg->sendTemplateMessage(json_encode($data));
\


注:小编在开发过程中遇到一点点问题,代码什么的都写好了,测试的时候却不成功,返回:40003(不合法的OpenID),原因是小编用了其他公众号的openId,后面才发现每个微信用户对应的微信公众号的openID是不一样的。

附件:sendTemplateMessage.zip


(转载请注明:转自http://www.lrfun.com

欢迎转载,原文地址:http://www.lrfun.com/html/technology/PHP/2016/1013/100.html

上一篇:php 电脑端与手机端网页实现第三方微信登录
下一篇:微信公众平台|通过openId获取用户信息(unionId)