使用 PHP SDK
更新时间:2025.05.29||
在本教程中,你将简要了解微信支付的 PHP SDK。在学习过程中,你将
掌握如何安装 PHP SDK
了解请求微信支付需要哪些密钥和证书
了解如何使用 PHP SDK 请求微信支付
环境要求
Guzzle 7.0,PHP >= 7.2.5。
Guzzle 6.5,PHP >= 7.1.2
安装

1composer require wechatpay/wechatpay
你可以在 GitHub 找到 PHP SDK 的源代码、使用说明和最新版本信息。
必需的证书和密钥
由于 PHP-FPM 进程模型限制,PHP SDK 不支持自动获取和更新微信支付平台证书。你可以使用 SDK 自带的工具下载微信支付平台证书。

1composerexec CertificateDownloader.php -- -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath} | 注意: 如果使用上述命令下载平台证书报错:{"code": "RESOURCE_NOT_EXISTS","message": "无可用的平台证书,请在商户平台-API安全申请使用微信支付公钥。"},即表示商户仅能使用微信支付公钥,可参考下方发起请求中的使用微信支付公钥初始化示例 |
|
发起请求
以 Native 支付为例,向微信支付发起你的第一个请求。

1<?php
2
3require_once('vendor/autoload.php');
4
5use WeChatPay\Builder;
6use WeChatPay\Crypto\Rsa;
7use WeChatPay\Util\PemUtil;
8
9
10
11
12$merchantId = '190000****';
13
14
15$merchantPrivateKeyFilePath = 'file:///path/to/merchant/apiclient_key.pem';
16$merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);
17
18
19$merchantCertificateSerial = '3775B6A45ACD588826D15E583A95F5DD********';
20
21
22$platformCertificateFilePath = 'file:///path/to/wechatpay/cert.pem';
23$platformPublicKeyInstance = Rsa::from($platformCertificateFilePath, Rsa::KEY_TYPE_PUBLIC);
24
25
26$platformCertificateSerial = PemUtil::parseCertificateSerialNo($platformCertificateFilePath);
27
28
29$instance = Builder::factory([
30 'mchid' => $merchantId,
31 'serial' => $merchantCertificateSerial,
32 'privateKey' => $merchantPrivateKeyInstance,
33 'certs' => [
34 $platformCertificateSerial => $platformPublicKeyInstance,
35 ],
36]);
37
38
39$response = $instance->chain('v3/pay/partner/transactions/native')->post([
40 'json' => [
41 'sp_appid' => 'wxdace645e0bc2cXXX',
42 'sp_mchid' => '1900006XXX',
43 'sub_mchid' => '1900007xxx',
44 'description' => 'Image形象店-深圳腾大-QQ公仔',
45 'out_trade_no' => 'native12177525012014070332333',
46 'amount' => [
47 'total' => 1,
48 'currency' => 'CNY',
49 ],
50 'notify_url' => 'https://weixin.qq.com/',
51 ],
52
53 'headers' => [
54 'Wechatpay-Serial' => '134912410000000000000xxxxxxx',
55 ],
56]);
57print_r(json_decode((string) $response->getBody(), true));
58
59
60{
61 "code": "RESOURCE_NOT_EXISTS",
62 "message": "无可用的平台证书,请在商户平台-API安全申请使用微信支付公钥。"
63}
64
1<?php
2
3require_once('vendor/autoload.php');
4
5use WeChatPay\Builder;
6use WeChatPay\Crypto\Rsa;
7
8
9
10
11$merchantId = '190000****';
12
13
14$merchantPrivateKeyFilePath = 'file:///path/to/merchant/apiclient_key.pem';
15$merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);
16
17
18$merchantCertificateSerial = '3775B6A45ACD588826D15E583A95F5DD********';
19
20
21$platformPublicKeyFilePath = 'file:///path/to/wechatpay/publickey.pem';
22$twoPlatformPublicKeyInstance = Rsa::from($platformPublicKeyFilePath, Rsa::KEY_TYPE_PUBLIC);
23
24
25
26$platformPublicKeyId = 'PUB_KEY_ID_01142321349124100000000000********';
27
28
29$instance = Builder::factory([
30 'mchid' => $merchantId,
31 'serial' => $merchantCertificateSerial,
32 'privateKey' => $merchantPrivateKeyInstance,
33 'certs' => [
34 $platformPublicKeyId => $twoPlatformPublicKeyInstance,
35 ],
36]);
37
38
39$response = $instance->chain('v3/pay/partner/transactions/native')->post([
40 'json' => [
41 'sp_appid' => 'wxdace645e0bc2cXXX',
42 'sp_mchid' => '1900006XXX',
43 'sub_mchid' => '1900007xxx',
44 'description' => 'Image形象店-深圳腾大-QQ公仔',
45 'out_trade_no' => 'native12177525012014070332333',
46 'amount' => [
47 'total' => 1,
48 'currency' => 'CNY',
49 ],
50 'notify_url' => 'https://weixin.qq.com/',
51 ],
52
53 'headers' => [
54 'Wechatpay-Serial' => 'PUB_KEY_ID_0114232134912410000000000000',
55 ],
56]);
57print_r(json_decode((string) $response->getBody(), true));联系 SDK 团队获取帮助
接下来阅读
通过这个快速介绍,你已经安装了 PHP SDK 并学习了一些基础知识。接下来,你可以阅读具体的产品文档,学习如何接入微信支付。