微信支付

请仔细阅读并理解:微信官方文档 - 微信支付open in new window

实例化

<?php
use EasyWeChat\Pay\Application;

$config = [
    'mch_id' => 1360649000,

    'private_key' => __DIR__ . '/certs/apiclient_key.pem',
    'certificate' => __DIR__ . '/certs/apiclient_cert.pem',

    /**
     * 证书序列号,可通过命令从证书获取:
     * `openssl x509 -in application_cert.pem -noout -serial`
     */
    'certificate_serial_no' => '6F2BADBE1738B07EE45C6A85C5F86EE343CAABC3',

    'http' => [
        'base_uri' => 'https://api.mch.weixin.qq.com/',
    ],

    // v2 API 秘钥
    //'secret_key' => '26db3e15cfedb44abfbb5fe94fxxxxx',
    // v3
    'secret_key' => '43A03299A3C3FED3D8CE7B820Fxxxxx',

];

$app = new Application($config);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

API

Application 就是一个工厂类,所有的模块都是从 $app 中访问,并且几乎都提供了协议和 setter 可自定义修改。

API Client

封装了多种模式的 API 调用类,你可以选择自己喜欢的方式调用开放平台任意 API,默认自动处理了 access_token 相关的逻辑。

$app->getClient(); // v3
$app->getV2Client(); // v2
1
2

📖 更多说明请参阅:API 调用

工具

为了方便开发者生成各种调起支付所需配置,你可以使用工具类:

$app->getUtils(); 
1

📖 更多说明请参阅:工具

配置

$config = $app->getConfig();
1

你可以轻松使用 $config->get($key, $default) 读取配置,或使用 $config->set($key, $value) 在调用前修改配置项。

支付账户

支付账户类,提供一系列 API 获取支付的基本信息:

$account = $app->getMerchant();

$account->getMerchantId();
$account->getPrivateKey();
$account->getCertificate();
$account->getCertificateSerialNumber();
$account->getSecretKey();
1
2
3
4
5
6
7

请求示例

Native 下单

 $data = [
    'mchid' => (string)$app->getMerchant()->getMerchantId(),
    'out_trade_no' => 'native20210720xxx',
    'appid' => 'wxe2fb06xxxxxxxxxx6',
    'description' => 'Image形象店-深圳腾大-QQ公仔',
    'notify_url' => 'https://weixin.qq.com/',
    'amount' => [
        'total' => 1,
        'currency' => 'CNY',
    ]
];

$response = $app->getClient()->post('pay/transactions/native', [ 'json' => $data ]);

print_r($response->toArray());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

查询订单(商户订单号)


$outTradeNo = 'native20210720xxx';
$response = $app->getClient()->get("pay/transactions/out-trade-no/{$outTradeNo}", [
    'query'=>[
        'mchid' =>  $app->getMerchant()->getMerchantId()
    ]
]);

print_r($response->toArray());
1
2
3
4
5
6
7
8
9

查询订单(微信支付订单号)


$transactionId = '217752501201407033233368018';
$response = $app->getClient()->get("pay/transactions/id/{$transactionId}", [
    'query'=>[
        'mchid' =>  $app->getMerchant()->getMerchantId()
    ]
]);

print_r($response->toArray());
1
2
3
4
5
6
7
8
9