|
- <?php
- namespace WeChat;
- if (!defined('DEDEINC')) exit('dedebiz');
- use WeChat\Contracts\BasicWeChat;
- use WeChat\Contracts\Tools;
- use WeChat\Exceptions\InvalidResponseException;
-
- class Media extends BasicWeChat
- {
-
-
- public function add($filename, $type = 'image')
- {
- if (!in_array($type, ['image', 'voice', 'video', 'thumb'])) {
- throw new InvalidResponseException('Invalid Media Type.', '0');
- }
- $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type={$type}";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- return $this->httpPostForJson($url, ['media' => Tools::createCurlFile($filename)], false);
- }
-
-
- public function get($media_id, $outType = null)
- {
- $url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id={$media_id}";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- $result = Tools::get($url);
- if (is_array($json = json_decode($result, true))) {
- if (!$this->isTry && isset($json['errcode']) && in_array($json['errcode'], ['40014', '40001', '41001', '42001'])) {
- [$this->delAccessToken(), $this->isTry = true];
- return call_user_func_array([$this, $this->currentMethod['method']], $this->currentMethod['arguments']);
- }
- return Tools::json2arr($result);
- }
- return is_null($outType) ? $result : $outType($result);
- }
-
-
- public function addNews($data)
- {
- $url = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- return $this->httpPostForJson($url, $data);
- }
-
-
- public function updateNews($media_id, $index, $news)
- {
- $data = ['media_id' => $media_id, 'index' => $index, 'articles' => $news];
- $url = "https://api.weixin.qq.com/cgi-bin/material/update_news?access_token=ACCESS_TOKEN";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- return $this->httpPostForJson($url, $data);
- }
-
-
- public function uploadImg($filename)
- {
- $url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- return $this->httpPostForJson($url, ['media' => Tools::createCurlFile($filename)], false);
- }
-
-
- public function addMaterial($filename, $type = 'image', $description = [])
- {
- if (!in_array($type, ['image', 'voice', 'video', 'thumb'])) {
- throw new InvalidResponseException('Invalid Media Type.', '0');
- }
- $url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type={$type}";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- return $this->httpPostForJson($url, ['media' => Tools::createCurlFile($filename), 'description' => Tools::arr2json($description)], false);
- }
-
-
- public function getMaterial($media_id, $outType = null)
- {
- $url = "https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- $result = Tools::post($url, ['media_id' => $media_id]);
- if (is_array($json = json_decode($result, true))) {
- if (!$this->isTry && isset($json['errcode']) && in_array($json['errcode'], ['40014', '40001', '41001', '42001'])) {
- [$this->delAccessToken(), $this->isTry = true];
- return call_user_func_array([$this, $this->currentMethod['method']], $this->currentMethod['arguments']);
- }
- return Tools::json2arr($result);
- }
- return is_null($outType) ? $result : $outType($result);
- }
-
-
- public function delMaterial($media_id)
- {
- $url = "https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=ACCESS_TOKEN";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- return $this->httpPostForJson($url, ['media_id' => $media_id]);
- }
-
-
- public function getMaterialCount()
- {
- $url = "https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=ACCESS_TOKEN";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- return $this->httpGetForJson($url);
- }
-
-
- public function batchGetMaterial($type = 'image', $offset = 0, $count = 20)
- {
- if (!in_array($type, ['image', 'voice', 'video', 'news'])) {
- throw new InvalidResponseException('Invalid Media Type.', '0');
- }
- $url = "https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN";
- $this->registerApi($url, __FUNCTION__, func_get_args());
- return $this->httpPostForJson($url, ['type' => $type, 'offset' => $offset, 'count' => $count]);
- }
- }
- ?>
|