super-vle/easy_pay
Composer 安装命令:
composer require super-vle/easy_pay
包简介
PHP支付集成组件,支持微信支付、微信合作平台(服务商模式)、支付宝等常见支付方式
README 文档
README
PHP 支付集成组件,统一封装微信支付、微信合作平台(服务商模式)、支付宝、慧收款(宝付聚合支付)等常见支付方式,提供一致的 API 调用体验。
支持的支付方式
| 支付网关 | 类名 | 说明 |
|---|---|---|
| 微信支付 | Wechat\WechatPay |
普通商户模式,支持 JSAPI/APP/H5/Native/付款码 |
| 微信合作平台 | Wechat\PartnerPay |
服务商模式,支持子商户管理 |
| 支付宝 | Alipay\Alipay |
支持电脑网站/手机网站/APP/扫码/JSAPI |
| 慧收款 | Huishouqian\Huishouqian |
宝付聚合支付,支持全场景支付/查询/退款/通知 |
环境要求
- PHP >= 7.4
- ext-json
- ext-openssl
- ext-curl
- Composer
安装
composer require easy/easy_pay
快速开始
微信支付(普通商户)
use EasyPay\EasyPay; $wechat = EasyPay::wechat([ 'app_id' => '你的公众号/小程序/APP的AppID', 'mch_id' => '你的商户号', 'api_key' => '你的API密钥', 'notify_url' => 'https://your-domain.com/notify/wechat', ]); // JSAPI 支付(公众号/小程序) $result = $wechat->pay([ 'body' => '测试商品', 'out_trade_no' => 'ORDER20231201001', 'total_fee' => 1, // 金额单位:分 'trade_type' => 'JSAPI', 'openid' => '用户的openid', ]); // 返回前端调起支付所需的参数 // Native 扫码支付 $result = $wechat->pay([ 'body' => '扫码测试商品', 'out_trade_no' => 'ORDER20231201002', 'total_fee' => 100, 'trade_type' => 'NATIVE', ]); // $result['code_url'] 为支付二维码链接 // APP 支付 $result = $wechat->pay([ 'body' => 'APP商品', 'out_trade_no' => 'ORDER20231201003', 'total_fee' => 100, 'trade_type' => 'APP', ]); // H5 支付 $result = $wechat->pay([ 'body' => 'H5商品', 'out_trade_no' => 'ORDER20231201004', 'total_fee' => 100, 'trade_type' => 'MWEB', 'scene_info' => json_encode([ 'h5_info' => ['type' => 'Wap', 'wap_url' => 'https://your-domain.com', 'wap_name' => '测试网站'] ]), ]);
微信合作平台(服务商模式)
use EasyPay\EasyPay; $partner = EasyPay::wechatPartner([ 'app_id' => '服务商AppID', 'mch_id' => '服务商商户号', 'sub_mch_id' => '子商户商户号', 'sub_app_id' => '子商户AppID(可选)', 'api_key' => 'API密钥', 'notify_url' => 'https://your-domain.com/notify/wechat', ]); // 服务商为子商户发起支付(参数与普通模式类似,自动附加子商户信息) $result = $partner->pay([ 'body' => '子商户商品', 'out_trade_no' => 'SUB20231201001', 'total_fee' => 100, 'trade_type' => 'JSAPI', 'openid' => '用户的openid', ]);
支付宝
use EasyPay\EasyPay; $alipay = EasyPay::alipay([ 'app_id' => '你的支付宝AppID', 'private_key' => '/path/to/private_key.pem', // 应用私钥路径或内容 'alipay_public_key' => '/path/to/alipay_public_key.pem', // 支付宝公钥路径或内容 'notify_url' => 'https://your-domain.com/notify/alipay', 'return_url' => 'https://your-domain.com/return/alipay', 'sign_type' => 'RSA2', // RSA 或 RSA2 ]); // 电脑网站支付(返回自动提交的 HTML 表单) $html = $alipay->pagePay([ 'subject' => '测试商品', 'out_trade_no' => 'ALI20231201001', 'total_amount' => '0.01', // 金额单位:元 'body' => '商品描述', ]); echo $html; // 手机网站支付 $result = $alipay->wapPay([ 'subject' => '手机商品', 'out_trade_no' => 'ALI20231201002', 'total_amount' => '0.01', ]); // APP 支付(返回参数字符串) $paramStr = $alipay->appPay([ 'subject' => 'APP商品', 'out_trade_no' => 'ALI20231201003', 'total_amount' => '0.01', ]); // 扫码支付 $result = $alipay->preCreate([ 'subject' => '扫码商品', 'out_trade_no' => 'ALI20231201004', 'total_amount' => '0.01', ]); // 付款码支付 $result = $alipay->barCodePay([ 'subject' => '付款码商品', 'out_trade_no' => 'ALI20231201005', 'total_amount' => '0.01', 'auth_code' => '用户付款码', ]);
慧收款(宝付聚合支付)
use EasyPay\EasyPay; $hsq = EasyPay::huishouqian([ 'mer_id' => '宝付分配的商户号', 'ter_id' => '宝付分配的终端号', 'private_key' => '/path/to/private_key.pem', // 商户私钥 'public_key' => '/path/to/public_key.pem', // 宝付平台公钥 'sign_type' => 'RSA', // RSA 或 SM2(国密) 'notify_url' => 'https://your-domain.com/notify/huishouqian', ]); // JSAPI 支付(公众号/小程序) $result = $hsq->payJsapi([ 'body' => '测试商品', 'out_trade_no' => 'HSQ20231201001', 'total_amount' => '0.01', // 金额单位:元 'openid' => '用户的openid', ]); // APP 支付 $result = $hsq->payApp([ 'body' => 'APP商品', 'out_trade_no' => 'HSQ20231201002', 'total_amount' => '0.01', ]); // H5 支付 $result = $hsq->payH5([ 'body' => 'H5商品', 'out_trade_no' => 'HSQ20231201003', 'total_amount' => '0.01', ]); // PC 支付 $result = $hsq->payPc([ 'body' => 'PC商品', 'out_trade_no' => 'HSQ20231201004', 'total_amount' => '0.01', ]); // 主扫支付(用户扫码) $result = $hsq->masterScan([ 'body' => '扫码商品', 'out_trade_no' => 'HSQ20231201005', 'total_amount' => '0.01', ]); // $result['code_url'] 为二维码链接 // 被扫支付(商户扫用户付款码) $result = $hsq->microPay([ 'body' => '付款码商品', 'out_trade_no' => 'HSQ20231201006', 'total_amount' => '0.01', 'auth_code' => '用户付款码', ]); // 综合支付(前端自动选择支付方式) $result = $hsq->composite([ 'body' => '综合商品', 'out_trade_no' => 'HSQ20231201007', 'total_amount' => '0.01', ]); // 查询订单 $order = $hsq->query('HSQ20231201001'); // 关闭订单 $hsq->close('HSQ20231201001'); // 申请退款 $refund = $hsq->refund([ 'out_trade_no' => 'HSQ20231201001', 'out_refund_no' => 'RF20231201001', 'total_amount' => '0.01', 'refund_amount' => '0.01', 'refund_reason' => '用户申请退款', ]); // 处理回调 try { $data = $hsq->notify(); // 自动验签 // 处理业务逻辑 echo $hsq->replySuccess(); // 返回 "OK" } catch (\EasyPay\Exceptions\PaymentException $e) { echo $hsq->replyFail(); }
通用操作
订单查询
// 微信 $order = $wechat->query('ORDER20231201001'); // 支付宝 $order = $alipay->query('ALI20231201001');
关闭订单
// 微信 $wechat->close('ORDER20231201001'); // 支付宝 $alipay->close('ALI20231201001');
申请退款
// 微信 $refund = $wechat->refund([ 'out_trade_no' => 'ORDER20231201001', 'out_refund_no' => 'RF20231201001', 'total_fee' => 100, // 原订单金额(分) 'refund_fee' => 50, // 退款金额(分) 'refund_desc' => '用户申请退款', ]); // 支付宝 $refund = $alipay->refund([ 'out_trade_no' => 'ALI20231201001', 'out_request_no' => 'RF20231201001', 'refund_amount' => '0.01', // 退款金额(元) 'refund_reason' => '用户申请退款', ]);
查询退款
// 微信 $refundInfo = $wechat->queryRefund('RF20231201001'); // 支付宝 $refundInfo = $alipay->queryRefund('RF20231201001');
处理支付回调通知
// 微信 try { $data = $wechat->notify(); // 自动验签 // 根据 $data['out_trade_no'] 处理业务逻辑 echo $wechat->replySuccess(); } catch (\EasyPay\Exceptions\PaymentException $e) { echo $wechat->replyFail($e->getMessage()); } // 支付宝 try { $data = $alipay->notify(); // 自动验签 // 处理业务逻辑 echo $alipay->replySuccess(); } catch (\EasyPay\Exceptions\PaymentException $e) { echo $alipay->replyFail(); }
微信 v3 API(可选)
// JSAPI v3 $result = $wechat->payJsapi([ 'description' => '测试商品', 'out_trade_no' => 'ORDER20231201001', 'amount' => ['total' => 1, 'currency' => 'CNY'], 'openid' => '用户的openid', ]); // Native v3 $result = $wechat->payNative([ 'description' => '测试商品', 'out_trade_no' => 'ORDER20231201002', 'amount' => ['total' => 1, 'currency' => 'CNY'], ]);
异常处理
use EasyPay\Exceptions\PaymentException; use EasyPay\Exceptions\InvalidConfigException; try { $result = $wechat->pay([...]); } catch (InvalidConfigException $e) { // 配置错误 echo "配置错误: " . $e->getMessage(); } catch (PaymentException $e) { // 支付业务异常 echo "支付失败: " . $e->getMessage(); echo "错误码: " . $e->getErrorCode(); print_r($e->getRaw()); // 原始响应数据 }
目录结构
easy_pay/
├── composer.json
├── src/
│ ├── EasyPay.php # 主入口类
│ ├── AbstractPayment.php # 抽象基类
│ ├── Contracts/
│ │ └── PaymentInterface.php # 支付接口契约
│ ├── Exceptions/
│ │ ├── PaymentException.php # 支付异常
│ │ └── InvalidConfigException.php
│ ├── Wechat/
│ │ ├── WechatPay.php # 微信支付(普通商户)
│ │ └── PartnerPay.php # 微信支付(服务商模式)
│ ├── Alipay/
│ │ └── Alipay.php # 支付宝支付
│ ├── Huishouqian/
│ │ └── Huishouqian.php # 慧收款(宝付聚合支付)
│ └── Support/
│ ├── Config.php # 配置管理
│ ├── HttpClient.php # HTTP 客户端
│ └── Utils.php # 工具方法
License
MIT
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-07-13