微信小程序ThinkPHP发送模板消息

[复制链接]
hyt_xcx手机认证 实名认证 视频认证 发表于 2017-5-11 09:11:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
在控制器定义两个函数:
232219g2a57c3h6yaaj67k.png

232220t6wq39spqtuq639q.png

  1. public function _initialize() {
  2.         $wxapp_settings=sp_get_option('wxapp_settings');
  3.                 $this->appid=$wxapp_settings['appid'];//得到appid
  4.                 $this->appsecret=$wxapp_settings['appsecret'];//得到appsecret
  5.         }
  6.         //发送模板消息
  7.         public function sendmessage(){
  8.                 $data=$_POST=json_decode(file_get_contents('php://input'), TRUE);
  9.                 $access_token=$this->getAccessToken();
  10.                 $request_url='https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$access_token;
  11.                 $request_data=array(
  12.                         'touser'=>$data['touser'],//接收者(用户)的 openid
  13.                         'template_id'=>$data['template_id'],//所需下发的模板消息的id
  14.                         'page'=>$data['page'],//点击模板卡片后的跳转页面
  15.                         'form_id'=>$data['form_id'],//表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
  16.                         'data'=>$data['data'],//"keyword1": {"value": "339208499", "color": "#173177"}
  17.                         'emphasis_keyword'=>$data['emphasis_keyword']//模板需要放大的关键词,不填则默认无放大
  18.                 );
  19.                 $return=json_decode(https_request($request_url,$request_data,'json'),true);
  20.                 $this->response($return,'json');
  21.         }
  22.         //获取及更新AccessToken
  23.         private function getAccessToken(){
  24.                 $access_token_Model=M('access_token','wei_');//数据库
  25.                 $access_token_Data=$access_token_Model->find();
  26.                 if($access_token_Data['access_token']&&time()<$access_token_Data['access_token_update_time']+$access_token_Data['access_token_expires_in']){
  27.                         $return=array('access_token'=>$access_token_Data['access_token'],'expires_in'=>$access_token_Data['access_token_expires_in']);
  28.                 }else{
  29.                         $url='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->appid.'&secret='.$this->appsecret;
  30.                         $return=json_decode(https_request($url),true);
  31.                         if($return['access_token']){
  32.                                 $save=array(
  33.                                         'access_token'=>$return['access_token'],
  34.                                         'access_token_expires_in'=>$return['expires_in'],
  35.                                         'access_token_update_time'=>time()
  36.                                 );
  37.                                 $access_token_Model->where(array('appid'=>$this->appid))->data($save)->save();
  38.                         }
  39.                 }
  40.                 return $return['access_token'];
  41.     }
复制代码
调用它:
232219g2a57c3h6yaaj67k.png

  1. //发送模板消息
  2.     public function sendMessage(){
  3.         $answers_Model=M('answers');
  4.                 $users_Model=M('users');
  5.         $posts_Model=M('posts');
  6.                 $answers_Data=$answers_Model->where(array('id'=>$_POST['id']))->find();
  7.         $posts_Data=$posts_Model->where(array('id'=>$answers_Data['qid']))->find();
  8.                 $users_question_Data=$users_Model->where(array('id'=>$posts_Data['post_author']))->find();
  9.         $users_answer_Data=$users_Model->where(array('id'=>$answers_Data['uid']))->find();
  10.                 if($posts_Data['form_id']){
  11.             //发送模板消息
  12.             $request_url='https://'.$_SERVER['HTTP_HOST'].'/Wxapp/Common/sendmessage';
  13.             $request_data=array(
  14.                                 'touser'=>$users_question_Data['wxapp_uid'],
  15.                 'template_id'=>'RQ0ORmThmkAAQSnuk1N5JVkh8C7Yx5vVrPTpbW44UMo',
  16.                 'page'=>'pages/my/questionDetail?id='.$answers_Data['qid'],
  17.                                 'form_id'=>$posts_Data['form_id'],
  18.                 'data'=>array(
  19.                     'keyword1'=>array('value'=>$posts_Data['post_title'],'color'=>''),//咨询内容
  20.                                         'keyword2'=>array('value'=>strip_tags($answers_Data['ctn']),'color'=>'#5cb85c'),//咨询结果
  21.                     'keyword3'=>array('value'=>$users_answer_Data['user_nicename'],'color'=>''),//答复人
  22.                                         'keyword4'=>array('value'=>$answers_Data['create_date'],'color'=>'')//答复时间
  23.                 ),
  24.                 'emphasis_keyword'=>''
  25.             );
  26.             $return=https_request($request_url,$request_data,'json');
  27.         }
  28.     }
复制代码
在ThinkPHP公共函数定义请求函数:
  1. //发送请求
  2. function https_request($url,$data,$type){
  3.         if($type=='json'){//json $_POST=json_decode(file_get_contents('php://input'), TRUE);
  4.                 $headers = array("Content-type: application/json;charset=UTF-8","Accept: application/json","Cache-Control: no-cache", "Pragma: no-cache");
  5.                 $data=json_encode($data);
  6.         }
  7.         $curl = curl_init();
  8.         curl_setopt($curl, CURLOPT_URL, $url);
  9.         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  10.         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  11.         if (!empty($data)){
  12.                 curl_setopt($curl, CURLOPT_POST, 1);
  13.                 curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
  14.         }
  15.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  16.         curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
  17.         $output = curl_exec($curl);
  18.         curl_close($curl);
  19.         return $output;
  20. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ- Archiver-手机版-小黑屋- 浩阳天社区  

Powered by Discuz! X3.2© 2001-2013 Comsenz Inc.  蜀ICP备16032957号-1