图片上传 
服务商操作员调用 API 接口,上传证件照片。支持 jpeg、jpg、bmp、png 格式,图片大小不超过2M。通过 POST 表单来调用该接口,表单媒体文件 id 为 media,需有 filename、filelength、content-type 等信息。
| 请求参数 | 类型 | 描述 | 
|---|---|---|
| security | true | 声明加载商户API证书 | 
| body | object | multipart/form-data 数据结构 | 
| media | object | 媒体文件标识,有filename、filelength、content-type等信息。不参与签名计算 | 
| media_hash | string | 根据媒体文件内容进行MD5计算后的值,注意小写 | 
| mch_id | string | 服务商商户号或渠道号 | 
| sign_type | string | MD5 | HMAC-SHA256 枚举值之一 | 
| sign | string | media_hash mch_id sign_type 三个参数通用签名算法计算得出的签名值 | 
php
$stack = clone $instance->getDriver()->select('v2')->getConfig('handler');
$stack->remove('transform_request');
$stream = new \GuzzleHttp\Psr7\LazyOpenStream('file:///path/to/image.jpg', 'rb');
$mediaMd5Digest = \GuzzleHttp\Psr7\Utils::hash($stream, 'md5');
$instance->v2->secapi->mch->uploadmedia->postAsync([
  'security' => true,
  'handler' => $stack,
  'body' => new \GuzzleHttp\Psr7\MultipartStream([
    ['name' => 'media', 'content' => $stream, 'filename' => 'image.jpg'],
    ['name' => 'mch_id', 'content' => $mchid],
    ['name' => 'media_hash', 'content' => $mediaMd5Digest],
    ['name' => 'sign_type', 'content' => $signType],
    ['name' => 'sign', 'content' => \WeChatPay\Crypto\Hash::sign(
      $signType, "mch_id=$mchid&media_hash=$mediaMd5Digest&sign_type=$signType", $apiv2Key
    )],
  ]),
])
->then(static function(\Psr\Http\Message\ResponseInterface $response) {
  print_r(\WeChatPay\Transformer::toArray((string) $response->getBody()));
})
->wait();php
$stack = clone $instance->getDriver()->select('v2')->getConfig('handler');
$stack->remove('transform_request');
$stream = new \GuzzleHttp\Psr7\LazyOpenStream('file:///path/to/image.jpg', 'rb');
$mediaMd5Digest = \GuzzleHttp\Psr7\Utils::hash($stream, 'md5');
$instance->chain('v2/secapi/mch/uploadmedia')->postAsync([
  'security' => true,
  'handler' => $stack,
  'body' => new \GuzzleHttp\Psr7\MultipartStream([
    ['name' => 'media', 'content' => $stream, 'filename' => 'image.jpg'],
    ['name' => 'mch_id', 'content' => $mchid],
    ['name' => 'media_hash', 'content' => $mediaMd5Digest],
    ['name' => 'sign_type', 'content' => $signType],
    ['name' => 'sign', 'content' => \WeChatPay\Crypto\Hash::sign(
      $signType, "mch_id=$mchid&media_hash=$mediaMd5Digest&sign_type=$signType", $apiv2Key
    )],
  ]),
])
->then(static function(\Psr\Http\Message\ResponseInterface $response) {
  print_r(\WeChatPay\Transformer::toArray((string) $response->getBody()));
})
->wait();php
$stack = clone $instance->getDriver()->select('v2')->getConfig('handler');
$stack->remove('transform_request');
$stream = new \GuzzleHttp\Psr7\LazyOpenStream('file:///path/to/image.jpg', 'rb');
$mediaMd5Digest = \GuzzleHttp\Psr7\Utils::hash($stream, 'md5');
$instance['v2/secapi/mch/uploadmedia']->postAsync([
  'security' => true,
  'handler' => $stack,
  'body' => new \GuzzleHttp\Psr7\MultipartStream([
    ['name' => 'media', 'content' => $stream, 'filename' => 'image.jpg'],
    ['name' => 'mch_id', 'content' => $mchid],
    ['name' => 'media_hash', 'content' => $mediaMd5Digest],
    ['name' => 'sign_type', 'content' => $signType],
    ['name' => 'sign', 'content' => \WeChatPay\Crypto\Hash::sign(
      $signType, "mch_id=$mchid&media_hash=$mediaMd5Digest&sign_type=$signType", $apiv2Key
    )],
  ]),
])
->then(static function(\Psr\Http\Message\ResponseInterface $response) {
  print_r(\WeChatPay\Transformer::toArray((string) $response->getBody()));
})
->wait();php
$stack =clone $instance->getDriver()->select('v2')->getConfig('handler');
$stack->remove('transform_request');
$stream = new \GuzzleHttp\Psr7\LazyOpenStream('file:///path/to/image.jpg', 'rb');
$mediaMd5Digest = \GuzzleHttp\Psr7\Utils::hash($stream, 'md5');
$response = $instance->v2->secapi->mch->uploadmedia->post([
  'security' => true,
  'handler' => $stack,
  'body' => new \GuzzleHttp\Psr7\MultipartStream([
    ['name' => 'media', 'content' => $stream, 'filename' => 'image.jpg'],
    ['name' => 'mch_id', 'content' => $mchid],
    ['name' => 'media_hash', 'content' => $mediaMd5Digest],
    ['name' => 'sign_type', 'content' => $signType],
    ['name' => 'sign', 'content' => \WeChatPay\Crypto\Hash::sign(
      $signType, "mch_id=$mchid&media_hash=$mediaMd5Digest&sign_type=$signType", $apiv2Key
    )],
  ]),
]);
print_r(\WeChatPay\Transformer::toArray((string) $response->getBody()));php
$stack = clone $instance->getDriver()->select('v2')->getConfig('handler');
$stack->remove('transform_request');
$stream = new \GuzzleHttp\Psr7\LazyOpenStream('file:///path/to/image.jpg', 'rb');
$mediaMd5Digest = \GuzzleHttp\Psr7\Utils::hash($stream, 'md5');
$response = $instance->chain('v2/secapi/mch/uploadmedia')->post([
  'security' => true,
  'handler' => $stack,
  'body' => new \GuzzleHttp\Psr7\MultipartStream([
    ['name' => 'media', 'content' => $stream, 'filename' => 'image.jpg'],
    ['name' => 'mch_id', 'content' => $mchid],
    ['name' => 'media_hash', 'content' => $mediaMd5Digest],
    ['name' => 'sign_type', 'content' => $signType],
    ['name' => 'sign', 'content' => \WeChatPay\Crypto\Hash::sign(
      $signType, "mch_id=$mchid&media_hash=$mediaMd5Digest&sign_type=$signType", $apiv2Key
    )],
  ]),
]);
print_r(\WeChatPay\Transformer::toArray((string) $response->getBody()));php
$stack = clone $instance->getDriver()->select('v2')->getConfig('handler');
$stack->remove('transform_request');
$stream = new \GuzzleHttp\Psr7\LazyOpenStream('file:///path/to/image.jpg', 'rb');
$mediaMd5Digest = \GuzzleHttp\Psr7\Utils::hash($stream, 'md5');
$response = $instance['v2/secapi/mch/uploadmedia']->post([
  'security' => true,
  'handler' => $stack,
  'body' => new \GuzzleHttp\Psr7\MultipartStream([
    ['name' => 'media', 'content' => $stream, 'filename' => 'image.jpg'],
    ['name' => 'mch_id', 'content' => $mchid],
    ['name' => 'media_hash', 'content' => $mediaMd5Digest],
    ['name' => 'sign_type', 'content' => $signType],
    ['name' => 'sign', 'content' => \WeChatPay\Crypto\Hash::sign(
      $signType, "mch_id=$mchid&media_hash=$mediaMd5Digest&sign_type=$signType", $apiv2Key
    )],
  ]),
]);
print_r(\WeChatPay\Transformer::toArray((string) $response->getBody()));| 返回字典 | 类型 | 描述 | 
|---|---|---|
| return_code | string | 返回状态码SUCCESS | FAIL 枚举值之一 | 
| return_msg | string | 返回信息 | 
| appid | string | 公众账号ID | 
| mch_id | string | 商户号 | 
| nonce_str | string | 随机字符串 | 
| sign | string | 签名 | 
| result_code | string | 业务结果SUCCESS | FAIL 枚举值之一 | 
| err_code | string | 错误代码 | 
| err_code_des | string | 错误代码描述 | 
| media_id | string | 媒体标识Id,微信返回的媒体文件标识Id | 
参阅 官方文档