php 微信 sdk 上传图片、商户上传反馈图片API

安装sdk

composer require wechatpay/wechatpay

   文档 https://github.com/wechatpay-apiv3/wechatpay-phphttps://github.com/wechatpay-apiv3/wechatpay-php     

composer require wechatpay/wechatpay-guzzle-middleware

文档https://github.com/wechatpay-apiv3/wechatpay-guzzle-middlewarehttps://github.com/wechatpay-apiv3/wechatpay-guzzle-middleware

初始化:

//引入
    
use WechatPay\GuzzleMiddleware\Util\PemUtil;
use WechatPay\GuzzleMiddleware\WechatPayMiddleware;
use WechatPay\GuzzleMiddleware\Util\MediaUtil;

            // 设置参数
// 商户号
            $merchantId = ''你的商户号;
            $merchantSerialNumber = ''; // 商户API证书序列号
            $merchantPrivateKey = PemUtil::loadPrivateKey('商户私钥文件路径'); // 商户私钥文件路径
// 微信支付平台配置
            $wechatpayCertificate = PemUtil::loadCertificate('微信支付平台证书文件路径'); // 微信支付平台证书文件路径
// 构造一个WechatPayMiddleware
            $wechatpayMiddleware = WechatPayMiddleware::builder()
                ->withMerchant($merchantId, $merchantSerialNumber, $merchantPrivateKey) // 传入商户相关配置
                ->withWechatPay([ $wechatpayCertificate ]) // 可传入多个微信支付平台证书,参数类型为array
                ->build();
// 将WechatPayMiddleware添加到Guzzle的HandlerStack中
            $stack = \GuzzleHttp\HandlerStack::create();
            $stack->push($wechatpayMiddleware, 'wechatpay');
// 创建Guzzle HTTP Client时,将HandlerStack传入,接下来,正常使用Guzzle发起API请求,WechatPayMiddleware会自动地处理签名和验签
            $client = new \GuzzleHttp\Client(['handler' => $stack]);

微信支付平台证书下载教程

微信支付SDK 中 PHP Certificate Downloader 微信支付 APIv3 平台证书的命令行下载工具 使用教程_fuchto的博客-CSDN博客使用环境在linux 环境中使用使用前准备商户号、商户证书序列号、商户私匙文件(pem格式)、ApiV3密钥安装好 微信支付SDK 使用composer安装composer require wechatpay/wechatpayApiV3 密钥设置什么是APIv3密钥?如何设置?第一步 进入对应项目目录根目录 校验composer 是否可用输入命令 composer -v 第二步 查询当前可用命...https://blog.csdn.net/fuchto/article/details/122946465上传图片素材


// 实例化一个媒体文件流,注意文件后缀名需符合接口要求
$media = new MediaUtil('媒体文件路径,链接都可以');

// 正常使用Guzzle发起API请求
try {
    request 和 post 二选一 都可
    $resp = $client->request('POST', '对应微信图片上传接口(链接)', [
        '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;
}

在使用 


use WechatPay\GuzzleMiddleware\Util\MediaUtil; 时可能会报错 找不到hash类

解决办法 

找到文件 在 vendor\wechatpay\wechatpay-guzzle-middleware\src\Util\MediaUtil.php

在91行 把 

\GuzzleHttp\Psr7\hash

修改成

\GuzzleHttp\Psr7\Utils::hash

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fuchto

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值