p18 / cp_weixin
CP Weixin SDK
dev-master
2026-01-26 01:58 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^9.6
This package is not auto-updated.
Last update: 2026-02-10 01:27:33 UTC
README
面向微信公众号/小程序/支付/服务器的纯 PHP SDK,目标是调用简单、参数最少、功能整合、封装完整。
安装
composer require p18/cp_weixin
快速开始(公众号 OAuth)
<?php
use CpWeixin\Weixin;
$user = Weixin::officialAccount([
'appid' => 'wx_xxx',
'secret' => 'secret_xxx',
])->getUserInfoByCode($_GET['code'] ?? '');
微信扫码授权登录(PC网站)
<?php
use CpWeixin\Weixin;
$oa = Weixin::officialAccount([
'appid' => 'wx_xxx', // 微信开放平台网站应用的 AppID
'secret' => 'secret_xxx', // 微信开放平台网站应用的 AppSecret
]);
// 生成扫码授权登录链接
$qrconnectUrl = $oa->qrconnectUrl('https://example.com/callback', 'state_123');
// 在回调页面处理
if (isset($_GET['code'])) {
$userInfo = $oa->getUserInfoByCode($_GET['code']);
// 处理登录逻辑...
}
公众号服务器(一键处理)
<?php
use CpWeixin\Weixin;
use CpWeixin\OfficialAccount\Reply;
$oa = Weixin::officialAccount([
'appid' => 'wx_xxx',
'secret' => 'secret_xxx',
'token' => 'token_xxx',
'encodingaeskey' => 'encodingaeskey_xxx', // 可选,启用消息加密
]);
// 配置消息路由
$router = $oa->router()
->onMessage('text', function (array $msg) {
return Reply::text('收到:' . ($msg['Content'] ?? ''));
})
->onEvent('subscribe', function () {
return Reply::text('欢迎关注');
})
->fallback(function () {
return 'success';
});
// 一键处理(自动验证签名、处理首次接入、处理消息、自动加密/解密)
echo $oa->server()->serve($router);
公众号 API 示例(菜单)
<?php
use CpWeixin\Weixin;
$resp = Weixin::officialAccount([
'appid' => 'wx_xxx',
'secret' => 'secret_xxx',
])->menuCreate([
[
'type' => 'view',
'name' => '官网',
'url' => 'https://example.com',
],
]);
小程序示例(登录)
<?php
use CpWeixin\Weixin;
$session = Weixin::miniProgram([
'appid' => 'wx_xxx',
'secret' => 'secret_xxx',
])->codeToSession($_GET['code'] ?? '');
// $session 可能包含 unionid(如果小程序绑定了开放平台)
获取 UnionID(无需网页授权)
<?php
use CpWeixin\Weixin;
// 方式一:公众号已关注用户(无需授权)
$oa = Weixin::officialAccount([
'appid' => 'wx_xxx',
'secret' => 'secret_xxx',
]);
$userInfo = $oa->getUserInfo('openid_xxx'); // 包含 unionid
// 方式二:小程序支付后获取(无需授权)
$mp = Weixin::miniProgram([
'appid' => 'wx_xxx',
'secret' => 'secret_xxx',
]);
$result = $mp->getPaidUnionId('openid_xxx', 'transaction_id_xxx');
// 方式三:小程序登录(可能包含 unionid,无需授权)
$session = $mp->codeToSession('js_code_xxx'); // 可能包含 unionid
支付 JSAPI 示例
<?php
use CpWeixin\Weixin;
$resp = Weixin::pay([
'appid' => 'wx_xxx',
'mch_id' => '1900000109',
'serial_no' => '77759EF9F2D4C5C6',
'private_key_path' => '/path/to/apiclient_key.pem',
'api_v3_key' => 'api_v3_key_xxx',
])->jsapi([
'description' => '商品描述',
'out_trade_no' => 'ORDER_123',
'notify_url' => 'https://example.com/notify',
'amount' => ['total' => 1, 'currency' => 'CNY'], // amount 为对象,包含 total(分)和 currency
'payer' => ['openid' => 'OPENID'], // payer 为对象,包含 openid
]);
支付回调处理(一键处理)
<?php
use CpWeixin\Weixin;
$pay = Weixin::pay([
'appid' => 'wx_xxx',
'mch_id' => '1900000109',
'serial_no' => '77759EF9F2D4C5C6',
'private_key_path' => '/path/to/apiclient_key.pem',
'api_v3_key' => 'api_v3_key_xxx',
'pay_cert_cache' => '/path/to/cert_cache',
]);
// 一键处理支付回调(自动验证签名、解密、处理)
echo $pay->notify()->serve(function (array $data) {
$eventType = $data['event_type'] ?? '';
if ($eventType === 'TRANSACTION.SUCCESS') {
$resource = $data['resource'] ?? [];
$outTradeNo = $resource['out_trade_no'] ?? '';
// 处理业务逻辑...
}
});
小程序物流回调(一键处理)
<?php
use CpWeixin\Weixin;
$mp = Weixin::miniProgram([
'appid' => 'wx_xxx',
'secret' => 'secret_xxx',
'logistics_token' => 'logistics_token_xxx',
]);
// 一键处理物流回调(自动验证签名、解析、处理)
echo $mp->logisticsServer()->serve(function (array $data) {
// 处理业务逻辑...
return 'success';
});
模块方法列表
公众号 OAuth 模块
oauthUrl生成 OAuth 授权链接(公众号网页授权,微信内打开)qrconnectUrl生成扫码授权登录链接(PC网站扫码登录)oauthState生成 stateverifyState校验 stateoauthAccessTokencode 换取 OAuth access_tokenoauthUserInfo使用 OAuth access_token 获取用户信息getUserInfoByCode一步获取 OAuth 用户信息getUserInfo无需授权获取用户信息(已关注用户,包含 unionid)
公众号服务器模块
server获取服务器处理实例router创建消息路由器Server::serve一键处理服务器请求(自动验证签名、首次接入、消息处理、加密/解密)Server::validate校验签名Server::echoStr首次接入回显Server::handle处理消息并返回 XML(支持消息加密)MessageRouter::onMessage注册消息处理器MessageRouter::onEvent注册事件处理器MessageRouter::fallback注册兜底处理器MessageRouter::dispatch分发消息Reply::text构建文本回复Reply::image构建图片回复Reply::voice构建语音回复Reply::video构建视频回复Reply::music构建音乐回复Reply::news构建图文回复(单条/多条)Reply::newsItem构建图文项MessageCrypt消息加解密工具(自动处理,无需直接调用)
公众号 API 模块
getUserInfo获取用户信息getUserList获取用户列表batchGetUserInfo批量获取用户信息userRemark设置用户备注名blacklistGet获取黑名单列表blacklistAdd批量加入黑名单blacklistRemove批量移出黑名单menuCreate创建自定义菜单menuGet获取菜单配置menuDelete删除菜单qrcodeCreateTemporary创建临时二维码qrcodeCreatePermanent创建永久二维码qrcodeUrl获取二维码图片链接shortUrl长链接转短链接templateSend发送模板消息templateList获取模板列表templateDelete删除模板customerServiceSendText发送客服文本消息customerServiceSendImage发送客服图片消息customerServiceSendVoice发送客服语音消息customerServiceSendVideo发送客服视频消息customerServiceSendMusic发送客服音乐消息customerServiceSendNews发送客服图文消息(单条)customerServiceSendMpNews发送客服图文消息(多条)customerServiceSendCard发送客服卡券消息customerServiceSendMiniProgramPage发送客服小程序卡片消息tagGet获取全部标签tagCreate创建标签tagUpdate更新标签tagDelete删除标签tagUsers获取标签下用户tagBatch批量打/取消标签getJsApiTicket获取 JSAPI ticketjsApiSignature生成 JS-SDK 签名jsApiConfig生成 JS-SDK 配置mediaUpload上传临时素材mediaUploadImage上传图文内图片materialAdd上传永久素材materialAddNews新增永久图文素材materialUpdateNews更新永久图文素材materialDelete删除永久素材materialCount获取素材总数materialBatchGet批量获取素材列表materialGet获取永久素材
小程序模块
logisticsServer获取物流回调处理实例codeToSessioncode 换取 session 信息(可能包含 unionid,无需授权)getPhoneNumber获取手机号decryptUserData解密用户数据getPaidUnionId通过支付获取 UnionID(无需授权)getWxaCode生成小程序码(数量限制)getWxaCodeUnlimit生成小程序码(无限制)createWxaQrCode生成二维码generateUrlScheme生成 URL SchemegenerateUrlLink生成 URL LinkgenerateShortLink生成短链getAccountBasicInfo获取账号基本信息getCategory获取可选类目getCategoryList获取已设置类目getPage获取页面列表codeCommit上传代码并生成体验版codeGetQrCode获取体验版二维码codeSubmitAudit提交审核codeGetAuditStatus查询审核状态codeGetLatestAuditStatus查询最新审核状态codeRelease发布版本codeGetVersionInfo查询版本信息codeSpeedupAudit加速审核codeQueryQuota查询审核配额codeRollbackRelease撤回已发布版本codeBindTester绑定体验者codeUnbindTester解除体验者codeGetTesterList获取体验者列表getPrivacySetting查询隐私配置setPrivacySetting设置隐私配置subscribeSend发送订阅消息subscribeTemplateAdd订阅模板:添加subscribeTemplateDelete订阅模板:删除subscribeTemplateGetList订阅模板:列表subscribeTemplateGetPubTitles订阅模板:公共标题subscribeTemplateGetPubKeywords订阅模板:关键词customerServiceSendText发送客服文本消息customerServiceAdd客服:新增账号customerServiceUpdate客服:更新账号customerServiceDelete客服:删除账号customerServiceGetList客服:账号列表customerServiceGetOnlineList客服:在线列表customerServiceUploadHeadImg客服:设置头像msgSecCheck文本内容安全检测imgSecCheck图片内容安全检测mediaCheckAsync异步媒体内容安全检测setSearchStatus设置搜索开关getSearchStatus获取搜索开关状态getDailyVisitTrend获取日访问趋势getWeeklyVisitTrend获取周访问趋势getMonthlyVisitTrend获取月访问趋势getVisitTrend获取访问趋势getDailySummary获取日累计概况getVisitDistribution获取访问分布getVisitPage获取访问页面getUserPortrait获取用户画像liveCreateRoom创建直播间liveUpdateRoom更新直播间liveDeleteRoom删除直播间getLiveInfo获取直播间列表getLiveReplay获取直播回放列表liveGetPushUrl获取直播间推流地址liveGoodsAdd直播商品:添加liveGoodsAudit直播商品:提交审核liveGoodsResetAudit直播商品:撤回审核liveGoodsDelete直播商品:删除liveGoodsGetWarehouse直播商品:列表liveGoodsPush直播商品:推送到直播间liveGoodsSort直播商品:排序logisticsAddOrder物流:创建运单logisticsGetOrder物流:查询运单logisticsCancelOrder物流:取消运单logisticsGetAllOrders物流:获取所有运单logisticsGetAllDelivery物流:获取快递公司列表logisticsOpenMessage物流:开通通知logisticsUpdatePath物流:更新运单轨迹logisticsGetPath物流:获取运单轨迹
小程序物流回调模块
logisticsServer获取物流回调处理实例LogisticsServer::serve一键处理物流回调(自动验证签名、解析、处理)LogisticsServer::validate校验回调签名LogisticsServer::parseJson解析回调 JSONLogisticsServer::handle处理回调内容LogisticsServer::success返回成功响应
支付模块
支付下单
jsapiJSAPI 支付h5H5 支付nativeNative 支付appApp 支付combine合单支付下单serviceProvider获取服务商模块实例
订单管理
queryByTransactionId通过微信订单号查询queryByOutTradeNo通过商户订单号查询close关闭订单confirm确认收货(虚拟产品订单完成,解冻资金)combineQuery查询合单订单combineClose关闭合单订单
退款管理
refund申请退款refundQuery查询退款(商户退款单号)refundQueryByRefundId查询退款(微信退款单号)
分账管理
profitSharing请求分账profitSharingQuery查询分账结果profitSharingReturn请求分账回退profitSharingReturnQuery查询分账回退结果profitSharingUnfreeze解冻剩余资金profitSharingQueryRatio查询最大分账比例profitSharingAddReceiver添加分账接收方profitSharingDeleteReceiver删除分账接收方
转账管理
transferToBalance转账到零钱transferQueryBatch查询转账批次单transferQueryDetail查询转账明细单transferReceipt查询转账明细电子回单
账单管理
tradeBill申请交易账单fundflowBill申请资金账单downloadBill下载账单文件
证书与回调
certificates获取平台证书buildJsapiConfig生成 JSAPI 配置certificatesManager证书管理器notify支付通知处理Notify::serve一键处理支付回调(自动获取请求头/体、校验签名、解密、处理)Notify::verify校验回调签名Notify::decryptResource解密回调资源数据Notify::parse解析支付回调数据Notify::success返回成功响应Notify::fail返回失败响应
服务商模块
服务商支付下单
jsapi服务商 JSAPI 支付(代子商户下单)h5服务商 H5 支付(代子商户下单)native服务商 Native 支付(代子商户下单)app服务商 App 支付(代子商户下单)combine服务商合单支付下单
服务商订单管理
queryByTransactionId服务商查询订单(微信支付订单号)queryByOutTradeNo服务商查询订单(商户订单号)close服务商关闭订单confirm服务商确认收货(虚拟产品订单完成,解冻资金)combineQuery服务商查询合单订单combineClose服务商关闭合单订单
服务商退款管理
refund服务商申请退款refundQuery服务商查询退款(商户退款单号)refundQueryByRefundId服务商查询退款(微信退款单号)
子商户进件管理
applymentSubmit提交子商户进件申请applymentQuery查询申请单状态(申请单 ID)applymentQueryByBusinessCode查询申请单状态(业务申请编号)modifySettlement修改结算账号querySettlement查询结算账号
子商户管理
querySubMerchant查询子商户信息querySubMerchantList查询子商户列表(支持分页)modifySubMerchant修改子商户信息modifySubMerchantStatus修改子商户状态(启用/停用)querySubMerchantRate查询子商户费率配置modifySubMerchantRate修改子商户费率配置querySubMerchantBalance查询子商户资金账户余额querySubMerchantFundflow查询子商户资金流水querySubMerchantOrders批量查询子商户订单querySubMerchantRefunds批量查询子商户退款
服务商分账管理
profitSharing服务商分账profitSharingQuery服务商查询分账结果profitSharingReturn服务商分账回退profitSharingReturnQuery服务商查询分账回退结果profitSharingUnfreeze服务商解冻剩余资金profitSharingQueryRatio服务商查询最大分账比例profitSharingAddReceiver服务商添加分账接收方profitSharingDeleteReceiver服务商删除分账接收方
服务商转账管理
transferToBalance服务商转账到零钱transferQueryBatch服务商查询转账批次单transferQueryDetail服务商查询转账明细单transferReceipt服务商查询转账明细电子回单
服务商账单管理
tradeBill服务商申请交易账单fundflowBill服务商申请资金账单downloadBill服务商下载账单文件
服务商 JSAPI 配置
buildJsapiConfig生成服务商 JSAPI 调起支付配置miniProgram获取服务商小程序模块实例
服务商小程序模块
小程序授权管理
getPreAuthCode获取预授权码(用于小程序授权)authorizationUrl生成小程序授权链接getAuthorizationInfo使用授权码获取授权信息getAuthorizerInfo获取授权方信息(小程序信息)getAuthorizerAccessToken获取授权方 access_tokengetAuthorizerList获取授权方列表
服务商小程序支付
jsapi服务商代小程序支付下单(需要 sub_appid 和 sub_mchid)
服务商小程序登录
codeToSession服务商小程序登录(通过 code 获取 session,需要 sub_appid)
配置项
appid应用 AppIDsecret应用 AppSecrettoken公众号服务器配置 Tokenencodingaeskey消息加解密密钥(43位,可选,启用后自动处理加密/解密)logistics_token物流回调 Token(小程序)mch_id商户号serial_no商户证书序列号private_key_path商户私钥文件路径api_v3_keyAPIv3 密钥pay_cert_cache支付证书缓存目录component_appid第三方平台 AppID(服务商小程序授权,可选)component_appsecret第三方平台 AppSecret(服务商小程序授权,可选)component_verify_ticket第三方平台验证票据(服务商小程序授权,可选)timeout请求超时(秒),可选,默认 10
规划与进度
- 公众号:基础能力已完成(OAuth/服务器/菜单/用户/素材/标签/JS-SDK 等)
- 小程序:基础能力已完成(登录/手机号/码/链接/内容安全/订阅消息/客服/物流/分析/版本等)
- 支付:基础能力已完成(支付下单/订单查询/退款/账单/回调处理等)
- 服务商:基础能力已完成(代子商户下单/订单查询/退款/进件/分账/转账/账单/小程序授权等)✨
- 服务器:基础能力已完成(消息处理/加密解密/多种回复类型/支付回调/物流回调等)
约定
- 所有 API 返回数组
- 统一抛出
CpWeixin\Core\Exceptions\WeixinException