微信上传卡券图片素材接口 41005 错误解决

错误提示

{"errcode":41005,errms":'media data missing hint: kBriFa09133954) rid: 64f59081-119072e1-158174b61'}

接口说明

2.3.1 上传图片接口 (上传永久素材接口)

开发者需调用该接口上传商户图标至微信服务器,获取相应logo_url/icon_list/image_url,用于卡券创建。

接口调用请求说明

HTTP请求方式: POST/FROMURL:https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN

参数说明

参数是否必须说明
buffer文件的数据流
access_token调用接口凭证

请求数据

调用示例(使用curl命令,用FORM表单方式上传一个图片):curl –Fbuffer=@test.jpg

问题解决

请求数据接口示例过于简单,有点摸不着头绪,试了多次,终于找到正确的接口传参方式,记录如下:

function uploadImg()
{
    $app_id = @$_REQUEST['app_id'] ?? '';
    $img_url = @$_REQUEST['img_url'] ?? 'image/logo_all.jpg';
    if (!$app_id) {
       return $this->renderError('缺少参数');
    }
    $app = getMiniProgram($app_id);
    $api = $app->getClient();

    $pre_url = '/www/wwwroot/web/public/';
    $buffer = $pre_url. $img_url;

    $response = $api->httpUpload('cgi-bin/media/uploadimg', ['buffer' => $buffer]);
    return $this->renderSuccess('',$response);

}

public function getClient () {
    return new BaseClient($this);
}

use EasyWeChat\Kernel\BaseClient;

public function httpUpload(string $url, array $files = [], array $form = [], array $query = [])
{
     $multipart = [];

     foreach ($files as $name => $path) {
         $multipart[] = [
            'name' => $name,
            'contents' => fopen($path, 'r'),
         ];
     }

     foreach ($form as $name => $contents) {
         $multipart[] = compact('name', 'contents');
     }

     return $this->request($url, 'POST', ['query' => $query, 'multipart' => $multipart, 'connect_timeout' => 30, 'timeout' => 30, 'read_timeout' => 30]);
}

用 EasyWeChat 库自带的 httpUpload 方法 进行图片文件流的参数设置,方便快捷。

POST的四种传参方式:四种常见的 POST 提交数据方式 | JerryQu 的小站

1)application/x-www-form-urlencoded
2)multipart/form-data

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA

------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"

title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png

PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--


3)application/json
4)text/xml

本接口调用使用的是第二种 2)multipart/form-data 传参方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信卡券API源码是指微信官方提供的用于开发者集成在自己的应用或网站中使用的代码库。通过使用这些源码,开发者可以实现在微信平台上创建和管理卡券、发放和核销卡券、查询卡券信息等功能。 微信卡券API源码主要包含了与卡券相关的前后端代码和接口文档。前端代码负责展示卡券、用户领取和使用卡券的界面,以及与后端进行数据交互。后端代码则负责处理卡券相关的业务逻辑,包括创建和修改卡券、发放和核销卡券、查询卡券信息等。 通过使用微信卡券API源码,开发者可以根据自己的需求进行二次开发和定制,实现与自己应用或网站的业务逻辑相匹配的卡券功能。开发者可以根据微信提供的接口文档了解源码中提供的接口和参数,根据需求进行相应的调用和调试。 微信卡券API源码的使用需要开发者具备一定的编程基础和对微信开发相关知识的了解。同时,开发者还需要在微信公众平台上注册开发者账号,并进行相关的配置和认证。在实际使用中,开发者还需要结合自己的应用场景和需求,进行相应的接口调用和业务逻辑的实现。 总之,微信卡券API源码是一个帮助开发者实现卡券功能的代码库,通过使用源码可以实现在微信平台上创建、管理和使用卡券的功能。开发者可以根据自己的需求进行二次开发和定制,实现与自己应用或网站的业务逻辑相匹配的卡券功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值