微信小程序> 《微信小程序——发送模板消息》详细步骤

《微信小程序——发送模板消息》详细步骤

浏览量:2719 时间: 来源:越努力越幸运jy

第一步:获取access_token

第一步详情:因为access_token在微信公众号还是小程序,在一个月之内都有获取次数的限制,并且一个access_token只有2小时的有效期;所以每当我们获取一次access_token,就要反复利用;我这里的方法是将获得access_token存进一个数据表;然后每次先去表中查access_token;判断是否有效,过期则重新在去获取一次,在存到数据表中,更新时间。

下面是我存access_token数据表的结构:

 

 

//微信小程序获取access_tokenfunction getTokens(){   $appid='你们自己的';   $appsecret='你们自己的';   $mysql = new Mysql();   $info = $mysql->fetchRow("select access_token_time,access_token from wx_account where appid='{$appid}' and appsecret='{$appsecret}'");   $now=time();   if($now-$info['access_token_time']<7000)   {      $token = $info['access_token'];      return $token;   }   else{      $token_access = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";      $tokening=curl_get($token_access);      $tokens = json_decode($tokening["output"],true);      $token =$tokens["access_token"];      $arr = array(         'access_token_time'=>time(),         'access_token'=>$token      );      $where = "appid='{$appid}' and appsecret='{$appsecret}'";      $res = $mysql->update($arr,$where,'wx_account');      unset($mysql);      if($res)      {         return $token;      }   }}

 

第二步:获取formId

第二步详情:获取小程序端的formid,微信小程序在对表单form进行操作的时候,会产生formid,这个需要自己去获取formid;这个formid是小程序发送模板消息必要参数之一,并且一个formid有效期只有7天,只能够使用一次。下面是我获取formId的存进数据库的数据表:(注意一个在获取formId的同时,也要获取当前的openid);每次使用完formid,这个formid就不能在使用。

第三步:判断获取formId是否过期

第三步详情:formid有一个有效期7天,所以我们要判断你使用的formid是否在有效期内。根据当前时间和createTime字段进行判断。下面是方法,我使用递归的方法,如果在有效期内,返回这个formid;如果不在这个有效期内,则递归调用自身,直至有能够使用的formid。

//判断form_id是否过期function form($openid){   $mysql = new Mysql();   $formId = $mysql->fetchRow("select * from zacg_formId where openid='{$openid}'and status=0 ");   if(empty($formId))   {      return false;   }   $create_time = $formId['createTime'];   $now_time = time();   $cha_time = $now_time-($create_time+60*60*24*7);   if($cha_time>0)   {      $data = array(         'status'=> '2'      );      $res=$mysql->update($data,"openid='{$openid}' and formId='{$formId["formId"]}'","zacg_formId");      if($res)      {         unset($mysql);         return form($openid);      }   }else{      unset($mysql);      return $formId['formId'];   }}

第四步:传递模板数据

第四步详情:发送模板消息,模板的内容需要我们自己去配凑起来,首先要去你的微信公众平台申请一个模板消息,申请成功之后,微信会给你发送一个模板id;例如下图:

 

//传递模板数据function data($keyword,$openid,$template_id,$page,$form_id){   $data = array(      "touser" => $openid,//推送的人的openid      "template_id" => $template_id,//模板id      "page" => $page,//跳转路径      "form_id" => $form_id,//form_id      "data" => $keyword   );   $result = sendpassMessage($data);   if($result['output']['errcode']==0)   {      return true;   }   else{      return false;   }}

第五步:发送模板消息

//发送小程序模板消息function sendpassMessage($data){   $token = getTokens();   $template = $data;          //数组形式的模板内容   $json_template = json_encode($template);   $url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=".$token;   $res = curl_post($url,urldecode($json_template));      //以post方式 向用户发送数据   return $res;}

第六步:接口(群发,循环数据库用户的openid,查找多个formid,然后群发模板消息,可在第四步之前获取数据,进行数据传递)

$keyword1= $activityInfo['title'];//活动主题$keyword2= $activityInfo['address'];//会议地点$keyword3= $activityInfo['limitNumber'];//参会人数$keyword4= date("Y-m-d H:i:s",$activityInfo['startTime']) .'-'. date("Y-m-d H:i:s",$activityInfo['endTime']);//会议时间$keyword5= "报名截止时间为". date("Y-m-d H:i:s",$activityInfo['deadline']);//温馨提示$openidArr = $mysql->fetchRows("select openid from zacg_user where companyId={$companyId} and role in ({$role})");foreach($openidArr as $k=>$v){    $openid = "{$v['openid']}";    $template_id = "UwvpxmzzqMBCoHd76ED4cr1GK94ps9584UJC70lXjRY";    $page = "pages/activityList/activityDetails/activityDetails?id=".$activityInfo['id'];    $form_id = form($openid);    $formStatus = array(        'status'=>'1'    );    $keyword = array(    'keyword1'=>array("value" => $keyword1),//活动主题    'keyword2'=>array("value" => $keyword2),//会议地点    'keyword3'=>array("value" => $keyword3),//参会人数    'keyword4'=>array("value" => $keyword4),//会议时间    'keyword5'=>array("value" => $keyword5),//温馨提示);$result = data($keyword,$openid,$template_id,$page,$form_id);    $mysql->update($formStatus,"formId='{$form_id}'","zacg_formId");//1表示已经使用}

注意:以上代码中的sql语句是我所在公司的框架中的写法,需要的换成你们自己的写法即可。

http://www.ahhfit.top/news/1044.html

 

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎