php 微信 sdk 上传图片、商户上传反馈图片API
安装sdkcomposer require wechatpay/wechatpay文档https://github.com/wechatpay-apiv3/wechatpay-phphttps://github.com/wechatpay-apiv3/wechatpay-phpcomposer require wechatpay/wechatpay-guzzle-middleware文档https
·
安装sdk
composer require wechatpay/wechatpay
文档 https://github.com/wechatpay-apiv3/wechatpay-phphttps://github.com/wechatpay-apiv3/wechatpay-php
composer require wechatpay/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]);
微信支付平台证书下载教程
// 实例化一个媒体文件流,注意文件后缀名需符合接口要求
$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
更多推荐
已为社区贡献1条内容
所有评论(0)