ars/laravel-cashier

为 Laravel 提供一个强大的包,它简化了虚拟货币管理、交易处理、余额管理以及应用内资金转账。

v0.0.3 2024-09-03 00:39 UTC

This package is auto-updated.

Last update: 2024-09-03 00:40:18 UTC


README

License

为 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 许可 许可。

贡献

欢迎贡献!请提交拉取请求或创建问题,以提供改进或建议。

支持

有关任何问题,请访问 问题页面