也门开源/laravel-wallet

Laravel钱包是一个具有表达性语法和提供优质开发的包,简单实现存款、取款、交易和余额。

v1.2.0 2023-12-21 13:53 UTC

This package is auto-updated.

Last update: 2024-09-21 15:43:59 UTC


README

Stand With Palestine

Laravel Wallet

Laravel Unit Test Packagist Downloads Packagist Version GitHub StandWithPalestine

Laravel钱包

Laravel钱包是一个具有表达性语法和提供优质开发的包,简单实现存款、取款、交易和余额。

要求

此包与Laravel v8进行了测试,可能在Laravel v7、v6或v5上无法正常工作。

安装

使用composer安装此包

composer require yemenopensource/laravel-wallet

配置您的需求

如果您想使用默认配置,可以跳过此步骤,但可以通过运行以下命令发布钱包配置:

php artisan vendor:publish --provider="YemeniOpenSource\LaravelWallet\WalletServiceProvider" --tag=config

这将合并config/wallet.php配置文件到您的根config目录。在迁移数据库之前,您可以自由修改它。

数据库迁移

之后,安装钱包表

php artisan migrate

如果您想添加自定义功能,可以发布迁移

php artisan vendor:publish --provider="YemeniOpenSource\LaravelWallet\WalletServiceProvider" --tag=migrations

Laravel将使用在database/migrations中发布的迁移。

设置

HasWallet特质添加到您想添加钱包功能的任何模型中,例如User模型。

use YemeniOpenSource\LaravelWallet\Traits\HasWallet;

class User extends Model
{
    use HasWallet;

    //...
}

基本用法

例如,您可以创建钱包和交易,为您的User模型创建钱包。

// The wallet balance initially will be [0]
$user = User::first();
$user->wallet->balance; // 0

// This will add to the wallet balance as passed amount.
$user->wallet->deposit(643.646);
$user->wallet->balance; // 643.6460

// This will subtract from the wallet balance as passed amount.
$user->wallet->withdraw(168.545);
$user->wallet->balance; // 475.1010

// It will throw [UnacceptedTransactionException] exception if passed amount greater wallet balance 
$user->wallet->withdraw(500);
$user->wallet->balance; // UnacceptedTransactionException

// If you want to force withdraw, use [forceWithdraw]
$user->wallet->forceWithdraw(500);
$user->wallet->balance; // -24.8990

如果您不希望出现[UnacceptedTransactionException],可以将wallet.disable_insufficient_exception配置值更改为禁用异常,或在.env中设置WALLET_DISABLE_INSUFFICIENT_EXCEPTIONtrue

高级用法

您可以轻松地为交易添加元信息以满足您的需求。例如

$user = User::first();
$user->wallet->deposit(100, ['currency' => 'USD', 'bank' => 'TEST BANK']);
$user->wallet->withdraw(64, ['currency' => 'USD', 'description' => 'Purchase of Item #101']);
$user->wallet->withdraw(64, ['currency' => 'USD', 'transfer' => 'Western union tracking number #101']);

贷方

数字货币矢量图由fullvector创建 - www.freepik.com

贷方

MIT许可证(MIT)。有关更多信息,请参阅MIT许可证文件。