ars / laravel-cashier
为 Laravel 提供一个强大的包,它简化了虚拟货币管理、交易处理、余额管理以及应用内资金转账。
v0.0.3
2024-09-03 00:39 UTC
Requires
- php: >=8.0
- illuminate/support: >=9.0
README
为 Laravel 提供一个强大的包,它简化了虚拟货币管理、交易处理、余额管理以及应用内资金转账。
功能
- 钱包管理: 创建和管理与用户或其他实体关联的钱包。
- 支付处理: 管理支付,包括启动、处理和交易记录。
- 交易管理: 记录和跟踪所有与钱包相关的交易,包括存款和取款。
- 可配置取款上限: 通过配置设置取款上限。
要求
- Laravel 版本:10 或更高
- PHP 版本:8.0 或更高
安装
要安装此包,请使用 Composer
composer require ars/laravel-cashier
安装后,发布配置和迁移文件
php artisan vendor:publish --provider="Ars\Cashier\Providers\CashierServiceProvider"
然后,运行迁移
php artisan migrate
配置
该包附带一个配置文件,位于 config/cashier.php。关键配置选项包括
wallet.ceiling_withdraw: 默认取款上限。tables: 可自定义钱包、支付和交易的表名。
return [ 'wallet' => [ 'ceiling_withdraw' => 0, ], 'tables' => [ 'wallet' => 'wallets', 'payment' => 'payments', 'transaction' => 'transactions', ], ];
使用方法
特质
HasWallet
将 HasWallet 特质添加到任何应具有钱包的模型中
use Ars\Cashier\Models\Traits\HasWallet; class User extends Model { use HasWallet; }
-
获取余额: 使用以下方式检索钱包余额
$balance = $user->balance;
-
存款
$user->deposit(100, ['description' => 'Initial deposit']);
这将增加用户的钱包余额 100,并记录交易。
-
取款
$user->withdraw(50, ['description' => 'Purchase withdrawal']);
如果不超过允许的上限,这将减少用户的钱包余额 50,并记录交易。
-
检查取款能力
if ($user->canWithdraw(50, 10)) { echo "Withdrawal allowed"; } else { echo "Withdrawal exceeds allowed limits"; }
HasPay
将 HasPay 特质添加到任何应处理支付的模型中
use Ars\Cashier\Models\Traits\HasPay; class Order extends Model { use HasPay; }
-
启动支付
$payment = $order->requestPay('AUTH123', 200, ['order_id' => $order->id]);
这开始支付过程,并将其记录为交易。
-
处理支付结果
$result = $order->resultPay('AUTH123', '00', 'REF456');
这更新支付详情,并将关联的交易标记为已接受。
-
访问支付交易
$transaction = $payment->transaction;
您可以访问与特定支付关联的交易。
钱包模型
Wallet 模型管理用户余额和交易。
-
获取所有交易
$transactions = $wallet->transactions; foreach ($transactions as $transaction) { echo $transaction->amount . " - " . $transaction->type; }
-
设置自定义取款上限
$wallet->ceilingWithdraw = 500;
您可以根据需要动态调整特定钱包的取款上限。
支付模型
Payment 模型处理支付处理和记录。
-
通过授权码检索支付
$payment = Payment::where('authority', 'AUTH123')->first();
这根据其授权码检索支付记录。
-
更新支付状态
$payment->update(['status_code' => '00', 'payed_at' => now()]);
这更新支付状态,这在支付处理回调中可能很有用。
许可
此包是开源软件,受 MIT 许可 许可。
贡献
欢迎贡献!请提交拉取请求或创建问题,以提供改进或建议。
支持
有关任何问题,请访问 问题页面。