• 1.对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地),以节省服务器资源(对于用户上传的临时素材,我们是不是...
    素材管理
    接口:
    /*
    临时素材几点注意: 
    1.对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地),以节省服务器资源(对于用户上传的临时素材,我们是不是得有事件来记录到表中??如果想下载用户上传的素材应该得这么做吧)
    2.type类型及限制:
    图片(image): 2M,支持JPG格式
       语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
       视频(video):10MB,支持MP4格式
       缩略图(thumb):64KB,支持JPG格式
    3.媒体文件在后台保存时间为3天,即3天后media_id失效。
    */


    1>新增临时素材 - (订阅号与服务号认证后均可用)
    api_url:
    https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
    参数:
    type - 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
    media = @imgUrl;
    返回值:
    {"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}// 区别于 "永久素材",返回了 "创建时间",我们可以定位素材的过期时间还剩多久。。


    2>获取临时素材 - (订阅号与服务号认证后均可用)
    api_url:
    https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID


    /*
    永久素材几点注意:
    1.永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,图片将被屏蔽)。
    2.图文消息素材和图片素材的上限为5000,其他类型为1000
    3.type类型及限制:
    图片(image): 2M,支持bmp/png/jpeg/jpg/gif格式
       语音(voice):5M,播放长度不超过60s,支持mp3/wma/wav/amr格式
       视频(video):20MB,支持rm,rmvb,wmv,avi,mpg,mpeg,mp4 格式
       缩略图(thumb):64KB,支持JPG格式
    */


    3>新增永久图文素材 - (订阅号与服务号认证后均可用)
    api_url:
    https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN
    参数:
    {
    articles : [
    {
          "title": 标题,
          "thumb_media_id": 图文消息的封面图片素材id(必须是永久mediaID),// 这个得注意下
          "author": 作者,
          "digest": 图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空,// 多图文,digest = ''
          "show_cover_pic": 是否显示封面,0为false,即不显示,1为true,即显示,
          "content": 图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS,// 注意这几个条件
          "content_source_url": 图文消息的原文地址,即点击“阅读原文”后的URL// 不填写,应该是没有 '阅读原文' 链接
    },
    {},
    ...
    ]
    }
    /*
    切记:
    1.在图文消息的具体内容中,微信将过滤外部的图片链接!!!!
    2.为了让外部图片,可以存在,我们得将外部图片,转换成微信内部图片,调用下面的接口:
    -------------------------------------------------------------
    上传图文消息内的图片获取URL - (订阅号与服务号认证后均可用)
    -- 本接口所上传的图片不占用公众号的素材库中图片数量的5000个的限制 - 切记!
    -- 图片仅支持jpg/png格式 - 切记!
    -- 大小必须在1MB以下 - 切记!
    api_url:
    https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
    参数:
    media = @imgUrl;
    返回值:
    {url : xxx}
    */


    4>新增其他(非图文)永久素材 - (订阅号与服务号认证后均可用)
    api_url:
    https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE
    参数:
    type - 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
    media = @imgUrl;
    /*
    对于视频素材,还需要填写2个参数:
    title - 视频素材的标题
    introduction - 视频素材的描述
    */
    返回值:
    {"media_id":"MEDIA_ID", "url": 'url地址'} // 新增的图片素材的图片URL(仅新增图片素材时会返回该字段)


    5>获取单个永久素材
    api_url:
    https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN
    参数:
    media_id - 要获取的素材的media_id
    返回值:
    分3类:
    1.图文
    2.视频
    {
    "title":TITLE,
    "description":DESCRIPTION,
    "down_url":DOWN_URL,
    }
    3.其他类型,返回的直接是内容,我们可以直接 file_put_contents() 写入到本地文件


    6>删除单个永久素材
    api_url:
    https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=ACCESS_TOKEN
    参数:
    media_id - 要删除的素材的media_id


    7>修改永久图文素材
    api_url:
    https://api.weixin.qq.com/cgi-bin/material/update_news?access_token=ACCESS_TOKEN
    参数:
    media_id // 要修改的图文消息的id
    index// 要更新的文章在图文消息中的位置(多图文消息时,此字段才有意义),第一篇为0
    /*
    注意点:
    1.只有永久图文素材,才能修改
    2.图文素材的修改,只能是对其中一条一条的条目进行修改,所以必须传入 'index',从0开始
    */


    8>获取素材总数
    api_url:
    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 // 图文总数量
    }


    9>获取素材列表
    api_url:
    https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
    参数:
    {
      "type":TYPE, // 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)
      "offset":OFFSET,// 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
      "count":COUNT // 返回素材的数量,取值在1到20之间 - 每次获取最多20条
    }
    返回值:
    详细看文档,这里提2个:
    "total_count": TOTAL_COUNT, // 该类型的素材的总数
     "item_count": ITEM_COUNT,// 本次调用获取的素材的数量
    展开全文
  • 开发微信公众号的时候遇到了很多细节的问题,不多测试只看文档真的没办法发现,这个就是我发现的问题,为何我调用微信端的图文消息上传api老是提示 40007错误,也就是无效的media_id,这里有两个细节。1是 上面的...

    开发微信公众号的时候遇到了很多细节的问题,不多测试只看文档真的没办法发现,这个就是我发现的问题,为何我调用微信端的图文消息上传api老是提示 40007错误,也就是无效的media_id,这里有两个细节。1是这里写图片描述
    上面的图片是调用的是微信接收消息群发接口的一个上传图文消息素材的api,这里必须使用的thumb_id是临时素材的media_id,如果你使用的是永久素材的media_id就会报错。而这个素材上传成功后是成为临时素材 ,因为可以查看素材库,上传成功后是找不到这个图文素材的。(强调:所以这里的thumb_id使用的必须是临时素材的media_id)。
    那么永久素材的media_id是用在哪里呢?自然是有提供一个永久的图文消息素材的api,这个是在素材接口里面的。下图可查找这里写图片描述
    细节2:这个thumb_id 需要的media_id的类型必须是thumb的,type有分为好几种这里写图片描述
    所以这个缩略图的图片素材的类型必选使用thumb,这点也要注意。
    这个问题网上找了好几个博客,结果都是一样的答案,所以提供一下我的理解。希望可以帮到大家。有问题可以互相讨论。

    展开全文
  • 微信群发多图文消息开发是子恒老师《子恒说微信开发》视频教程的第16部。详细讲解了用php开发微信群发图文消息。内容包含图文消息前端页面,一个页面插入多个百度UEditor,群发多图文,查询和删除图文消息等等。欢迎...
  • 流程为,前台表单上传->后台数据判断->上传图片素材[获得图片id]->上传图文素材->返回素材ID 注意,如果提示空数据,注意检查json提交的表单数据,我就是少输入了一个array导致一直空数据。 警告,该接口非人类的...

    以下基于thinkphp 编写,用的时候可稍微修改即可。流程为,前台表单上传->后台数据判断->上传图片素材[获得图片id]->上传图文素材->返回素材ID

    注意,如果提示空数据,注意检查json提交的表单数据,我就是少输入了一个array导致一直空数据。

    警告,该接口非人类的设计为一天只能调用10次,也就是不管你是否成功一天只能有十次新增图文素材的机会。删除图文消息也是一天只有10次。

    //新增图文素材
        public function add(){
            $access_token=$this->getAccessToken();  
            if (IS_POST){
                //首先需单独上传永久图片(获取图片ID/URL)
                if(empty($_POST['thumb_media_id'])){
                    $this->error('图片不能为空');
                };
                $filepath=$_SERVER['DOCUMENT_ROOT'].$_POST['thumb_media_id']; //暂时默认前台输入的为根目录路径
                $filedata = array("media"  => "@".$filepath);
    
                $url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$access_token;
                $filedata = array(
                    "media"  => "@".$filepath,
                    "type"  =>  "image",
                    );
                $result = $this->https_request($url, $filedata);
                $result = json_decode($result, true);
                $result['media_id']=$result['media_id'];
    
    
                //处理数据防止空数据出现
                $data['title']=$_POST['title'];   
                $data['thumb_media_id']=$result['media_id']; 
                $data['author']=$_POST['author'];  
                $data['digest']=$_POST['digest'];   
                $data['show_cover_pic']=(int)$_POST['show_cover_pic'];   
                $data['content']=$_POST['content'];   
                $data['content_source_url']=$_POST['content_source_url'];   
                foreach ($data as $value){
                    if($value==""){
                       $this->error('带 <font color="red">*</font> 的必须填');
                    }  
                }
    
                
                
    
                //新增永久图文素材
                $url="https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=".$access_token;
                $data = array(
                    "articles"=>array($data),
                    );//这里一定要注意
                $data = json_encode($data,true);  
                $result = $this->https_request($url,$data);
                $result = json_decode($result, true);
                dump($result); //返回 "media_id":MEDIA_ID QVqFyY4hY4_xpPf_lO2OG1fIslTDY4wzkgg72IOeoDo
                exit();
            }
            $this->display();
        }
    //https请求(支持GET和POST)
        protected function https_request($url, $data = null)
        {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
            if (!empty($data)){
                curl_setopt($curl, CURLOPT_POST, 1);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            }
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($curl);
            curl_close($curl);
            return $output;
        }


    展开全文
  • 最近业务需要,公司把微信开发模式改为开发模式,因此原来的默认的素材模式就不能用了,因此要独立开发一个管理网站,一套对应微信服务器的接口. 其原理是 Created with Raphaël 2.2.0微信服务器发起请求接收消息到我们...

    背景

    最近业务需要,公司把微信开发模式改为开发模式,因此原来的默认的素材模式就不能用了,因此要独立开发一个管理网站,一套对应微信服务器的接口.

    其原理是

    Created with Raphaël 2.2.0微信服务器发起请求接收消息到我们的服务器,判断是什么要求发送符合格式要求的参数(消息)给微信服务器

    反过来我们主动向微信发消息,比如修改公众号的文章,过程就相反

    图文素材上传

    一般来说都会用富文本编辑器来编辑网页文章,这里我使用的是百度编辑器,百度编辑器的图片会在上传后,
    生成img标签插入在文本,也就是常见的html混编,一个参数是图片的地址这个和服务器网站有关,一个是alt默认是用上传图片的名字.

    <img src="我是地址" alt="文件名">
    

    微信的图文素材要求图片必须是来自微信服务器,如果是外部链接图片,必须要经过微信的’转码’(也就是换地址)
    如果一个文章或者素材里面有很多图片,总不能一个一个手动操作,所以这里我假设,前端只穿了一堆h5代码,我们要用正则表达式取出所有的img标签,替换src,再顺序放回. 代码如下

    $content1='wqdqwdsmoij ia45614561 
        <img src="www.163.com" alt="1.jpg" /> 
        <img src="www.164.com" alt="2.jpg" />
        <img src="www.165.com" alt="3.jpg" />
        <img src="www.166.com" alt="4.jpg" />
        <img src="www.167.com" alt="5.jpg" />
        <img src="www.168.com" alt="6.jpg" />
        <img src="www.169.com" alt="7.jpg" />';
    echo "替换前";    
    var_dump($content1);
    echo '<br>'."替换后";
    $tt = smg($content1);
    var_dump($tt);
    function smg($content1){
    
        //1.取出所有的<img>,用alt=>src,组成数组
        $pattern='/<img((?!src).)*src[\s]*=[\s]*[\'"](?<src>[^\'"]*)[\'"]/i';
        preg_match_all($pattern,$content1,$match);
    
        preg_match_all("/<img.*?alt=[\"|\'](.*?)[\"|\'].*?>/",$content1,$m);
    
        $aa = array_combine($m[1],$match[2]);
    	
        // 2.foreach数组,调用微信接口upImgUrl(),这个函数需要自己写,这里只是举例
            function ousideImg($data){    
                return '"'.'www.'.$data.'.com'.'"';
            }
            foreach ($aa as $key => $val) {
                $aa[$key] = ousideImg($key);
            }
        //3.重新放回文章中,foreach逐条放回
        $text     = $content1;
        foreach ($aa as $key => $val) {
            $alt = $key;
            $src = $val;
            // echo $src;
            $regImg = '/<img.*?alt=[\"|\']'."$alt".'[\"|\'].*?>/';
            preg_match($regImg,$text,$matchAll);
            $a = preg_replace('/src=".*?"/',"src=$src",$matchAll[0]);
            $b = preg_replace($regImg,$a,$text);
            $text=&$b;
        }
        return $text;    
    }
    
    展开全文
  • 微信开发第七篇发送素材图文)信息 2015年08月31日 16:00:29 主沉浮 阅读数:6979 https://blog.csdn.net/u010773333/article/details/48135043 最近产品经理要做每天推送图文信息的功能,哎,还要超链接传递...

    微信开发第七篇发送素材(图文)信息

    2015年08月31日 16:00:29 主沉浮 阅读数:6979

    https://blog.csdn.net/u010773333/article/details/48135043

    最近产品经理要做每天推送图文信息的功能,哎,还要超链接传递不同的参数,苦逼呀。。网上查了一些资料,下面讲解一下群发素材

    要群发素材,首先要先获得素材,素材都是以图片和文字的形式推送给用户的,所以要首先获得图片和文字

    微信的上传媒体接口:https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

    可以用来上传图片,上传成功返回:{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789},其中media_id就是图片在微信服务器的标识。

    上传方法:

           /// <summary> 
            /// 上传媒体返回媒体ID 
            /// </summary> 
            public static string UploadMedia(string access_token, string type, string path)
            {
                // 设置参数 
                string url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", access_token, type);
                return HttpRequestUtil.HttpUploadFile(url, path);
            }

    第二步:拼接图文消息素材Json字符串,其中msg就是上述的微信服务器传回来的媒体ID

           /// <summary> 
            /// 拼接图文消息素材Json字符串 
            /// </summary> 
            public static string GetArticlesJsonStr(string access_token,string msg)
            {
                StringBuilder sbArticlesJson = new StringBuilder();

                 sbArticlesJson.Append("{\"articles\":[");
                    //string media_id = Tools.GetJsonValue(msg, "media_id");
                   // string media_id = (msg,"media_id");
                    sbArticlesJson.Append("{");
                    // sbArticlesJson.Append();
                    sbArticlesJson.Append("\"thumb_media_id\":\"" + msg + "\",");
                    sbArticlesJson.Append("\"author\":\"" + "王华涛" + "\",");
                    sbArticlesJson.Append("\"title\":\"" + "作业已经完成" + "\",");
                    sbArticlesJson.Append("\"content_source_url\":\"" + "http://。。。。" + "\",");
                    sbArticlesJson.Append("\"content\":\"" + "作业信息" + "\",");
                    sbArticlesJson.Append("\"digest\":\"" +"您孩子的作业已经完成" + "\",");
                    sbArticlesJson.Append("\"show_cover_pic\":\"1\"}");
                    sbArticlesJson.Append("]}");

                return sbArticlesJson.ToString();
            } 

    第三步:上传图文消息素材,其中postData就是拼接图文消息素材Json字符串,调用微信接口上传之后获得media_id 

            /// <summary> 
            /// 上传图文消息素材返回media_id 
            /// </summary> 
            public static string UploadNews(string access_token, string postData)
            {
                return HttpRequestUtil.PostUrl(string.Format("https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token={0}", access_token), postData);
            }

    第四步:图文消息json,添加发送用户openid

          /// <summary> 
            /// 图文消息json 
            /// </summary> 
            public static string CreateNewsJson(string media_id, List<string> openids)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("{\"touser\":[\"");

                foreach(string  openid in openids)     

                {

                     sb.Append(openid);
                    sb.Append("\",\"");

                }
                sb.Append("\"],");
                sb.Append("\"msgtype\":\"mpnews\",");
                sb.Append("\"mpnews\":{\"media_id\":\"" + media_id + "\"}");
                sb.Append("}");
                return sb.ToString();
            }
    第五步:调用微信发送素材接口,根据OpenID列表群发素材信息

            /// <summary> 
            /// 根据OpenID列表群发 
            /// </summary> 
            public static string Send(string access_token, string postData)
            {
                return HttpRequestUtil.PostUrl(string.Format("https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token={0}", access_token), postData);
            } 
     

    展开全文
  • php 微信新增永久素材

    2018-08-13 09:34:49
    微信的新增永久素材,最重要的是图文素材,基本流程是如下:   获取access_token; 上传封面素材,获取永久素材的media_id,可以是images或者thumb类型都可以 上传图文中的图片,获取图片的腾讯域名的url 上传...
  • 调用微信公众平台新增永久图文素材接口时,由于微信会过滤外部的图片链接,所以开发者需要提前将图片上传获得URL,放在图文内容中使用。本文提供了使用java代码,逐个获取图文内容中的图片,并上传图片和替换图文...
  • 关于新增图文素材是的content里带html应该怎么写。下面的json我是调用获取素材返回来的,可以作为参考。 2.why为什么要有这个参考 其实如果可以直接用秀米等工具来编辑公众号素材,那当然是最方便,因为都是图形...
  • 上一篇文章:nodejs微信公众号开发——4.自动回复各种消息,我们实现了被动回复文字和图文,回复图片失败,因为需要先获取通过素材管理接口上传多媒体文件而得到的MediaId,这一节们就来实现素材管理的接口。可参看...
  • 你在微信公众号文章中, 看到丰富多彩的内容, 像图片,视频,语音这些类型的素材。 ...这些素材我们不能从你的web服务器直接使用, ...而是要把它们上传到微信...公众号开发素材管理效果演示视频教程在线观看 h
  • ASP.NET微信开发包括图文上传菜单上传 自带数据库以及说明文档 消息群发等微信功能实现
  • 最新在做微信的多图文管理,自己写了一个模仿微信的多图文的界面,有需要的可以参取参考参考,改改就能用哈! 里面我以及集成了ajax 上传文件的插件了,不想要的可以自己换,截图如下: 代码地址
  • 群发消息太重要了,公众号管理员需要定期通过公众号群发一些消息,用户通过推送的消息可以定期了解公众号的最新信息。... 使用对用户标签的群发,或对 OpenID 列表的群发,将图文消息群发出去,群发时微信会进行...
  • 1.新增临时素材:公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和...
  • 基于 laravel框架的微信公众号的自动回复功能。主要是图文消息和文本类型
  • 写这个方法肯定也是根据微信开发文档说明总结出获取的方法,首先先看微信开发文档给出的内容获取方法接口提示: 先给个链接地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738734 首先...
  • 看了一下微信开发文档,发现微信对于上传永久素材这个接口,给出的文档太过简略,而且提供的样例也不是代码的方式,只给了一个curl的命令,用法倒是简单,但是用JAVA代码去掉用curl命令还是有诸多的不方便的。...
  • { "articles": [{ "title": TITLE, "thumb_media_id": THUMB_MEDIA_ID, "author": AUTHOR, "digest": DIGEST, "show_cover_pic": SHOW_COVER_PIC(0 / 1), "content": C
  • 2、获取该图片,上传到微信服务器 注:上传成功后返回 {"url":"http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/0GoV8ibwUrrjcJ5iaradG3k13hbXXM2OLIV3iaFUb9magKUvuvJ3kcwALnvPDI9RBgWWiaUPOAxL5oX2...
1 2 3 4 5 ... 20
收藏数 1,503
精华内容 601