发送订阅消息之前你先去申请模板 , 公共的直接选用就可以, 没有符合的你还得申请,审核时间有点久,
然后根据你申请的模板来填写模板需要的参数就好了, 前提是用户要授权接收订阅消息 , 不然用户是收不到的 , 如果想要以后可以实现自动发送, 可以引导用户永久授权 . 这样就不用每次都需要授权,因为现在订阅消息只有一次性订阅消息
//根据小程序里面的模板消息来设置$msg = ['time3' => ['value'=> date('Y-m-d H:i:s', time())],'thing4' => ['value'=> $userName['name']],'thing2' => ['value'=> $userInfo['content']],'phrase8' => ['value'=> "报价消息"],'thing7' => ['value'=> "您当前有{$count}条未读消息, 可能需要尽快处理"],];用户的openid$sendSubscribeMessage[] = $this->sendSubscribeMessage($userOpneid['wx_openid'],'Mpfk11CE1uTnElfGbsSQ9Y6wjejdXtg2fhSpxvQYSRw', 'pages/myPrice/index', $msg);//access_token$access_token = $this->getAccessToken();//请求url$url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' . $access_token ;/**** @param $touser //需要接受订阅消息的openid* @param $template_id //模板ID* @param $page //点击返回页面路径* @param $dataArray //订阅格式请参照小程序订阅消息模板中的格式* @return array* 订阅消息模板*/public function sendSubscribeMessage($touser, $template_id, $page, $dataArray){//access_token 一般都存在缓存 ,$access_token = $this->getAccessToken();//请求url$url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' . $access_token ;//发送内容$data = [] ;$data['touser'] = $touser; //用户的openid$data['template_id'] = $template_id; //所需下发的订阅模板id//点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。$data['page'] = $page;//模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } }$data['data'] = $dataArray;//跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版$data['miniprogram_state'] = 'trial';$data['lang'] = 'zh_CN';$json_data = json_encode($data);$http = new Http();return ['openid' => $touser,'data' => $http->curlRequest($url, $json_data)//这里面就是个curl请求 , 转成数组返回];}/**** @return mixed* 获取access_token*/protected function getAccessToken(){$AccessToken = Cache::get('accessToken');if ($AccessToken) return $AccessToken; else{$model = new Http();$access_token = $model->curlRequest('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->appid.'&secret='.$this->appsecret);$access_token = $access_token['access_token'];Cache::set('accessToken',$access_token, 5400);return Cache::get('accessToken');}}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号