微信 商家转账到零钱 二

本来想手写,但是有sdk 就没必要这么麻烦。

composer地址:wechatpay/wechatpay - Packagist

微信官网sdk,给的是github,打不开。

 'appid',
            'mchid' => '商户号',
            'key' => 'key',
            'serial_no' => '证书序列号',
        ];
        return $config;
    }
    private function getpems()
    {
        $arr = [
            'SSLCERT' => ROOT_PATH . "/cert/apiclient_cert.pem",
            'SSLKEY' => ROOT_PATH . "/cert/apiclient_key.pem",
        ];
        return $arr;
    }

    public function dotest()
    {
        $pems = $this->getpems();
        $config = $this->payconfig2();
        $merchantPrivateKeyFilePath = file_get_contents($pems['SSLKEY']);
        $merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);

        // 「商户API证书」的「证书序列号」
        $merchantCertificateSerial = $config['serial_no'];

        $merchantId = $config['mchid'];

        // 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名
        $platformCertificateFilePath = file_get_contents($pems['SSLCERT']);
        $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' => true]// 调试模式,https://docs.guzzlephp.org/en/stable/request-options.html#debug
        );
        echo $resp->getBody(), PHP_EOL;
    }

}
$t = new Test();
$t->dotest();

证书序列号需要去商户平台看。

其次这个key有v2、v3之分。问过别人这俩版本不共用。

  • 文件名是 apiclient_key.pem 的,是 「商户私钥」文件
  • 文件名是 apiclient_cert.pem 的,是 「商户证书」文件

参考

微信支付:API商户证书序列号serialNo获取-YES开发框架网

TP6下微信支付wechatpay-apiv3之wechatpay-php使用,包括下单、支付、查询、关闭_哈喽吧

商户证书序列号有误。请使用签名私钥匹配的证书序列号?-CRMEB社区

你可能感兴趣的:(微信,微信)