首页 > 开发 > PHP > 正文

详解使用php调用微信接口上传永久素材

2024-05-04 22:48:08
字体:
来源:转载
供稿:网友

功能需求

公司新开的公众号需要将公司平台现在的所有精品文章都导入,手动导入会有很多的工作量,所以采用自动化同步文章的方式来达到效果

开发说明

微信open api提供了新增永久素材的接口,本次功能是基于这个接口进行数据同步的

使用到的接口

    获取永久素材列表接口:material/batchget_material 新增永久素材接口:material/add_news 新增媒体文件接口:material/add_material 图文类型 单图文(要求有默认的封面,需要提前上传到微信公众号后台)

环境要求

php版本:5.5以下(因为下面代码中的上传媒体文件必须要求在此环境,否则会调用微信接口失败)

开发流程

1、从公司平台获取所有的文章列表
2、遍历文章列表,查看文章是否有图片附件,若有进行第三步,否则进行第四步
3、检测所有的附件,取出第一个图片附件,并调用新增媒体文件接口上传图片获得返回后的media_id
4、调用素材列表接口获取默认的封面图片,并从中得到的数据中获取media_id
5、根据返回获取到的media_id开始调用上传图文接口上传素材
6、记录返回信息

接口设计

获取微信素材列表接口

此接口是用于获取默认的图片media_id同步平台数据接口

此接口是用户同步我们自己的文章数据到微信功能实现

接口常量

private $app_id = 'wx189ae9fa8816b131';private $app_secret = '36f5f430c591acbae3505fe877733283';const API_URL_PREFIX = 'https://api.weixin.qq.com/cgi-bin';const MEDIA_FOREVER_UPLOAD_URL = '/material/add_material?';const MEDIA_FOREVER_NEWS_UPLOAD_URL = '/material/add_news?';const MEDIA_FOREVER_NEWS_UPDATE_URL = '/material/update_news?';const MEDIA_FOREVER_GET_URL = '/material/get_material?';const MEDIA_FOREVER_DEL_URL = '/material/del_material?';const MEDIA_FOREVER_COUNT_URL = '/material/get_materialcount?';const MEDIA_FOREVER_BATCHGET_URL = '/material/batchget_material?';

获取微信素材列表接口

action接口方法

说明:该方法为此接口的入口方法

调用方式:http://${domain}/weixin/get_articles/

 /**   * 获取图片素材接口   */  public function get_articles_action(){   $token = $this->get_access_token();   $list = $this->getForeverList($token,'image',0,20);   echo json_encode($list);  }  get_access_token方法    private function get_access_token() {   $access_token = AWS_APP::cache()->get('access_token');   if(!$access_token){    error_log('get access_token from weixin ');    $appId = $this->app_id;    $appSecret = $this->app_secret;    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appId&secret=$appSecret";    $res = json_decode($this -> httpGet($url));    $access_token = $res -> access_token;    AWS_APP::cache()->set('access_token',$access_token,time()+3600);   }else{    error_log('get access_token from cache ');   }   error_log('access_token is :'.$access_token);   return $access_token;  }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表