你还在为微信支付或支付宝支付编写两套不同逻辑的代码而头疼吗?你还在为庞杂的参数记忆而苦恼吗?
让我们回归本源,重新定义统一支付器。
composer require xin/payment
这是一个基于 yansongda/pay 库的支付 SDK,提供了统一的接口来处理微信支付、支付宝、银联支付和抖音支付。SDK 支持 Laravel 和 ThinkPHP 框架。
PaymentManager 是主要的支付管理类,实现了 PaymentFactory 接口:
- 作用: 统一管理所有支付方式的实例化和配置
- 继承: 使用了四个 trait (
HasWechat,HasAlipay,HasUnipay,HasDouyin) - 依赖:
WithConfigtrait 提供配置管理功能
定义了支付方式的统一接口:
wechat($name = null, array $options = [])- 微信支付alipay($name = null, array $options = [])- 支付宝支付unipay($name = null, array $options = [])- 银联支付douyin($name = null, array $options = [])- 抖音支付- 对应的
hasWechat(),hasAlipay(),hasUnipay(),hasDouyin()方法用于检查配置
定义了支付类型的常量:
WECHAT- 微信支付ALIPAY- 支付宝支付UNIPAY- 银联支付DOUYIN- 抖音支付
- 默认配置名: 从
defaults.wechat获取,默认为 'default' - 配置路径:
wechat.{name} - 特殊处理:
- 自动处理
appid到app_id和miniapp_id的映射 - 支持证书内容自动写入临时文件
- 自动处理
- 默认配置名: 从
defaults.alipay获取,默认为 'default' - 配置路径:
alipay.{name}
- 默认配置名: 从
defaults.unipay获取,默认为 'default' - 配置路径:
unipay.{name}
- 默认配置名: 从
defaults.douyin获取,默认为 'default' - 配置路径:
douyin.{name}
- 当支付配置未定义时抛出
- 继承自
LogicException
- 当支付配置无效时抛出
- 继承自
LogicException
- 服务提供者:
Laravel\PaymentServiceProvider - 服务别名:
payment- 主要服务payment.wechat,payment.alipay,payment.unipay,payment.douyin- 各支付方式的快捷访问
- 服务类:
ThinkPHP\PaymentServiceProvider - 绑定关系: 将
PaymentFactory和PaymentManager绑定到容器 - 服务别名: 同 Laravel
// 配置示例
[
'defaults' => [
'wechat' => 'default',
'alipay' => 'default',
'unipay' => 'default',
'douyin' => 'default'
],
'wechat' => [
'default' => [
// 微信支付配置
]
],
'alipay' => [
'default' => [
// 支付宝配置
]
],
'unipay' => [
'default' => [
// 银联支付配置
]
],
'douyin' => [
'default' => [
// 抖音支付配置
]
],
'logger' => [
// 日志配置
],
'http' => [
// HTTP 配置
]
]// 获取支付实例
$wechat = $payment->wechat('default');
$alipay = $payment->alipay('default');
$unipay = $payment->unipay('default');
$douyin = $payment->douyin('default');
// 检查是否配置了支付方式
if ($payment->hasWechat('default')) {
// 微信支付已配置
}// 使用不同配置名称
$wechat1 = $payment->wechat('shop1');
$wechat2 = $payment->wechat('shop2');// 传递额外选项
$wechat = $payment->wechat('default', [
'cert' => true // 启用证书功能
]);- 所有支付方式都支持通用配置初始化 (
initApplicationConfig) - 自动合并日志和 HTTP 配置
- 微信支付支持证书内容自动写入临时文件
- 通过
cert_client_content和cert_key_content配置项
- 每种支付方式都有相应的
has方法验证配置完整性 - 微信支付特别检查
mch_id和key是否存在
src/
├── Contracts/ # 接口定义
├── Exceptions/ # 异常类
├── Laravel/ # Laravel 集成
├── ThinkPHP/ # ThinkPHP 集成
├── HasAlipay.php # 支付宝实现
├── HasDouyin.php # 抖音支付实现
├── HasUnipay.php # 银联支付实现
├── HasWechat.php # 微信支付实现
├── PaymentManager.php # 支付管理器
└── PaymentType.php # 支付类型常量
这个 SDK 提供了一个统一、灵活且易于扩展的支付接口,支持主流的支付方式并集成了常用的 PHP 框架。
更多文档请参考【easypay文档】