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

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

申请流程及配置

申请以及配置流程参考官方: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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 登录微信支付服务商平台,进入“API商户平台”界面,在左侧菜单栏中选择“开发配置”,点击“APIv3密钥”页面中的“下载证书”按钮,下载证书至本地。 2. 在你的应用中引入微信支付官方提供的SDK文件,包括wxpay.js和wxpay.php两个文件。将这两个文件放置在正确的路径下,确保能够被应用调用。 3. 在你的代码中引入wxpay.php文件,使用以下代码初始化微信支付服务商: ```php require_once "wxpay.php"; $config = array( 'mch_id' => '你的服务商商户号', 'appid' => '你的服务商公众号appid', 'key' => '你的服务商支付密钥', 'cert_path' => '你下载的证书文件路径/apiclient_cert.pem', 'key_path' => '你下载的证书文件路径/apiclient_key.pem' ); $wxpay = new Wxpay($config); ``` 4. 确定用户需要支付的金额和商品信息等相关信息,构建支付请求参数,例如: ```php $params = array( 'body' => '商品描述', 'out_trade_no' => '商户订单号', 'total_fee' => 100, // 单位:分 'notify_url' => '支付回调通知地址', 'trade_type' => 'JSAPI', 'openid' => '用户openid', 'sub_mch_id' => '子商户号' ); ``` 其中,'trade_type' => 'JSAPI'表示使用JSAPI支付方式,'openid' => '用户openid'表示用户在公众号中的openid,'sub_mch_id' => '子商户号'表示子商户号。 5. 调用统一下单接口,生成预支付订单。例如: ```php $result = $wxpay->unifiedOrder($params); ``` 6. 根据返回结果,生成JSAPI支付所需的参数,例如: ```php $order_params = array( 'appId' => $wxpay->appId, 'timeStamp' => time(), 'nonceStr' => $wxpay->getNonceStr(), 'package' => 'prepay_id=' . $result['prepay_id'], 'signType' => 'RSA', ); $order_params['paySign'] = $wxpay->getPaySign($order_params); // 生成签名 ``` 其中,'appId'、'timeStamp'、'nonceStr'、'package'、'signType'都是JSAPI支付所需的参数,'paySign'为签名值。 7. 将生成的JSAPI支付所需的参数返回给前端,用于调起微信支付界面。 8. 在支付完成后,微信会向你的'notify_url'地址发送支付结果通知。在该地址中,需要对支付结果进行处理,例如: ```php $xml = file_get_contents('php://input'); $result = $wxpay->notify($xml); // 处理支付结果 if ($result) { // 支付成功 } else { // 支付失败 } ``` 以上为微信服务商支付V3版引入官方SDK教程。需要注意的是,在使用微信支付服务商支付时,需要先在微信支付服务商平台中完成相关配置,包括商户号、支付密钥、证书等。同时,还需要在调用支付接口前获取用户的openid等信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值