微信菜单管理

微信有图文素材和图片素材,下面通过两个方法,添加素材。、

图文素材,代码如下:

public function news_submit(){
		$url=I('post.url');//图片在本地服务器上的路径
		$file=realpath('.'. $url);//相对路径->绝对路径
		$data1=I('post.');
		// print_r($data);
		$accessToken=getAccess_token();
		include APP_PATH . 'LaneWeChat/lanewechat.php';
		$url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";
		$data['media']=Curl::addFile($file);
		$ret=Curl::callWebServer($url,$data,'post',1,0);
		// $this->ajaxReturn($ret);
		// exit;
		if(isset($ret['media_id'])){
			$arr=array(
				'title'=>$data1['title'],
				"thumb_media_id"=>$ret['media_id'],
				"author"=>$data1['author'] ,
				"digest"=>$data1['digest'],
				"show_cover_pic"=>1,
				"content"=>$data1['content'],
				"content_source_url"=>$data1['link']
				);
			$data['articles'][]=$arr;

			$data=json_encode($data,JSON_UNESCAPED_UNICODE);
			// print_r($data);
			// exit;
			$url="https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=$accessToken";
			$ret=Curl::callWebServer($url,$data,'post',true,false);
			// $this->ajaxReturn($ret);
			// exit;
			if(isset($ret['media_id'])){
				$model=M('material');
				$mp=getCurrentMp();
				$arr=array(
						'mpid'=>$mp['id'],
						'media_id'=>$ret['media_id'],
						'create_time'=>time(),
						'path'=>$url,
						'url'=>$file,
						'link'=>$arr['content_source_url'],
						'type'=>'news',
						'description'=>"作者:".$arr['author']."描述:".$arr['digest']
					);
				unset($arr['content_source_url']);
				unset($arr['thumb_media_id']);
				unset($arr['author']);
				unset($arr['digest']);
				unset($arr['show_cover_pic']);
				// print_r($arr);
				// exit;
				$ret=$model->add($arr);
				if($ret){
					$this->ajaxReturn(array('ret'=>true,'msg'=>'上传成功'));
				}else{
					$this->ajaxReturn(array('ret'=>false,'msg'=>'上传失败'));
				}
			}
		}

	}

上传文本素材,需要注意显示在页面上的字段和添加入数据库的字段。

图片素材,代码如下:

public function image_submit(){
		$url=I('post.url');//图片在本地服务器上的路径
		// dump($url);
		// exit;
		$file=realpath('.'. $url);//相对路径-》绝对路径
		// dump($file);
		// exit;
		$staus_type=I('post.staus_type');//临时,永久
		$accessToken=getAccess_token();
		include APP_PATH . 'LaneWeChat/lanewechat.php';
		if($staus_type==0){
			$url="https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$accessToken&type=image";
			
		}else{
			$url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";
		}
		$data['media']=Curl::addFile($file);
		$ret=Curl::callWebServer($url,$data,'post',1,0);
		// $this->ajaxReturn($ret);
		if(isset($ret['media_id'])){
				$model=M('material');
				$mp=getCurrentMp();
				$arr=array(
						'mpid'=>$mp['id'],
						'media_id'=>$ret['media_id'],
						'create_time'=>time(),
						'url'=>$file,
						'type'=>'image'
					);
				$ret=$model->add($arr);
				if($ret){
					$this->ajaxReturn(array('ret'=>true,'msg'=>'上传成功'));
				}else{
					$this->ajaxReturn(array('ret'=>false,'msg'=>'上传失败'));
				}
			}
	}

值得注意的是,图片储存的路径,必须要返回到最上层目录,才能构建完整的相对路径,如果不是相对路径,将不会成功。

两个接口是不同的,一个为临时,一个为永久。切记不可胡乱调用,每天接口只能被调用10次左右,超过次数今天就不能使用了。

media_id,是上传成功后返回的一个参数,十分重要。需要特别注意,此后许多方法,都将在此基础上进行使用。



阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页