IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP 微信 消费者投诉 下载图片 api接口 -> 正文阅读

[PHP知识库]PHP 微信 消费者投诉 下载图片 api接口

?下载官方SDK

????????使用 PHP 包管理工具?Composer?安装 SDK:

????????composer require wechatpay/wechatpay

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

下载IDE 描述包

为 wechatpay-php 增加IDE提示的接口描述包 iwechatpay/openapi 介绍 | 微信开放社区wechapay-php 开发包的辅助包 iwechatpay/openapi 介绍https://developers.weixin.qq.com/community/develop/article/doc/000a0ce867842092f8cc65e5356013

开始使用

? ? ? ? 实例化 配置好参数

require_once('vendor/autoload.php');

use WeChatPay\Builder;
use WeChatPay\Crypto\Rsa;
use WeChatPay\Util\PemUtil;

// 设置参数

// 商户号
$merchantId = '190000****';

// 从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名
$merchantPrivateKeyFilePath = 'file:///path/to/merchant/apiclient_key.pem';
$merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);

// 「商户API证书」的「证书序列号」
$merchantCertificateSerial = '3775B6A45ACD588826D15E583A95F5DD********';

// 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名
$platformCertificateFilePath = 'file:///path/to/wechatpay/cert.pem';
$platformPublicKeyInstance = Rsa::from($platformCertificateFilePath, Rsa::KEY_TYPE_PUBLIC);

// 从「微信支付平台证书」中获取「证书序列号」
$platformCertificateSerial = PemUtil::parseCertificateSerialNo($platformCertificateFilePath);

// 构造一个 APIv3 客户端实例
$instance = Builder::factory([
    'mchid'      => $merchantId,
    'serial'     => $merchantCertificateSerial,
    'privateKey' => $merchantPrivateKeyInstance,
    'certs'      => [
        $platformCertificateSerial => $platformPublicKeyInstance,
    ],
]);

平台证书下载

????????微信支付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官方文档:

????????微信支付-开发者文档https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter10_2_18.shtml开始请求

$item = "当获取到投诉资料信息后获取到的 media_url";
$urlInfo = (parse_url($item));
//  获取请求的路径 参数
$media_slot_url = str_replace('/v3/merchant-service/images/','',$urlInfo['path']);
try {
// $stack 是因为 使用官方 SDK时 由于 sdk 会自动进行验签 而官方返回的是数据流并不用验签 所以需要特殊处理  在请求时加入 ['handler' => $stack]  
    $stack = clone $instance->getDriver()->select()->getConfig('handler');
    $stack->remove('verifier');
//  下载接口都是非标接口,要特殊搞一下 要 {+media_slot_url} 这样的语法结构
    $res = $instance->chain('v3/merchant-service/images/{+media_slot_url}')->get([
        'handler' => $stack,
        'media_slot_url'=>$media_slot_url,
    ]);
    $filename = time().rand(9999,99999).'.jpg';
// 获取图片资源
    $file = $res->getBody();
// 保存图片到本地
    $info = $this->saveImage("./public/upload/media",$filename,$file);

}catch (RequestException $e){
    echo $e->getMessage()."\n";
    echo $e->getResponse()->getBody();
}


// 保存图片到本地
  function saveImage($save_dir = './public/upload/loan',$filename='image.jpg',$file)
    {
        if(trim($save_dir)=='')
            $save_dir='./';

        if(0!==strrpos($save_dir,'/'))
            $save_dir.='/';

        //创建保存目录
        if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true))
            return array('file_name'=>'','save_path'=>'','error'=>5);



        $resource = fopen($save_dir . $filename, 'a');
        fwrite($resource, $file);
        fclose($resource);
        unset($file,$url);
        return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0);
    }

?为什么使用?{+media_slot_url} 语法结构

请求后响应?

The?response's?Headers?incomplete,?must?have(`Wechatpay-Nonce`,?`Wechatpay-Serial`,?`Wechatpay-Signature`?and?`Wechatpay-Timestamp`).
failed,resp?code?=?200?return?body?=

是因为没有加入?$stack 进行特殊处理 sdk 进行了 验签?返回值是binary?图片流,不用验签

报错 400 是因为请求时 参数出现了问题 注意 对照一下 返回的参数和 请求的参数之间的区别

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章           查看所有文章
加:2022-02-26 11:10:13  更:2022-02-26 11:12:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:50:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码