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