使用官方推荐SDK(wechatpay-php)对接APIv3版本微信支付

733次阅读
没有评论

第 1 步,登录微信支付设置 APIv3 密钥 和证书

商户 API 证书申请指南:https://kf.qq.com/faq/161222NneAJf161222U7fARv.html

商户 api 证书生成工具下载地址

windows 版本:https://wx.gtimg.com/mch/files/WXCertUtil.exe

mac 版本:https://wx.gtimg.com/mch/files/WXCertUtil.dm

使用官方推荐 SDK(wechatpay-php)对接 APIv3 版本微信支付

第 2 步,安装 SDK 工具:wechatpay-php

SDK 工具 GitHub 地址:https://github.com/wechatpay-apiv3/wechatpay-php

composer require wechatpay/wechatpay

第 3 步,使用 SDK 下载微信支付平台证书

在 SDK 工具中有内置的微信支付平台证书下载器

使用命令下载微信支付平台证书(说明文档:https://github.com/wechatpay-apiv3/wechatpay-php/blob/main/bin/README.md)

composer exec CertificateDownloader.php -- -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath}

下载微信支付平台证书命令参数说明

-k, –key=<apiV3key>      ApiV3Key,第一步所设置的 APIv3 密钥
-m, –mchid=<merchantId>      商户号
-f, –privatekey=<mchPrivateKeyFilePath>    第一步所设置的商户 API 证书中的 apiclient_key.pem 文件,商户 API 证书的私钥文件路径
-s, –serialno=<mchSerialNo>      第一步所设置的商户 API 证书的序列号,
-o, –output=[outputFilePath]      下载成功后保存证书的路径,可选参数,默认为临时文件目录夹

使用官方推荐 SDK(wechatpay-php)对接 APIv3 版本微信支付

初次下载平台证书,下载证书命令 demo(window 环境运行 CertificateDownloader.php.bat 文件)
composer exec CertificateDownloader.php.bat  -k 891c4302cf6d93e2d3361fd07113edaa -m 161692**** -f E:\code_www\study\apiclient_key.pem -s 312C107503F966FD5C9EB5752898D5C2626***** -o E:\code_www\study\

第 4 步,编写 DEMO 并测试

demo 直接复制 GitHub 上面的代码

class WeiXinPay
{

    public $instance; // 初始化请求对象

    // 初始化方法
    public function __construct()
    {
        // 商户号
        $merchantId = '16169320**';

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

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

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

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

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

        // 发送请求
        $resp = $this->instance->chain('v3/certificates')->get();
        echo $resp->getBody();}
}

关于微信支付 V3 版本使用的支付证书的问题。

  • “商户证书”是指由商户申请的,包含商户的商户号、公司名称、公钥信息的证书。
  • ”平台证书”是指由微信支付负责申请的,包含微信支付平台标识、公钥信息的证书。
  • 证书序列号,每个证书都有一个由 CA 颁发的唯一编号,即证书序列号
  • 平台证书的下载:初次下载可以用 sdk 提供的下载工具下载(见本文档示例)

 

普通服务商 商户进件:https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter11_1_1.shtml

上述文档描述不支持进件个人微小商户

电商平台二级商户进件:https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter7_1_1.shtml

正文完
有偿技术支持加微信
post-qrcode
 0
评论(没有评论)
验证码