【新】微信服务号+微信小程序+微信支付+支付宝支付
WeChatDeveloper 是一个功能全面、安全可靠的 PHP 微信和支付宝开发 SDK,基于 wechat-php-sdk 重构优化而成。项目经过全面的安全加固和代码质量提升,为开发者提供稳定、安全、易用的微信生态和支付解决方案。
callApi() 万能接口,支持多种 HTTP 方法,适用于所有场景\We::静态方法统一创建各种功能实例callApi() 方法,支持 GET/POST/PUT/DELETE 等多种 HTTP 方法# 安装稳定版本
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
// 获取用户列表
$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);<?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 传给前端发起支付…<?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;<?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' => '[email protected]',
'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 = false)
// 支付宝
callApi(string $apiMethod, array|string $data = [], string $method = 'GET', bool $verify = false)支持的 HTTP 方法:
GET - 获取资源(默认:微信公众号、支付宝)POST - 创建/提交数据(默认:微信支付)PUT - 更新资源DELETE - 删除资源PATCH - 部分更新HEAD - 获取响应头OPTIONS - 获取支持的方法…参数说明:
$url (string) - 完整URL或相对路径(支持 ACCESS_TOKEN 占位符,自动替换)$data (array|string) - 请求参数(GET参数或POST数据,支持数组或字符串)$method (string) - 请求方法 GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS,默认 GET默认行为:
…参数说明:
$url (string) - 完整URL$data (array|string) - 请求参数(支持数组或字符串)$method (string) - 请求方法 GET|POST|PUT|DELETE|PATCH,默认 POST$isCert (bool) - 是否需要证书,默认 false$signType (string) - 签名类型 MD5|HMAC-SHA256,默认 HMAC-SHA256默认行为:
…参数说明:
$url (string) - 完整URL或相对路径(如 /v3/pay/transactions/jsapi)$data (array|string) - 请求数据(数组会自动转为JSON)$method (string) - 请求方法 GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS,默认 POST$verify (bool) - 验证响应签名,默认 false默认行为:
<?php
$alipay = \We::AliPayWeb($config);
// GET请求 - 查询订单
$result = $alipay->callApi(
'alipay.trade.query', // API方法名(必填,第一参数)
['out_trade_no' => '123456'],
'GET',
false // 验证响应签名,默认false
);
// POST请求 - 订单退款
$result = $alipay->callApi(
'alipay.trade.refund', // API方法名(第一参数)
[
'out_trade_no' => '123456',
'refund_amount' => '10',
],
'POST',
false // 不验证响应签名
);
// PUT/DELETE请求
$result = $alipay->callApi('alipay.some.method', $data, 'PUT', false);参数说明:
$apiMethod (string) - API方法名(如:alipay.trade.query),必填,第一参数$data (array|string) - 请求参数(支持数组或字符串)$method (string) - 请求方法 GET|POST|PUT|DELETE|PATCH,默认 GET$verify (bool) - 验证响应签名,默认 false默认行为:
SDK 支持自定义缓存驱动,可以适配 Redis、Memcached 等缓存系统,特别适用于常驻内存框架(Workerman、Swoole 等)。
…<?php
try {
$user = \We::WeChatUser($config);
$result = $user->getUserList();
} catch (\WeChat\Exceptions\InvalidResponseException $e) {
// 接口调用异常
echo "接口错误:" . $e->getMessage();
} catch (\WeChat\Exceptions\LocalCacheException $e) {
// 缓存异常
echo "缓存错误:" . $e->getMessage();
} catch (Exception $e) {
// 其他异常
echo "系统错误:" . $e->getMessage();
}<?php
$mini = \We::WeMiniNewtmpl($config);
$mini->send([
'touser' => '用户openid',
'template_id' => '模板ID',
'page' => 'pages/index?foo=bar',
'data' => [
'thing1' => ['value' => '订单已支付'],
'time2' => ['value' => '2024-01-01 12:00'],
],
]);<?php
$security = \We::WeMiniSecurity($config);
// 文本校验
$security->msgSecCheck('留言内容示例');
// 图片校验(文件流)
$imgContent = file_get_contents('/path/to/demo.jpg');
$security->imgSecCheck($imgContent);<?php
$wechatConfig = [
'appid' => 'wx60a43dd8161666d4',
'appsecret' => 'b4e28746f1bd73b5c6684f5e01883c36',
'token' => 'your_wechat_token',
'encodingaeskey' => 'your_encodingaeskey',
'cache_path' => '/path/to/cache',
];……A: 登录微信商户平台,在"账户中心" -> "API 安全" -> "API 证书"中下载证书文件,或使用 API 证书下载工具。
A: 设置 debug => true 并使用沙箱环境的 appid 和密钥即可。
A: SDK 已内置自动刷新机制,无需手动处理。如需自定义,可设置 GetAccessTokenCallback 回调函数。
A: 配置 \WeChat\Contracts\Tools::$cache_callable 数组,实现自定义的缓存逻辑。
A: 最低支持 PHP 5.4,建议使用 PHP 7.0+ 以获得最佳性能。
A: 使用 \WeChat\Receive 类处理微信支付回调,使用 \AliPay\Web 的 notify() 方法处理支付宝回调。
A: 确保 session_key 有效且未过期,检查 iv 和 encryptedData 参数是否正确。
A: 开启错误日志,查看具体的错误信息。SDK 会抛出详细的异常信息帮助定位问题。
A: SDK 会自动清理 CURL 缓存文件,无需额外配置。在常驻内存环境中,建议通过自定义缓存驱动(\WeChat\Contracts\Tools::$cache_callable)使用 Redis 等外部缓存,避免文件缓存带来的问题。
| 文件名 | 类名 | 描述 | 类型 | 加载方法 |
|---|---|---|---|---|
| 支付宝支付 | ||||
| App.php | AliPay\App | 支付宝 App 支付 | 支付宝支付 | \We::AliPayApp() |
| Bill.php | AliPay\Bill | 支付宝账单下载 | 支付宝支付 | \We::AliPayBill() |
| Pos.php | AliPay\Pos | 支付宝刷卡支付 | 支付宝支付 | \We::AliPayPos() |
| Scan.php | AliPay\Scan | 支付宝扫码支付 | 支付宝支付 | \We::AliPayScan() |
| Transfer.php | AliPay\Transfer | 支付宝转账 | 支付宝支付 | \We::AliPayTransfer() |
| Wap.php | AliPay\Wap | 支付宝 Wap 支付 | 支付宝支付 | \We::AliPayWap() |
| Web.php | AliPay\Web | 支付宝 Web 支付 | 支付宝支付 | \We::AliPayWeb() |
| 微信公众号 |
暂无开放 Issues,或尚未同步最近议题。