PHP微信支付V3利用官方SDK从申请到代码完成保姆级教程

本文提供了一步一步的PHP微信支付V3配置和使用教程,包括申请流程、Composer安装、微信SDK集成、公钥生成,以及H5支付的代码实现。通过本教程,开发者可以快速掌握微信支付的接入步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

申请流程及配置

申请以及配置流程参考官方:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_6_1.shtml

根据官方的指导,我们获取到了证书文件
在这里插入图片描述
我们接下来的描述中的两个文件,cert称为证书,key称为私钥。

安装composer

紧接着我们安装composer,为接下来使用微信支付的SDK做好基本铺垫。

  1. 下载 Composer.phar 文件
    打开SSH,连接服务器,输入命令:php -r “readfile(‘https://getcomposer.org/installer’);” | php
    进行composer的安装。

  2. 全局安装
    将下载好的 Cooposer.phar 移动至 /usr/local/bin改名为 Composer , 这样就实现了全局调用

     mv composer.phar /usr/local/bin/composer
    
  3. 切换镜像

国内镜像

    composer config -g repo.packagist composer https://packagist.phpcomposer.com

​ 阿里云镜像

    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

​ 切换成原来的镜像

    composer config -g repo.packagist composer https://repo.packagist.org

这里推荐阿里云。

  1. 基本命令
    ​ 查看版本号

     composer -v    
    

​ 新增

    composer install

​ 更新

    composer update

​ 设置忽略版本匹配

    composer install --ignore-platform-reqs 
    composer update --ignore-platform-reqs

​ 卸载依赖包

    composer remove "厂商/类库"

​ 升级命令

    composer self-update

​ 升级到某个版本

    composer self-update --版本
  1. 注意
    ​ 在新安装的 PHP 环境下 putenv() 和 proc_open() 函数默认处于禁用状态,那么在composer安装后需要把 putenv() 和 proc_open() 禁用函数去掉或注释掉,否则在查看 Composer 或在使用 Composer 时会有警告提示及报错信息。

以上安装流程参考:https://blog.csdn.net/qq_38874883/article/details/124887091

于是我们继续看到微信部分。

安装微信SDK

微信支付V3 SDK说明以及源码:https://github.com/wechatpay-apiv3/wechatpay-php

SSH执行安装命令:composer require wechatpay/wechatpay
接下来会把所有依赖要用到的东西,都会自动安装完成。

生成公钥

生成方案参考:https://blog.csdn.net/Yisermorn/article/details/127304729

这里我就不多说了,里面很详细。

最后我们得到一个长串字符的pem文件,就是我们的公钥。

开始敲代码

兄弟们,我们开始我们的主要内容了

我们用H5支付作为案例(所有支付方式都是同一套代码,同一套SDK)


//这里一定要带上,加载微信支付的SDK
use WeChatPay\Builder;
use WeChatPay\Crypto\Rsa;
use WeChatPay\Util\PemUtil;
use WeChatPay\Formatter;
use WeChatPay\Crypto\AesGcm;

//支付下单通用方法,其他支付方式基本改API接口地址就行了
//H5 API接口文档:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_1.shtml
//订单编号,钱,jsapi支付用的openid参数(H5支付可以无视)
public function wx_pay($orderid,$money,$openid=''){
   


// 设置参数

// 商户号
        $merchantId = '163XXXXXXX';

// 从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名
        $merchantPrivateKeyFilePath = 'file:///www/wwwroot/xxxxxxx/xxxxx/xxxxx/apiclient_key.pem';//这里是私钥文件路径
        $merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);

// 「商户API证书」的「证书序列号」
        $merchantCertificateSerial = '2A0B88xxxxxxxxxxxxxxxxxxxxxxxx';//微信支付账户中心里的证书序列号,这个不多说了,去找就看到了。

// 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名
        $platformCertificateFilePath = 'file:///www/wwwroot/xxxxx/xxxxxx/xxxxxxxxx/wechatpay_3B46AC2A44B23FFA7E6F23404BB720D932C34A3A.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,
            ],
        ]);

// 发送请求
        //$resp = $instance->chain('v3/certificates')->get(
            //['debug' => false] // 调试模式,https://docs.guzzlephp.org/en/stable/request-options.html#debug
        //);
        //echo $resp->getBody(), PHP_EOL;
        try {
   
            if($openid==''){
   //这里我判断了支付方式,有openid传过来,我就用jsapi支付,没有就用H5支付
                $resp
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值