- <?php
- namespace Common\Lib;
- class WeiXin{
- public $appid;
- public $appsecret;
- public $access_token;
- public function __construct(){
- $config = C("THINK_SDK_WXOAUTH");
- $this->appid = $config['APP_KEY'];
- $this->appsecret = $config['APP_SECRET'];
- //判断access_token是否存在,不存在重新获取
- if(session('access_token_bd')){
- $this->access_token = session('access_token_bd');
- }else{
- $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
- $res = json_decode($this->http_request($url),true);
- $this->access_token = $res['access_token'];
- session(array('name'=>'access_token_bd','value'=>$this->access_token,'expire'=>7200));//保存access_token
- }
- }
- //发送模板消息
- public function send_template_message($data){
- $url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$this->access_token;
- $res=$this->http_request($url,$data);
- return $res;
- return json_decode($res,true);
- }
- public function template($uid,$template_id,$data,$url,$topcolor){
- $member=M('member')->where(array('id'=>$uid))->find();
- $openid=$member['openid']; //根据用户id获取数据库保存的openid
- switch($template_id){
- case 1:
- $tpl="PTaLGaNTX96ygKhzdaSV3b5sMeR639vtnJcjK830pfI";//客户预约通知
- break;
- case 2:
- $tpl="dy2JfGwROKwiLps0jUUXzq9v5hOkBWduFbA3ph5CTrQ";//预约成功提醒
- break;
- case 3:
- $tpl="esK5kFS8BHx6EiDJ2mkszKsijTU5TJKDyEEuqEessHY";//任务通知
- break;
- case 4:
- $tpl="mtklmdaJ2TCWOS8Taoxjm15bVFRa0Rj5GtdVqvPlLq0";//订单完成通知
- break;
- case 5:
- $tpl="pF0szsKuAh2u7ziqH3Im0GscRwrXaUNwXGrUNZKYHy8";//任务完成通知
- break;
- case 2:
- $tpl="pXFC-Lc4TgiAl-nQWMMbD7eLoi25SIWgSU3IXrcKcmw";//订单待支付提醒
- break;
- default:
- $tpl = '';
- break;
- }
- if(!$tpl){
- return '';
- }
- $template=array('touser' =>$openid,
- 'template_id'=>$tpl,
- 'url' =>$url,
- 'topcolor' =>$topcolor,
- 'data' =>$data
- );
- return $template;
- }
- protected function http_request($url,$data=null){
- $curl = curl_init();
- curl_setopt($curl,CURLOPT_URL,$url);
- curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
- curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);
- if(!emptyempty($data)){
- 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;
- }
- }
构造模板消息体并发送
- $uid=get_cookie('uid');//获取用户id
- $data= array('first' => array('value'=>urlencode("测试数据"),'color'=>''),
- 'keyword1' => array('value'=>urlencode("王三"),'color'=>''),
- 'keyword2' => array('value'=>"15250735030",'color'=>''),
- 'keyword3' => array('value'=>"2016-8-26",'color'=>''),
- 'keyword4' => array('value'=>urlencode("预约拉货"),'color'=>''),
- 'remark' => array('value'=>urlencode("感谢选择我们"),'color'=>''),
- );
- $wxtlp = new \Common\Lib\WeiXin();
- $template = $wxtlp->template($uid,1,$data);
- $res=$wxtlp->send_template_message(urldecode(json_encode($template)));
- $data=json_decode($res,true);
- print_r($data);exit;
在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:
{
"errcode":0,
"errmsg":"ok",
"template_id":"Doclyl5uP7Aciu-qZ7mJNPtWkbkYnWBWVja26EGbNyk"
}