- 关于图片上传API的问题?
参考的文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter2_1_1.shtml 按照文档要求 请求主体类型:multipart/form-data 请求方式:POST 看了api文档后我的第一版本代码是这样的: $instance = $function->getInstance(); $rs = $instance->chain('v3/merchant/media/upload') ->post([ 'debug' => true, 'headers' => [ 'Content-Type' => 'multipart/form-data', ], 'multipart' => [ [ 'name' => 'file', 'contents' => fopen($uploadedFile, 'r'), ], [ 'name' => 'meta', 'contents' => json_encode([ 'filename' => $this->time . '.jpeg', 'sha256' => hash_file('sha256', $uploadedFile), ], JSON_THROW_ON_ERROR), ] ], 'expect' => 2*1024*1024+1 ]); // dd($rs) 各种 sign 出错~ 然后我换成了第二种: // 实例化一个媒体文件流,注意文件后缀名需符合接口要求 // !!!??? 有个问题,这种写法就可以忽略掉文档提出的 meta 和 file 等参数了嘛? $media = new MediaUtil($uploadedFile); $instance = $function->getInstance(); $rs = $instance->chain('v3/merchant/media/upload') ->post([ 'debug' => true, 'body' => $media->getStream(), 'headers' => [ 'Accept' => 'application/json', 'content-type' => $media->getContentType(), ] ]); // "code": "PARAM_ERROR", "message": "图片文件名称不正确,请检查后重新提交 我上传的文件是 demo.png 不清楚哪里出现了问题? 我的 instance 是来自 参考地址: https://github.com/wechatpay-apiv3/wechatpay-php#%E7%A4%BA%E4%BE%8B%E7%A8%8B%E5%BA%8F%E5%BE%AE%E4%BF%A1%E6%94%AF%E4%BB%98%E5%B9%B3%E5%8F%B0%E8%AF%81%E4%B9%A6%E4%B8%8B%E8%BD%BD // 构造一个 APIv3 客户端实例 $instance = Builder::factory([ 'mchid' => $merchantId, 'serial' => $merchantCertificateSerial, 'privateKey' => $merchantPrivateKeyInstance, 'certs' => [ $platformCertificateSerial => $platformPublicKeyInstance, ], ]); 问题一: 两种写法都是对的吗?以哪个为准? 问题二:问什么我上传的图片要求符合“商户上传的媒体图片的名称,商户自定义,必须以JPG、BMP、PNG为后缀。示例值:filea.jpg”,但是仍然不对?
2023-10-18 - CertificateDownloader.php生成平台证书的时候?
报错代码如下: Decrypting the input $ciphertext failed, please checking your $key and $iv whether or nor correct [图片] 使用的是 APIv3密钥 请教老师们如何排查?
2023-10-17