# 接口实例及配置参数 [TOC] WeChatDeveloper 提供了丰富的配置选项,支持微信公众号、小程序、企业微信、微信支付、支付宝支付等全生态开发。 ## 快速开始案例 ### 微信公众号配置案例 ```php <?php // 接口实例及配置参数案例 include "WeChatDeveloper/include.php"; $config = [ 'appid' => 'wx60a43dd8161666d4', 'appsecret' => '71308e96a204296c57d7cd4b21b883e8', 'token' => 'your_wechat_token', 'encodingaeskey' => 'BJIUzE0gqlWy0GxfPp4J1oPTBmOrNDIGPNav1YFH5Z5', 'cache_path' => '/path/to/cache', ]; try { $wechat = \WeChat\User::instance($config); echo "=== 接口实例及配置参数案例 ===\n"; // 测试配置是否正确 $result = $wechat->getUserList(); echo "配置测试结果: " . json_encode($result, JSON_PRETTY_PRINT) . "\n"; if ($result['errcode'] == 0) { echo "微信公众号配置正确!\n"; echo "用户数量: " . $result['total'] . "\n"; echo "可以开始使用各种功能\n"; } else { echo "微信公众号配置错误: " . $result['errmsg'] . "\n"; } } catch (Exception $e) { echo "错误: " . $e->getMessage() . "\n"; } ``` **接口说明:** - 展示WeChatDeveloper的配置和实例化方法 - 支持多种微信生态和支付宝支付 - 提供完整的配置参数说明 **注意事项:** - 确保所有必需参数正确配置 - 证书文件路径必须正确 - 缓存目录需要有写权限 ## 基础配置参数 ### 微信公众号配置 ```php $config = [ // 基础配置(必需) 'appid' => 'wx60a43dd8161666d4', 'appsecret' => '71308e96a204296c57d7cd4b21b883e8', 'token' => 'your_wechat_token', 'encodingaeskey' => 'BJIUzE0gqlWy0GxfPp4J1oPTBmOrNDIGPNav1YFH5Z5', // 缓存配置(可选) 'cache_path' => '/path/to/cache', ]; ``` ### 微信支付配置 #### V2接口配置 ```php $config = [ // 基础配置 'appid' => 'wx60a43dd8161666d4', 'mch_id' => '1235704602', 'mch_key' => 'IKI4kpHjU94ji3oqre5zYaQMwLHuZPmj', // 证书配置(退款、打款、红包等功能需要) 'ssl_key' => '/path/to/apiclient_key.pem', 'ssl_cer' => '/path/to/apiclient_cert.pem', 'ssl_p12' => '/path/to/apiclient_cert.p12', // 或使用P12格式 'cache_path' => '/path/to/cache', ]; ``` #### V3接口配置(推荐) ```php $config = [ // 基础配置 'appid' => 'wx60a43dd8161666d4', 'mch_id' => '1235704602', 'mch_v3_key' => '98b7fxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 证书配置 'cert_serial' => '49055D67B2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'cert_public' => '-----BEGIN CERTIFICATE-----...', 'cert_private' => '-----BEGIN PRIVATE KEY-----...', // 平台证书包(可选) 'cert_package' => [ 'PUB_KEY_ID_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' => '-----BEGIN CERTIFICATE-----...' ], 'cache_path' => '/path/to/cache', ]; ``` ### 支付宝支付配置 #### 公钥模式 ```php $config = [ 'appid' => '2021000122667306', 'private_key' => 'MIIEowIBAAKCAQEAn...', 'public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...', 'sign_type' => 'RSA2', 'notify_url' => 'https://your-domain.com/alipay/notify', 'return_url' => 'https://your-domain.com/alipay/return', 'charset' => 'utf-8', 'debug' => false, ]; ``` #### 证书模式 ```php $config = [ 'appid' => '2021000122667306', 'private_key' => 'MIIEowIBAAKCAQEAn...', 'app_cert_path' => '/path/to/appPublicCert.crt', 'alipay_root_path' => '/path/to/alipayRootCert.crt', 'alipay_cert_path' => '/path/to/alipayPublicCert.crt', 'sign_type' => 'RSA2', 'notify_url' => 'https://your-domain.com/alipay/notify', 'return_url' => 'https://your-domain.com/alipay/return', ]; ``` ## 参数详细说明 ### 微信公众号参数 | 参数 | 类型 | 必需 | 说明 | |------|------|------|------| | `appid` | string | 是 | 微信公众号AppID | | `appsecret` | string | 是 | 微信公众号AppSecret | | `token` | string | 是 | 微信服务器验证Token | | `encodingaeskey` | string | 否 | 消息加解密密钥 | | `cache_path` | string | 否 | 缓存目录路径 | ### 微信支付参数 | 参数 | 类型 | 必需 | 说明 | |------|------|------|------| | `mch_id` | string | 是 | 微信支付商户号 | | `mch_key` | string | 是 | 微信支付API密钥(V2) | | `mch_v3_key` | string | 是 | 微信支付API密钥(V3) | | `cert_serial` | string | 否 | 商户证书序列号 | | `cert_public` | string | 否 | 商户证书公钥 | | `cert_private` | string | 否 | 商户证书私钥 | | `ssl_key` | string | 否 | 商户私钥文件路径 | | `ssl_cer` | string | 否 | 商户证书文件路径 | | `ssl_p12` | string | 否 | P12格式证书文件路径 | ### 支付宝支付参数 | 参数 | 类型 | 必需 | 说明 | |------|------|------|------| | `appid` | string | 是 | 支付宝应用ID | | `private_key` | string | 是 | 应用私钥 | | `public_key` | string | 否 | 支付宝公钥(公钥模式) | | `app_cert_path` | string | 否 | 应用公钥证书路径(证书模式) | | `alipay_root_path` | string | 否 | 支付宝根证书路径(证书模式) | | `alipay_cert_path` | string | 否 | 支付宝公钥证书路径(证书模式) | | `sign_type` | string | 是 | 签名类型(RSA/RSA2) | | `notify_url` | string | 是 | 支付结果通知地址 | | `return_url` | string | 否 | 支付成功跳转地址 | ## 实例化方式 ### 方式一:直接实例化 ```php <?php try { // 直接实例化接口对象 $user = \WeChat\User::instance($config); // 调用接口方法 $list = $user->getUserList(); // 处理返回结果 echo '<pre>'; var_export($list); } catch (Exception $e) { // 处理异常 echo $e->getMessage() . PHP_EOL; } ``` ### 方式二:工厂方法(推荐) ```php <?php try { // 使用工厂方法实例化接口对象 $user = \WeChat\User::instance($config); // 调用接口方法 $list = $user->getUserList(); // 处理返回结果 echo '<pre>'; var_export($list); } catch (Exception $e) { // 处理异常 echo $e->getMessage() . PHP_EOL; } ``` ## 高级配置 ### 自定义缓存处理 ```php <?php // 配置自定义缓存处理函数 \WeChat\Contracts\Tools::$cache_callable = [ 'set' => function ($name, $value, $expired = 360) { // 自定义缓存设置逻辑 return Redis::setex($name, $expired, serialize($value)); }, 'get' => function ($name) { // 自定义缓存获取逻辑 $data = Redis::get($name); return $data ? unserialize($data) : null; }, 'del' => function ($name) { // 自定义缓存删除逻辑 return Redis::del($name); }, 'put' => function ($name, $content) { // 自定义文件缓存逻辑 $file = '/path/to/cache/' . $name; file_put_contents($file, $content); return $file; }, ]; ``` ### 内存管理配置 ```php <?php // 配置内存管理(适用于常驻内存框架) \WeChat\Contracts\Tools::configureMemory([ 'auto_cleanup' => true, // 启用自动清理 'max_memory' => 128 * 1024 * 1024, // 128MB内存限制 'cleanup_threshold' => 0.8, // 80%内存使用率时清理 'gc_interval' => 100, // 每100次请求清理一次 ]); ``` ## 错误处理 ### 异常类型 WeChatDeveloper 提供了多种异常类型,便于精确处理不同类型的错误: ```php <?php try { $user = \WeChat\User::instance($config); $result = $user->getUserList(); } catch (\WeChat\Exceptions\InvalidResponseException $e) { // 接口调用异常 echo "接口错误:" . $e->getMessage(); } catch (\WeChat\Exceptions\LocalCacheException $e) { // 缓存异常 echo "缓存错误:" . $e->getMessage(); } catch (\WeChat\Exceptions\InvalidDecryptException $e) { // 解密异常 echo "解密错误:" . $e->getMessage(); } catch (Exception $e) { // 其他异常 echo "系统错误:" . $e->getMessage(); } ``` ## 最佳实践 ### 1. 配置管理 - 将敏感配置信息存储在环境变量中 - 使用配置文件管理不同环境的配置 - 定期轮换API密钥和证书 ### 2. 错误处理 - 实现完善的异常处理机制 - 记录详细的错误日志 - 提供用户友好的错误提示 ### 3. 性能优化 - 合理使用缓存机制 - 避免频繁的API调用 - 使用连接池管理HTTP连接 ### 4. 安全考虑 - 验证所有用户输入 - 使用HTTPS传输敏感数据 - 定期更新SDK版本 ## 注意事项 1. **配置完整性**:确保配置参数完整且正确,尤其是 `appid` 和 `appsecret` 2. **证书安全**:妥善保管支付证书文件,避免泄露 3. **权限设置**:确保缓存目录有读写权限 4. **异常处理**:实现完善的异常处理机制,便于问题排查 5. **版本兼容**:注意不同版本间的API差异 6. **生产环境**:生产环境建议使用HTTPS传输 7. **定期更新**:定期更新到最新版本以获得安全修复和功能改进