微信开发 获取图文_微信图文消息推送上传本地图片路径获取到微信返回的url - CSDN
  • 既然自己开发,就需要获取到数据,并给出编号; 这个也很简单,根据api能很容易拿到数据,但是封面图片的地址我在写这个记录的时候还是没有拿到,不知道是我的方法不对,还是微信没有这个接口,因为发送图文信息...

    既然自己开发,就需要获取到数据,并给出编号;

    这个也很简单,根据api能很容易拿到数据,但是封面图片的地址我在写这个记录的时候还是没有拿到,不知道是我的方法不对,还是微信没有这个接口,因为发送图文信息需要一个图片地址链接;因为我要个文章编号,所以我需要一条一条获取,微信可以一次获取20条数据。

    1、获取token;

    2、获取文章数量

    3、获取文章列表;


    获取token

    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
    参数 是否必须 说明
    grant_type 获取access_token填写client_credential
    appid 第三方用户唯一凭证
    secret 第三方用户唯一凭证密钥,即appsecret

    wchat.php


    /**
    	* 获取access_token
    	*grant_type 获取access_token填写client_credential
    	*appid 第三方用户唯一凭证
    	*secret 第三方用户唯一凭证密钥,即appsecret
    	*/
    	public function get_access_token()
    	{
    		//https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
    		$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".APPID."&secret=".SECRET;
    		$response = file_get_contents($url);
    		//返回数据格式:{"access_token":"ACCESS_TOKEN","expires_in":7200}
    		//expires_in:凭证有效时间
    		$res = json_decode($response, true);
    		return $res['access_token'];
    	}
    获取这个是get就可以,所以可以直接用file_get_contents


    获取文章数量

    wchat.php


    https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=ACCESS_TOKEN
    {
      "voice_count":COUNT,
      "video_count":COUNT,
      "image_count":COUNT,
      "news_count":COUNT
    }

    /*
    	*获取文章数量
    	*/
    	public function get_article_count($access_token)
    	{
    		//https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=ACCESS_TOKEN
    		$url = "https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=".$access_token;
    		$response = file_get_contents($url);
    		$res = json_decode($response, true);
    		return $res;
    	}


    获取文章列表

    https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
    参数 是否必须 说明
    type 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)
    offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
    count 返回素材的数量,取值在1到20之间
    {
       "total_count": TOTAL_COUNT,
       "item_count": ITEM_COUNT,
       "item": [{
           "media_id": MEDIA_ID,
           "content": {
               "news_item": [{
                   "title": TITLE,
                   "thumb_media_id": THUMB_MEDIA_ID,
                   "show_cover_pic": SHOW_COVER_PIC(0 / 1),
                   "author": AUTHOR,
                   "digest": DIGEST,
                   "content": CONTENT,
                   "url": URL,
                   "content_source_url": CONTETN_SOURCE_URL
               },
               //多图文消息会在此处有多篇文章
               ]
            },
            "update_time": UPDATE_TIME
        },
        //可能有多个图文消息item结构
      ]
    }

    /*
    	*获取文章列表
    	*type 素材的类型:图片(image)、视频(video)、语音 (voice)、图文(news)
    	*offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
    	*count 返回素材的数量,取值在1到20之间
    	*/
    	public function get_article_list($type, $offset, $count, $access_token)
    	{
    		//https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
    	
    		$url = "https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=".$access_token;
            $data = '{"type":"'.$type.'","offset":"'.$offset.'","count":"'.$count.'"}';
    		//返回的数据
    		$response = $this->get_response_post($url, $data);
    		//echo strip_tags($response);
    		$res = json_decode($response, true);
    		return $res;
    	}

    public function get_response_post($url, $data)
    	{
    		$curl = curl_init($url);
    		curl_setopt($curl, CURLOPT_HEADER, 0);//过滤头部
    		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//获取的信息以文件流的形式返回,而不是直接输出。
    		curl_setopt($curl,CURLOPT_POST,true); // post传输数据
    		curl_setopt($curl,CURLOPT_POSTFIELDS,$data);// post传输数据
    		$responseText = curl_exec($curl);
    		curl_close($curl);
    	
    	    return $responseText;
    	}



    插入数据


    /*插入数据库*/
    	public function import_news($data)
    	{
    		
    		$sql = "INSERT INTO xxx (media_id,cat_id,keywords,news_sn,title,thumb_media_id,show_cover_pic,author,digest,content,url,content_source_url,update_time, msg_type)".
    		       " VALUES('".$data['media_id']."', 0, '', '', '".$data['title']."', '".$data['thumb_media_id']."','".$data['show_cover_pic']."', '".$data['author']."','".$data['digest']."','".$data['content']."','".$data['url']."','".$data['content_source_url']."',".$data['update_time'].", 'news')";
    		$res = $this->dbhc->qry($sql);
    		$last_id = mysql_insert_id();
    		$format_count = sprintf("%05u", $last_id);
    		$sql = "UPDATE xxx SET news_sn='".$format_count."' WHERE id=".$last_id;
    		$this->dbhc->qry($sql);
    		return $res;
    	}

    因为编辑有时候可能忘了,有时候有记起来了,所以我弄了填写数量插入每天更新一条

    if($act == "importone")
    {
    	
    	$access_token = $hcwechat->get_access_token();
    	$list = $hcwechat->get_article_list('news', 0, 1, $access_token);
        $res = import_opearte($list);
        foreach ($res as $key => $val) {
        	$count = $op->get_news_media_id($val['media_id']);
    
        	if($count<=0)
    		{
    			$op->import_news($val['list']);
    		}
        }    
        header("Location:list.php");
    }
    
    elseif($act == "import")
    {
    	
    	$num = intval($_POST['num']);
    	$hcwechat = new hcWechat();
    	$access_token = $hcwechat->get_access_token();
        $count = $hcwechat->get_article_count($access_token);
        $news_count = $count['news_count'];
        if($num>$news_count)
        {
        	$num = $news_count;
        }
        for ($i=1; $i <= $num; $i++) 
        { 
        	$start = $num-$i;
        	$list = $hcwechat->get_article_list('news', $start, 1, $access_token);
        	$res = import_opearte($list);
    	    foreach ($res as $key => $val) {
    	    	$count = $op->get_news_media_id($val['media_id']);
    	    	if($count<=0)
    			{
    				$op->import_news($val['list']);
    			}
    	    }   
        }
        header("Location:list.php");
    }

    这里对返回回来的数据稍微处理下

    function import_opearte($list)
    {
    	$res = array();
    	foreach ($list['item'] as $key => $val) 
    	{
    		foreach ($val['content']['news_item'] as $k => $v) 
    		{
    			$data = array(
    				'media_id'           => $val['media_id'],
    				'update_time'        => $val['update_time'],
    				'title'              => $v['title'],
    				'thumb_media_id'     => $v['thumb_media_id'],
    				'show_cover_pic'     => $v['show_cover_pic'],
    				'author'             => $v['author'],
    				'digest'             => $v['digest'],
    				'content'            => $v['content'],
    				'url'                => $v['url'],
    				'content_source_url' => $v['content_source_url'],
    				);
    			$res[]['media_id'] = $val['media_id'];
    			$res[]['list'] = $data;
    		}
        }
    	return $res;	
    }

    上面有个thumb_media_id,微信解释是图文消息的封面图片素材id(必须是永久mediaID),但是发送图文信息时需要的是图片的地址,目前就这个还不知道咋弄。有知道的请不吝赐教,谢谢!
    展开全文
  • 微信公众平台升级后,预览图文消息时页面会显示如下信息: 经过一番努力,小编最终找到了方法: >打开自己的微信给公众号发送一条消息; >在公众平台打开消息管理,给微信回复一条图文消息(从素材库中...

    微信公众平台升级后,预览图文消息时页面会显示如下信息:




    经过一番努力,小编最终找到了方法:


    >打开自己的微信给公众号发送一条消息;
    >在公众平台打开消息管理,给微信回复一条图文消息(从素材库中选择);
    >在微信打开图文消息,复制链接并发送给公众号。


    展开全文
  • 基于 laravel框架的微信公众号的自动回复功能。主要是图文消息和文本类型

    最近开始做公司的微信项目,深切的感受到了微信的不同,做微信是需要从头开始好好学的,在此记录一下学习微信的过程,也希望以后能根据这些文章迅速掌握微信开发的知识。少踩坑,,(laravel框架)

    1、首先需要进入微信公众号--》基本配置--》填上你的服务器信息--》验证TOKEN,获取appId和appkey

    2、下载官方的SDK文件,参考文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543

    demo下载地址:http://www.cnblogs.com/txw1958/p/tutorials-of-wechat-public-platform.html       方倍工作室 的。

    3、首先需要明确(1)验证token通过,证明你的服务器可以和微信进行交互

    (2)进入微信页面,发送消息,此时,后台应接受消息,并判断消息类型

    (3)根据消息类型,拼接不同的xml数据,返回给模板

    (4)然后就实现了微信上自动回复的功能了。

    4、


    以上为验证token之后,在控制器设置的微信入口文件:这个文件也就是demo中的reponseMsg()方法:

    主要用于获得微信发送过来的数据,然后再把tousername,fromusername等信息放到一起,提取用户发送消息的类型$event,并且请求下一个方法:

    5、

    这个方法主要是为了判断请求的类型,根据不同的类型会有不同的处理方法。在此只处理text类型的数据,并且调用text方法,获取拼接的数据。最后返回给响应方法handle_response()方法。

    6、

    在这里,我们把回复的内容都给写死了,大家到时候也完全可以从数据库读出这些数据。里面就是简单的拼接了一些图文信息,然后把这些信息返回。数组$arr是方便在模板上输出图文消息。

    7、

    该控制器主要是根据传过来的event不同,判断该调用哪个模板,该回复什么样的消息等。如果$event==text,则调用默认的模板:$xml = view(wechat.tpl_reply_text) ;如果$event为news,则需要返回图文消息,我们把数据都放到数组里面,在模板上输出即可。

    8、

    <xml>
      <ToUserName><![CDATA[{{$ToUserName}}]]></ToUserName>
      <FromUserName><![CDATA[{{$FromUserName}}]]></FromUserName>
      <CreateTime>{{$CreateTime}}</CreateTime>
      <MsgType><![CDATA[news]]></MsgType>
      <ArticleCount>{{$ArticleCount}}</ArticleCount>
      <Articles>
    @foreach ($news  as $k => $v)
      <item>
      <Title><![CDATA[{{$v['Title']}}]]></Title>
      <Description><![CDATA[{{$v['Description']}}]]></Description>
      <PicUrl><![CDATA[{{$v['PicUrl']}}]]></PicUrl>
      <Url><![CDATA[{{$v['Url']}}]]></Url>
      </item>
    @endforeach
      </Articles>
    </xml>

    这就是模板部分:直接输出即可。

    9、在此已经是完成了微信的自动回复功能。用户输入指定的内容的时候,,我们也回复指定的内容回去。

    微信官方的给的demo被拆分了,没有按照官方上那种返回xml数据,而是采用了laravel的模板来输出。


    10、总结:虽然整体来说不够简洁,但也算是实现了功能,在此做个记录。以后水平高了再完善完善。

    展开全文
  • 需要注册成为公众号 进入https://mp.weixin.qq.com/ 点击素材管理 新建图文消息 超链接 选择其他公众号 搜索 就能获取到他的历史素材

    需要注册成为公众号 进入https://mp.weixin.qq.com/ 点击素材管理 新建图文消息 超链接 选择其他公众号 搜索 就能获取到他的历史素材

    展开全文
  • 这里不会介绍如何获取token,在开发中发现很多坑,试过很多中方法,下面介绍了一种比较简单的获取永久素材的方式,不需要大量的代码,方便开发。 业务流程: 获取微信公众号永久素材分为两种情况: 文件类型为:...
  • (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众号开发之网页中及时获取当前用户Openid及注意事项 (六)微信公众号开发之扫码支付 (七)微信公众号开发之公众号支付 (八)微信公众号开发之...
  • 接着上次分享的服务器被动回复文本消息,这次分享的是图文消息(也叫文章消息),文本消息虽然可以处理大部分的业务需求,但美中不足的是消息过于死板不够活泼生动,为了丰富消息的内容和展现微信提供了图文消息供...
  • 最近遇到个需求,对方搞了个公众号,在上面发布了一些图文消息,他们想在子菜单里搞个第三方网页,点击进去能看到这个公众号发布的所有图文消息,我研究了下,具体实现如下: 0x00准备工作 根据公众平台技术文档所说...
  • 今天重点介绍一下微信公众号图文消息的群发功能的开发,当中的很多坑现在想起来还是会有点头大(我不得不吐槽一下官方的文档,有些不知道是我理解错了还是本身就有问题)。 首先需要介绍,服务号为了避免群发频率太...
  • 写这个方法肯定也是根据微信开发文档说明总结出获取的方法,首先先看微信开发文档给出的内容获取方法接口提示: 先给个链接地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738734 首先...
  • 创建微信回复的图文消息
  • 数据统计模块儿,图文分析数据接口(以getarticletotal接口为例) https://api.weixin.qq.com/datacube/getarticletotal?access_token=ACCESS_TOKEN 接口介绍: 该接口只有三个参数,access_token 是请求接口...
  • 微信开发第七篇发送素材(图文)信息 2015年08月31日 16:00:29 主沉浮 阅读数:6979 https://blog.csdn.net/u010773333/article/details/48135043 最近产品经理要做每天推送图文信息的功能,哎,还要超链接传递...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 1.编写添加图文方法addnews,将图文添加到数据库中用post方式获取到data的值,用foreach遍历数组,如果键为0则把数据(mpid,title,create_time)添加到数据表media_news中,根据数据表media_news_list与表media_...
  • 微信公众号群发图文消息,消息体包含图片
  • 公众号类型 测试号 测试号现在仅支持使用预览接口,并不能实现群发。 ...id=mp1481187827_i0l21截图】 ...前端是自己根据图文消息(Article)的格式设计的,Article的内容如下: 【图片来源:官方文...
  • 微信之拉取图文数据

    2019-08-07 05:26:42
    最近,由于业务需求需要拉取微信公众号上发布过的文章的阅读人数,阅读次数等数据,其中遇到一些问题,在此总结  注意点: 1、接口侧的公众号数据的数据库中仅存储了2014年12月1日之后的数据,将查询不到在此...
  • 本文提供了使用java代码,逐个获取图文内容中的图片,并上传图片和替换图文内容中的url(另附java模拟使用curl命令,用FORM表单方式上传一个图片方法)。//替换字符串中的src //ynr 图文内容 //index 从第几个字符...
1 2 3 4 5 ... 20
收藏数 6,789
精华内容 2,715
关键字:

微信开发 获取图文