通用接口-视频上传
公共API
视频上传
帮助中心
联系我们

视频上传API

最新更新时间:2019.10.23 版本说明

部分微信支付业务指定商户需要使用视频上传 API来上报视频信息,从而获得必传参数的值:视频MediaID 。

接口说明

适用对象:直连商户 服务商 渠道商 电商平台

请求URL::https://api.mch.weixin.qq.com/v3/merchant/media/video_upload

请求主体类型:multipart/form-data

请求方式:POST

接口规则:https://wechatpay-api.gitbook.io/wechatpay-api-v3


path 指该参数需在请求URL传参

query 指该参数需在请求URL传参

body 指该参数需在请求JSON传参


请求参数

参数名 变量 类型[长度限制] 必填 描述
视频文件 file message body 将媒体视频进行二进制转换,得到的媒体视频二进制内容,在请求body中上传此二进制内容。媒体视频只支持avi、wmv、mpeg、mp4、mov、mkv、flv、f4v、m4v、rmvb格式,文件大小不能超过5M。
示例值:pic1
+媒体文件元信息 meta Object body 媒体文件元信息,使用json表示,包含两个对象:filename、sha256。
参数名 变量 类型[长度限制] 必填 描述
文件名称 filename string[1,128] 商户上传的媒体视频的名称,商户自定义,必须以avi、wmv、mpeg、mp4、mov、mkv、flv、f4v、m4v、rmvb为后缀。
示例值:file_test.mp4
文件摘要 sha256 string[1,64] 视频文件的文件摘要,即对视频文件的二进制内容进行sha256计算得到的值。
示例值:hjkahkjsjkfsjk78687dhjahdajhk

各语言请求示例

    
String filePath = "/your/home/hellokitty.avi";
URI uri = new URI("https://api.mch.weixin.qq.com/v3/merchant/media/video_upload");
File file = new File(filePath);

try (FileInputStream ins1 = new FileInputStream(file)) { 
  String sha256 = DigestUtils.sha256Hex(ins1);
  try (InputStream ins2 = new FileInputStream(file)) {
    HttpPost request = new WechatPayUploadHttpPost.Builder(uri)
        .withImage(file.getName(), sha256, ins2)
        .build();
    CloseableHttpResponse response1 = httpClient.execute(request);
  }
}
    
    
// 参考上述指引说明,并引入 `MediaUtil` 正常初始化,无额外条件
use WechatPay\GuzzleMiddleware\Util\MediaUtil;
// 实例化一个媒体文件流,注意文件后缀名需符合接口要求
$media = new MediaUtil('/your/file/path/with.extension');

// 正常使用Guzzle发起API请求
try {
    $resp = $client->request('POST', 'https://api.mch.weixin.qq.com/v3/[merchant/media/video_upload|marketing/favor/media/image-upload]', [
        'body'    => $media->getStream(),
        'headers' => [
            'Accept'       => 'application/json',
            'content-type' => $media->getContentType(),
        ]
    ]);
    // POST 语法糖
    $resp = $client->post('merchant/media/upload', [
        'body'    => $media->getStream(),
        'headers' => [
            'Accept'       => 'application/json',
            'content-type' => $media->getContentType(),
        ]
    ]);
    echo $resp->getStatusCode().' '.$resp->getReasonPhrase()."\n";
    echo $resp->getBody()."\n";
} catch (Exception $e) {
    echo $e->getMessage()."\n";
    if ($e->hasResponse()) {
        echo $e->getResponse()->getStatusCode().' '.$e->getResponse()->getReasonPhrase()."\n";
        echo $e->getResponse()->getBody();
    }
    return;
}
    

JAVA详细请求示例详见:wechatpay-apache-httpclient

PHP详细请求示例详见:wechatpay-guzzle-middleware

返回参数

参数名 变量 类型[长度限制] 必填 描述
媒体文件标识 Id media_id string[1,512] 微信返回的媒体文件标识Id。
示例值:6uqyGjGrCf2GtyXP8bxrbuH9-aAoTjH-rKeSl3Lf4_So6kdkQu4w8BYVP3bzLtvR38lxt4PjtCDXsQpzqge_hQEovHzOhsLleGFQVRF-U_0

返回示例


{
"media_id": "H1ihR9JUtVj-J7CJqBUY5ZOrG_Je75H-rKhTG7FUmg9sxNTbRN54dFiUHnhg
rBQ6EKeHoGcHTJMHn5TAuLVjHUQDBInSWXcIHYXOeRa2OHA"
}
                                

    http://2323weixin.qq.com
                                

请求步骤

视频上传步骤:

1.创建一个POST的方法请求/video_upload URI


例如: POST https://api.mch.weixin.qq.com/v3/merchant/media/video_upload HTTP/1.1


2.将文件的数据添加到请求主体:


2.1 视频文件file参数的获取方式说明:
媒体视频二进制内容,放在请求http的body中。


2.2 媒体文件元信息meta参数的获取方式说明:
媒体文件元信息,使用json表示,包含两个对象:filename、sha256。
● filename参数获取方式说明:
商户上传的媒体视频的名称,商户自定义,必须以avi、wmv、mpeg、mp4、mov、mkv、flv、f4v、m4v、rmvb为后缀。
● sha256参数获取方式说明:
视频文件的文件摘要,即对视频文件的二进制内容进行sha256计算得到的值。


2.3 签名计算说明:
https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/qian-ming-sheng-cheng
参与签名计算的请求主体为meta的json串:
{ "filename": "filea.mp4", "sha256": "hjkahkjsjkfsjk78687dhjahdajhk" }


待签名串示例:

POST
/v3/merchant/media/video_upload
1566987169           //时间戳
12ced2db6f0193dda91ba86224ea1cd8   //随机数
{"filename":" file_test.mp4 ","sha256":" hjkahkjsjkfsjk78687dhjahdajhk "}

3.添加HTTP头:


Content-Type:multipart/form-data.设置为要上载的对象的MIME媒体类型。
Authorization: WECHATPAY2-SHA256-RSA2048 mchid="1900231671",nonce_str="PCHK6HSOEDTACETP6P3AL7DWPHTBKIAT",
timestamp="1567067659",serial_no="1FB89742D19F2BD30B69948D16DECA0FCB4481EB",
signature="PB6M7+3JL7TSCl5zqD1sdWVypOIEQsD4dgOU+vPiVM6GMRo2qYSWKf8u46i9ZJFhyZTBdZ7SFR+BjDZh689hFgN8LZL+QWTvq3cse/FEUFYyOLN7L/2IZX4GA4cWInuJ2MpOhZRMpm+emrcn42gTMKAPNQ7dBLO7ux6MoSuQp69PW+p1ogmkER68exTVUXYqA5P3vITlWNr++RDy2+ExvB7qVISOKW0vBkxUxN9e7hwUbDwGln170ZXomoO1KpQSbw3f1uWUCx/IlWJhJIun7rUMtVT+kfijNUqcILtSfE4hWKKVaZn9j5CX8M7aKbbDOFy3SvbSJ3WQgRnRbgog5w=="
Content-Type: multipart/form-data;boundary=boundary

4.添加body:


// 以下为body的内容
--boundary  // boundary为商户自定义的一个字符串
Content-Disposition: form-data; name="meta";
Content-Type: application/json
//此处必须有一个空行
{ "filename": "file_test.mp4", "sha256": " hjkahkjsjkfsjk78687dhjahdajhk " }
--boundary
Content-Disposition: form-data; name="file"; filename="file_test.mp4";
Content-Type: video/mp4
//此处必须有一个空行
pic1  //pic1即为媒体视频的二进制内容
--boundary--

说明:请求包体每行结尾都需要包含\r\n(空行也需要)


5.发送请求


POST /v3/merchant/media/video_upload HTTP/1.1
Host: api.mch.weixin.qq.com
Authorization: WECHATPAY2-SHA256-RSA2048 mchid="1900231671",nonce_str="PCHK6HSOEDTACETP6P3AL7DWPHTBKIAT",timestamp="1567067659",serial_no="1FB89742D19F2BD30B69948D16DECA0FCB4481EB",signature="PB6M7+3JL7TSCl5zqD1sdWVypOIEQsD4dgOU+vPiVM6GMRo2qYSWKf8u46i9ZJFhyZTBdZ7SFR+BjDZh689hFgN8LZL+QWTvq3cse/FEUFYyOLN7L/2IZX4GA4cWInuJ2MpOhZRMpm+emrcn42gTMKAPNQ7dBLO7ux6MoSuQp69PW+p1ogmkER68exTVUXYqA5P3vITlWNr++RDy2+ExvB7qVISOKW0vBkxUxN9e7hwUbDwGln170ZXomoO1KpQSbw3f1uWUCx/IlWJhJIun7rUMtVT+kfijNUqcILtSfE4hWKKVaZn9j5CX8M7aKbbDOFy3SvbSJ3WQgRnRbgog5w=="
	Content-Type: multipart/form-data;boundary=boundary

--boundary  
Content-Disposition: form-data; name="meta";
Content-Type: application/json

{ "filename": "file_test.mp4", "sha256": " hjkahkjsjkfsjk78687dhjahdajhk " }
--boundary
Content-Disposition: form-data; name="file"; filename="file_test.mp4";
Content-Type: video/mp4

pic1
--boundary--

错误码公共错误码

状态码 错误码 描述 解决方案
500 SYSTEMERROR 系统错误 系统异常,请使用相同参数稍后重新调用
SYSTEMERROR 文件系统错误,请稍后重试 文件系统异常,请使用相同参数稍后重新调用
400 PARAM_ERROR 视频文件名称不正确,请检查后重新提交 视频文件名称不正确,只支持avi、wmv、mpeg、mp4、mov、mkv、flv、f4v、m4v、rmvb,请使用正确视频文件重新调用
PARAM_ERROR 文件二进制内容不是视频,请检查后重新提交 上传文件二进制内容头部不正确,只支持avi、wmv、mpeg、mp4、mov、mkv、flv、f4v、m4v、rmvb,请使用正确视频文件重新调用
PARAM_ERROR 视频sha256值有误,请检查后重新提交 视频sha256值计算有误,请检查算法,重新计算后提交
PARAM_ERROR 文件大小不能超过5M,请检查后重新提交 商户更换文件或者对视频进行压缩后,重新调用
PARAM_ERROR 文件为空,请检查后重新提交 商户更换文件后,重新调用
429 FREQUENCY_LIMIT_EXCEED 操作过快,请稍后重试 请商户降低每秒调用频率
FREQUENCY_LIMIT_EXCEED 当天上传文件数已达上限 请商户降低每天调用频率
403 NO_AUTH 商户权限异常 请确认是否已经开通相关权限

版本说明

关闭
V1.0
2019.10.23
1. 视频上传接口上线

技术咨询

反馈有奖