最新更新时间:2020.09.02 版本说明
商户上传反馈图片的接口。 将媒体图片进行二进制转换,得到的媒体图片二进制内容,在请求body中上传此二进制内容。 媒体图片只支持jpg、png、bmp格式,文件大小不能超过2M。
1.创建一个POST的方法请求/upload URI
例如: POST https://api.mch.weixin.qq.com/v3/merchant-service/images/upload HTTP/1.1
2.将文件的数据添加到请求主体
2.1 图片文件file参数的获取方式说明:
媒体图片二进制内容,放在请求http的body中。
2.2 媒体文件元信息meta参数的获取方式说明:
媒体文件元信息,使用json表示,包含两个对象:filename、sha256。
● filename参数获取方式说明:
商户上传的媒体图片的名称,商户自定义,必须以jpg、png、bmp为后缀。
● sha256参数获取方式说明:
图片文件的文件摘要,即对图片文件的二进制内容进行sha256计算得到的值。
2.3 签名计算说明:
签名生成
参与签名计算的请求主体为meta的json串:
{ "filename": "filea.jpg", "sha256": "hjkahkjsjkfsjk78687dhjahdajhk" }
待签名串示例:
POST
/v3/merchant-service/images/upload
1566987169 //时间戳
12ced2db6f0193dda91ba86224ea1cd8 //随机数
{"filename":"filea.jpg","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+BjDZh6
89hFgN8LZL+QWTvq3cse/FEUFYyOLN7L/2IZX4GA4cWInuJ2MpOhZRMpm+emrcn42gTMKAPNQ7dBLO7ux6MoSuQp69
PW+p1ogmkER68exTVUXYqA5P3vITlWNr++RDy2+ExvB7qVISOKW0vBkxUxN9e7hwUbDwGln170ZXomoO1KpQSbw3f1u
WUCx/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": "filea.jpg", "sha256": "hjkahkjsjkfsjk78687dhjahdajhk" }
--boundary
Content-Disposition: form-data; name="file"; filename="filea.jpg";
Content-Type: image/jpg
//此处必须有一个空行
pic1 //pic1即为媒体图片的二进制内容
--boundary--
说明:请求包体每行结尾都需要包含\r\n(空行也需要)。
5.发送请求
POST /v3/merchant-service/images/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+vPiVM6GMRo2qYSWKf8u46i9ZJFhyZTBdZ7
SFR+BjDZh689hFgN8LZL+QWTvq3cse/FEUFYyOLN7L/2IZX4GA4cWInuJ2MpOhZRMpm+emrcn42gTMKAPN
Q7dBLO7ux6MoSuQp69PW+p1ogmkER68exTVUXYqA5P3vITlWNr++RDy2+ExvB7qVISOKW0vBkxUxN9e
7hwUbDwGln170ZXomoO1KpQSbw3f1uWUCx/IlWJhJIun7rUMtVT+kfijNUqcILtSfE4hWKKVaZn9j5CX8M
7aKbbDOFy3SvbSJ3WQgRnRbgog5w=="
Content-Type: multipart/form-data;boundary=boundary
--boundary
Content-Disposition: form-data; name="meta";
Content-Type: application/json
{ "filename": "filea.jpg", "sha256": "hjkahkjsjkfsjk78687dhjahdajhk" }
--boundary
Content-Disposition: form-data; name="file"; filename="filea.jpg";
Content-Type: image/jpg
pic1
--boundary--
适用对象:直连商户
请求URL:https://api.mch.weixin.qq.com/v3/merchant-service/images/upload
请求主体类型:multipart/form-data
请求方式:POST
path 指该参数为路径参数
query 指该参数需在请求URL传参
body 指该参数需在请求JSON传参
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
图片文件 | file | message | 是 | body 将媒体图片进行二进制转换,得到的媒体图片二进制内容,在请求body中上传此二进制内容。媒体图片只支持jpg、png、bmp格式,文件大小不能超过2M。 示例值:pic1 |
+媒体文件元信息 | meta | Object | 是 | body 媒体文件元信息,使用json表示,包含两个对象:filename、sha256。 |
参数名 | 变量 | 类型[长度限制][长度限制] | 必填 | 描述 |
---|---|---|---|---|
媒体文件标识 ID | media_id | string[1,512] | 是 | 微信返回的媒体文件标识ID。 示例值:BB04A5DEEFEA18D4F2554C1EDD3B610B.bmp |
{
"media_id": "BB04A5DEEFEA18D4F2554C1EDD3B610B.bmp"
}
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
500 | SYSTEM_ERROR | 系统错误 | 5开头的状态码都为系统问题,请使用相同参数 稍后重新调用 |
400 | PARAM_ERROR | 参数错误 | 根据错误提示,传入正确参数 |
429 | FREQUENCY_LIMITED | 频率超限 | 请求量不要超过接口调用频率限制 |
400 | INVALID_REQUEST | 请求参数符合参数格式,但不符合业务规则 | 请确认相同单号是否使用了不同的参数 |
401 | SIGN_ERROR | 签名验证失败 | 请检查签名参数和方法是否都符合签名算法要求 |
403 | NO_AUTH | 商户暂无权限使用此功能 | 请开通商户号权限。请联系产品或商务申请 |