收藏
回答

wechatpay-guzzle-middleware如何上传图片?

如何使用这个sdk上传图片。我是用如下代码,无法通过验签

$wechatPayMiddleware = WechatPayMiddleware::builder()
    ->withMerchant(CommonData::MCH_ID, CommonData::SERIAL_NUMBER, CommonData::getPrivateKey())
    ->withWechatPay([ CommonData::getCertificate() ]) // 可传入多个微信支付平台证书,参数类型为array
    ->withValidator(new NoValidator())
    ->build();

// 将WechatPayMiddleware添加到Guzzle的HandlerStack中
$stack = HandlerStack::create();
$stack->push($wechatPayMiddleware, 'wechatpay');

// 创建Guzzle HTTP Client时,将HandlerStack传入
$client = new \GuzzleHttp\Client(['handler' => $stack, 'verify' => false]);
$url = 'https://xxx.com/'.$object;
// 接下来,正常使用Guzzle发起API请求,WechatPayMiddleware会自动地处理签名和验签
$resp = $client->request('POST', CommonData::URL . $this->getUri(), [
    'headers' => [ 'Accept' => 'application/json' ],
    'multipart' => [
        [
            'name'=>'file',
            'contents'=>fopen($url, 'r')
        ], [
            'name'=>'meta',
            'contents'=>json_encode([
                'filename'=>basename($url),
                'sha256'=>hash('sha256', (new Oss())->downloadFile('hic-image', $object)),
            ])
        ]
    ],
]);
$result = json_decode($resp->getBody()->getContents(), true);
回答关注问题邀请回答
收藏

1 个回答

  • 微信支付技术助手1
    微信支付技术助手1
    2019-12-23

    你这边具体调用的是哪个接口?验签过不了,一般是你的签名参数有问题,仔细核对参数。

    2019-12-23
    赞同
    回复 1
    • 易进
      易进
      2019-12-23
      调用的是图片上传接口。主要是存在图片上传同时还要上传filename和sha256等参数。现在不清楚怎么同时传,我看社区里面的demo都是自己写拼接然后发起请求的,没找到有基于sdk的demo
      2019-12-23
      回复
登录 后发表内容
问题标签