安装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

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐