微信小程序推送公众号模板消息

26 篇文章 0 订阅

1、准备工作

微信公众号:AppId和APPSecret(必须认证)
微信小程序:AppId和APPSecret(必须认证)
微信开放者平台(小程序和公众号必须绑定同一个开放者平台,必须认证)

1. 小程序关联公众号:

1.1 路径:小程序后台——设置——关注公众号

2. 获取用户是否关注公众号标识

        2.1 路径:小程序开发设置——业务域名,添加公众号设置的 网页授权域名 才可以访问

               2.1.1 小程序设置跳转路径 获取code:URL必须是上面设置好的域名下的路径

APPID:你的appid值
redirect_uri:回调地址,注意https://www.xxxxxxx.com 小程序的业务域名必须配置

 <web-view src="https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=https://www.xxxxxxx.com/mainapp.php/Login/actionIndex&response_type=code&scope=snsapi_userinfo#wechat_redirect"></web-view>

                2.1.2 接收code值获取用户openid值

   /**
     * Info: //获取openid
     * @param string $code code值
     */
public function actionIndex(){

		$code = $_GET["code"];//获取前端给的code值
		$appid = '微信公众号appid';//微信公众号appid
        $appsecret = '微信公众号appsecret';//微信公众号appsecret
		// 公众号
		$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";
        $token = file_get_contents($url);
        $token = json_decode($token,true);		
        $user_url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$token['access_token']."&openid=".$token["openid"]."&lang=zh_CN";
        $userinfo = file_get_contents($user_url);	
        $arr = json_decode($userinfo,true);
        $openid = $arr['openid'];
		
        $unionid = $arr['unionid'];/*该字段必须在微信开发平台(https://open.weixin.qq.com/)进行关联*/
        
    }

                2.1.3 接收code值获取用户openid值

 /**
	 * 发送模板消息
	 */
 	public function send_notice(){
        $appid = '微信公众号appid';//微信公众号appid
        $appsecret = '微信公众号appsecret';//微信公众号appsecret
        $access_token_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret;
        
        
         //获取access_token
        $json_token=$this->curl_post($access_token_url);
        $access_token1=json_decode($json_token,true);
        $access_token2=$access_token1['access_token'];

        //模板消息
        $json_template = $this->json_tempalte();
        $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token2;
       
        $res = $this->curl_post($url,urldecode($json_template));
        $res = json_decode($res,true);
        if ($res['errcode']==0){
             return '发送成功';
        }else{
              return '发送失败';
        }
   }



 /**
    * 将模板消息json格式化
    */
   public function json_tempalte(){
       //模板消息
       $template=[
             'touser'      => '用户openid',  //用户openid
             'template_id' => "在公众号下配置的模板id", //在公众号下配置的模板id
             'url'		  => "http://baidu.com", //点击模板消息会跳转的链接
             //如果想要跳转微信小程序,就把上面这个url这一行注释掉,用下面这个`miniprogram`
             //'miniprogram' => [
             //'appid'    => '这里填写要跳转的小程序appid',
             //'pagepath' => 'pages/index/index?order_id=205', //这里填写小程序路径,可以拼接参数
             // ],
             'topcolor'    => "#7B68EE",
             'data'=>array(
               'first'=>array('value'=>urlencode("您的活动已通过"),'color'=>"#FF0000"),
               'keyword1'=>array('value'=>urlencode('测试文章标题'),'color'=>'#FF0000'),  //keyword需要与配置的模板消息对应
               'keyword2'=>array('value'=>urlencode(date("Y-m-d H:i:s")),'color'=>'#FF0000'),
               'keyword3'=>array('value'=>urlencode('测试发布人'),'color'=>'#FF0000'),
               'keyword4'=>array('value'=>urlencode('测试状态'),'color'=>'#FF0000'),
               'remark' =>array('value'=>urlencode('备注:这是测试'),'color'=>'#FF0000'), )
       ];
       $json_template=json_encode($template);
       return $json_template;
   }




   /**
    * @param $url
    * @param array $data
    * @return mixed
    * curl请求
    */
   function curl_post($url,$data=array()){
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_URL, $url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
       // POST数据
       curl_setopt($ch, CURLOPT_POST, 1);
       // 把post的变量加上
       curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
       $output = curl_exec($ch);
       curl_close($ch);
       return $output;
   }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值