小程序订阅消息实现

修改下以前的记录

小程序的订阅消息和模板消息通用,不过小程序的订阅消息必须有用户支付或点击之后才能使用,不能主动推送。

send_message(){
				//订阅消息
				
				uni.getSetting({
					withSubscriptions: true,
					success(res) {
						console.log('success');
						console.log(res);
						//是否打开订阅消息开关
						if (res.subscriptionsSetting.mainSwitch) {
							if (res.subscriptionsSetting.itemSettings != null) {// 用户同意总是保持是否推送消息的选择, 这里表示以后不会再拉起推送消息的授权
								console.log(res.subscriptionsSetting.itemSettings);
								let moIdState = res.subscriptionsSetting.itemSettings; // 用户同意的消息模板id
								console.log(typeof(moIdState));
								// moIdState = JSON.parse(moIdState)
								 
								for(let key in moIdState){
									console.log(key)
									console.log(moIdState[key])
									if (moIdState[key] === 'accept') {
										console.log('接受了消息推送');
									
									} else if (moIdState[key] === 'reject') {
										console.log("拒绝消息推送");
									
									} else if (moIdState[key] === 'ban') {
										console.log("已被后台封禁");
									}
								}
								console.log('moIdState--------'+moIdState)
							 
								
							} else {
								 
									uni.showModal({
										title: '提示',
										content: "授权开启服务通知",
										success() {
											uni.requestSubscribeMessage({
												tmplIds: ['uUFS0kB-z3mo-BQYhulvMHZlYmirqIWqXOX8OdbXSho','Idv1S1aBYGgItR1JZ8x36BWgSP-5D8yj6HRPbchwqQg','u3IKQAf8hWCGvJOyJOOIVgVpSbFlD3EnGehWzC-Zv14'],
												success(res) {
													console.log(res);
												},
												fail(res) {
													console.log(res)
												}
											})
										},
										fail() {
											uni.showToast({
												title: '开启失败',
												icon: 'none'
											})
										}
									})
								 
							}
						} else {
							console.log('未开启');
							uni.showModal({
								title: '提示',
								content: "授权开启服务通知",
								success() {
									uni.requestSubscribeMessage({
										tmplIds: ['uUFS0kB-z3mo-BQYhulvMHZlYmirqIWqXOX8OdbXSho','Idv1S1aBYGgItR1JZ8x36BWgSP-5D8yj6HRPbchwqQg','u3IKQAf8hWCGvJOyJOOIVgVpSbFlD3EnGehWzC-Zv14'],
										success(res) {
											console.log(res);
										},
										fail(res) {
											console.log(res)
										}
									})
								},
								fail() {
									uni.showToast({
										title: '开启失败',
										icon: 'none'
									})
								}
							})
						}
					},
					fail(res) {
						console.log('获取setting失败'+res);
					}
				})
				 
			},

首先依然是获取accesstoken ,地址栏拼接参数用http_curl来获取,然后将openid和模板id和内容用post请求发送

 public function getaccess_tonken()
    {
        $xcx_info=DB::name('xcx')->where('status',1)->find();
        $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$xcx_info['appid']."&secret=".$xcx_info['secret'];
           //api接口 
        $content = $this->http_curl($url);
        if (!empty($content['access_token'])) {
            session('access_token',$content['access_token']);
        } 
        return $content['access_token'];
    }
  public function sendwxmessage()
    {
        $param= $this->request->param();  
        // $access_token=session('access_token');
        $openid='';//目标用户的openid
        $templateId="";//订阅消息的模板id

        $data=array(
                        'name1'=>array('value'=>'系统发布'),
                        'time2'=>array('value'=>date('Y-m-d H:i:s', time()) ),
                        'thing3'=>array('value'=>"您有新的案件消息",'color'=>'#333333'),
                   
                    );

        $access_token=$this->getaccess_tonken();
        $url="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".$access_token; 

              $params1=array(
                 "touser"=>$openid,
                 "template_id"=>$templateId,
                
                   "data"=>$data
              );
               $json_template = json_encode($params1);
               $params = $this->curl_post($url,urldecode($json_template));
                      $params = json_decode($params,true);
                      print_r($params);
                  

                      if ($params['errcode']==0){
                          return '发送成功';
                      }else{
                          return '发送失败';
                      }
       

        $this->success('请求成功!' );
      
    }
    public  function http_curl($url){
        //用curl传参
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
     
        //关闭ssl验证
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
     
     
        curl_setopt($ch,CURLOPT_HEADER, 0);
        $output = curl_exec($ch);
        curl_close($ch);
        return json_decode($output, true);
    }

   public 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;
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值