WeChatDeveloper
【新】微信服务号+微信小程序+微信支付+支付宝支付
Install / Use
/learn @zoujingli/WeChatDeveloperREADME
WeChatDeveloper for PHP
🚀 项目简介
WeChatDeveloper 是一个功能全面、安全可靠的 PHP 微信和支付宝开发 SDK,基于 wechat-php-sdk 重构优化而成。项目经过全面的安全加固和代码质量提升,为开发者提供稳定、安全、易用的微信生态和支付解决方案。
✨ 核心特性
🔒 安全可靠
- 输入验证:全面防护 XSS 攻击,所有用户输入都经过严格过滤和验证
- 文件安全:文件操作前进行存在性和权限检查,防止恶意利用
- 加密安全:使用 SHA-256 替代 MD5,提供更强的安全防护
- 序列化安全:添加反序列化数据验证,防止代码执行攻击
🎯 功能全面
- 微信生态:支持公众号、小程序、企业微信全生态开发
- 支付功能:支持微信支付 V2/V3、支付宝支付全场景
- 多端支持:覆盖 App、H5、PC、小程序等所有平台
- 接口完整:涵盖用户管理、消息推送、素材管理、支付等所有核心功能
⚡ 性能优化
- 自动刷新:AccessToken 失效自动刷新机制
- 缓存支持:支持自定义缓存驱动,可扩展 Redis 等
- 错误重试:智能错误重试机制,提高接口调用成功率
- 类型安全:修复所有类型声明问题,提升代码质量
- 自动缓存清理:自动清理 CURL 临时缓存文件,适配常驻内存框架
- 通用接口支持:提供
callApi()万能接口,支持多种 HTTP 方法,适用于所有场景
🛠 易于使用
- 统一入口:通过
\We::静态方法统一创建各种功能实例 - 向后兼容:完全保持原有 API 和参数,无需修改现有代码
- 通用接口:提供标准化的
callApi()方法,支持 GET/POST/PUT/DELETE 等多种 HTTP 方法 - 文档完善:提供详细的使用文档和示例代码
- 社区支持:活跃的社区和持续的技术支持
📋 系统要求
- PHP 版本:最低要求 PHP 5.4,建议 PHP 7.0+ 以获取最佳性能
- 扩展要求:curl、json、xml、openssl、mbstring、bcmath
- 权限要求:缓存目录需要写权限
- 推荐环境:PHP 7.4+ / PHP 8.0+ 生产环境
📦 快速开始
安装方式
方式一:Composer 安装(推荐)
# 安装稳定版本
composer require zoujingli/wechat-developer
# 安装开发版本
composer require zoujingli/wechat-developer dev-master
# 更新到最新版本
composer update zoujingli/wechat-developer
方式二:直接下载
# 下载项目到本地
git clone https://github.com/zoujingli/WeChatDeveloper.git
# 在项目中引入
include "WeChatDeveloper/include.php";
基础使用
<?php
// 1. 引入SDK
include "WeChatDeveloper/include.php";
// 2. 配置参数
$config = [
'appid' => 'your_wechat_appid',
'appsecret' => 'your_wechat_appsecret',
'mch_id' => 'your_merchant_id', // 微信支付需要
'mch_key' => 'your_merchant_key', // 微信支付需要
'cache_path' => '/path/to/cache' // 可选,缓存目录
];
// 3. 创建实例并调用
try {
// 微信用户管理
$user = \We::WeChatUser($config);
$userList = $user->getUserList();
// 微信支付
$pay = \We::WePayOrder($config);
$order = $pay->create($orderData);
// 支付宝支付
$alipay = \We::AliPayWeb($config);
$html = $alipay->apply($payData);
// 使用通用接口(万能接口)
// 所有接口类都提供 callApi() 方法,支持多种 HTTP 方法
$result = $user->callApi('https://api.weixin.qq.com/cgi-bin/user/get?ACCESS_TOKEN', [], 'GET');
$result = $pay->callApi('https://api.mch.weixin.qq.com/pay/unifiedorder', $data, 'POST');
$result = $alipay->callApi('alipay.trade.query', $params, 'GET'); // 支付宝:apiMethod 作为第一参数
} catch (Exception $e) {
echo "错误:" . $e->getMessage();
}
🎯 功能模块
📱 微信生态支持
微信公众号
- 用户管理:用户信息获取、标签管理、分组管理
- 消息推送:模板消息、客服消息、群发消息
- 素材管理:图片、语音、视频、图文素材上传和管理
- 菜单管理:自定义菜单创建、查询、删除
- 网页授权:OAuth2.0 网页授权,获取用户信息
- 二维码:临时二维码、永久二维码生成
- JSSDK:微信前端 JS-SDK 支持
- 卡券功能:微信卡券接口支持
- 门店管理:门店 WIFI 管理、摇一摇周边
微信小程序
- 数据加密:小程序数据加密解密处理
- 用户管理:用户信息获取、登录状态管理
- 消息推送:订阅消息、模板消息、动态消息
- 二维码:小程序码生成、URL Scheme
- 内容安全:图片内容检测、文本内容检测
- 物流助手:发货信息管理、物流状态查询
- 直播功能:小程序直播接口支持
- 搜索优化:小程序页面搜索优化
- 插件管理:小程序插件申请、管理
- OCR 服务:身份证、银行卡、驾驶证识别
- 生物认证:指纹、面部识别支持
企业微信
- 部门管理:部门信息获取、创建、更新
- 用户管理:企业用户信息管理
- 消息推送:企业消息推送功能
💰 支付功能支持
微信支付
- V2 接口:统一下单、查询、关闭、退款
- V3 接口:新一代支付接口,支持更多功能
- 支付方式:JSAPI、APP、H5、Native、小程序支付
- 订单管理:订单创建、查询、关闭、退款
- 账单管理:对账单下载、交易明细查询
- 企业付款:打款到零钱、打款到银行卡
- 分账功能:微信分账接口支持
- 代金券:代金券创建、发放、核销
- 红包功能:微信红包发送和管理
支付宝支付
- 支付方式:App 支付、Web 支付、Wap 支付、扫码支付、刷卡支付
- 订单管理:订单创建、查询、关闭、退款
- 转账功能:单笔转账、批量转账
- 账单管理:对账单下载、交易查询
- 证书支持:RSA、RSA2 签名,证书模式支持
💡 使用案例
📱 微信公众号功能
用户管理
<?php
// 获取用户列表
$user = \We::WeChatUser($config);
$result = $user->getUserList();
// 批量获取用户信息
foreach (array_chunk($result['data']['openid'], 100) as $openids) {
$userList = $user->getBatchUserInfo($openids);
foreach ($userList['user_info_list'] as $userInfo) {
echo "用户:" . $userInfo['nickname'] . "\n";
}
}
// 设置用户备注
$user->updateMark('openid', 'VIP用户');
二维码生成
<?php
// 创建临时二维码
$qrcode = \We::WeChatQrcode($config);
$result = $qrcode->create('场景内容');
// 获取二维码链接
$url = $qrcode->url($result['ticket']);
echo "二维码链接:" . $url;
菜单管理
<?php
// 获取当前菜单
$menu = \We::WeChatMenu($config);
$result = $menu->get();
// 创建自定义菜单
$menuData = [
'button' => [
[
'type' => 'click',
'name' => '今日歌曲',
'key' => 'V1001_TODAY_MUSIC'
],
[
'name' => '菜单',
'sub_button' => [
[
'type' => 'view',
'name' => '搜索',
'url' => 'http://www.soso.com/'
]
]
]
]
];
$menu->create($menuData);
💰 微信支付功能
微信支付 V2 接口
<?php
// 创建支付订单
$pay = \We::WePayOrder($config);
$options = [
'body' => '测试商品',
'out_trade_no' => time(),
'total_fee' => '1',
'openid' => 'o38gpszoJoC9oJYz3UHHf6bEp0Lo',
'trade_type' => 'JSAPI', // JSAPI/NATIVE/APP/MWEB
'notify_url' => 'https://your-domain.com/notify.php',
'spbill_create_ip' => '127.0.0.1',
];
$result = $pay->create($options);
// 生成JSAPI支付参数
$jsApiParams = $pay->createParamsForJsApi($result['prepay_id']);
// 将 $jsApiParams 传给前端发起支付
微信支付 V3 接口
<?php
// 创建V3支付订单
$payment = \WePayV3\Order::instance($config);
$order = (string)time();
// JSAPI支付
$result = $payment->create('jsapi', [
'appid' => $config['appid'],
'mchid' => $config['mch_id'],
'description' => '商品描述',
'out_trade_no' => $order,
'notify_url' => 'https://your-domain.com/notify.php',
'payer' => ['openid' => 'o38gps3vNdCqaggFfrBRCRikwlWY'],
'amount' => ['total' => 2, 'currency' => 'CNY'],
]);
// H5支付
$result = $payment->create('h5', [
'appid' => $config['appid'],
'mchid' => $config['mch_id'],
'description' => '商品描述',
'out_trade_no' => $order,
'notify_url' => 'https://your-domain.com/notify.php',
'amount' => ['total' => 2, 'currency' => 'CNY'],
'scene_info' => [
'h5_info' => ['type' => 'Wap'],
'payer_client_ip' => '14.23.150.211',
],
]);
// 查询订单
$result = $payment->query($order);
// 创建退款
$refundResult = $payment->createRefund([
'out_trade_no' => $order,
'out_refund_no' => strval(time()),
'amount' => [
'refund' => 2,
'total' => 2,
'currency' => 'CNY'
]
]);
微信红包
<?php
// 发送微信红包
$redpack = \We::WePayRedpack($config);
$options = [
'mch_billno' => time(),
're_openid' => 'o38gps3vNdCqaggFfrBRCRikwlWY',
'send_name' => '商户名称',
'act_name' => '活动名称',
'total_amount' => '100',
'total_num' => '1',
'wishing' => '感谢您参加活动!',
'remark' => '快来抢红包!',
'client_ip' => '127.0.0.1',
];
$result = $redpack->create($options);
// 查询红包记录
$result = $redpack->query($options['mch_billno']);
💳 支付宝支付功能
网站支付
<?php
// 支付宝网站支付
$alipay = \We::AliPayWeb($config);
$result = $alipay->apply([
'out_trade_no' => time(),
'total_amount' => '1',
'subject' => '支付订单描述',
]);
// 直接输出HTML表单,用户点击即可跳转支付
echo $result;
App 支付
<?php
// 支付宝App支付
$alipay = \We::AliPayApp($config);
$result = $alipay->apply([
'out_trade_no' => strval(time()),
'total_amount' => '1',
'subject' => '支付宝订单标题',
]);
// 返回支付参数字符串,传给App端
echo $result;
转账功能
<?php
// 支付宝转账
$transfer = \We::AliPayTransfer($config);
$result = $transfer->create([
'out_biz_no' => time(),
'trans_amount' => '10',
'product_code' => 'TRANS_ACCOUNT_NO_PWD',
'biz_scene' => 'DIRECT_TRANSFER',
'payee_info' => [
'identity' => 'zoujingli@qq.com',
'identity_type' => 'ALIPAY_LOGON_ID',
'name' => '收款人姓名',
],
]);
📱 微信小程序功能
用户登录和数据解密
<?php
// 小程序用户登录
$mini = \We::WeMiniCrypt($config);
// 获取session_key
$session = $mini->session($code);
// 解密用户数据
$userInfo = $mini->userInfo($code, $iv, $encryptedData);
// 直接解密数据
$decoded = $mini->decode($iv, $sessionKey, $encryptedData);
小程序码生成
<?php
// 生成小程序码
$qrcode = \We::WeMiniQrcode($config);
$result = $qrcode->create([
'scene' => 'id=123',
'page' => 'pages/index/index',
'width' => 430
]);
🔧 高级功能
通用接口(万能接口)
所有接口类都提供了 callApi() 通用方法,支持多种 HTTP 方法(GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS),可以直接传入完整 URL 和参数进行请求,适用于官方新增接口或自定义接口调用。
方法签名:
// 微信公众号
callApi(string $url, array|string $data = [], string $method = 'GET')
// 微信支付V2
callApi(string $url, array|string $data = [], string $method = 'POST', bool $isCert = false, string $signType = 'HMAC-SHA256')
// 微信支付V3
callApi(string $url, array|string $data = '', string $method = 'POST', bool $verify = fals
