mannikj / laravel-wallet
适用于您应用的简单易用的虚拟钱包
v11.1.0
2024-07-16 13:03 UTC
Requires
- php: ^8.2
Requires (Dev)
- doctrine/dbal: ^4.0
- larastan/larastan: ^2.9
- laravel/pint: 1.16.1
- orchestra/testbench: ^9.1.1
- phpunit/phpunit: ^11.1
README
一些应用需要预付费系统,如虚拟钱包,用户可以在其中充值信用,然后用于在应用内支付。使用本包,您可以给eloquent模型添加数字钱包功能,由它为您处理所有钱包活动。所有钱包活动都通过交易进行跟踪。
安装
使用composer安装包
composer require mannikj/laravel-wallet
运行迁移
默认情况下,包将自动加载来自供应商文件夹的迁移。
如果您想有更多灵活性,可以使用以下artisan命令将迁移文件发布到您自己的迁移目录中
php artisan vendor:publish --provider="MannikJ\Laravel\Wallet\WalletServiceProvider" --tag=migrations
确保在发布迁移文件后,通过设置配置变量 load_migrations
为 false 来禁用自动迁移加载。
配置
可以使用以下artisan命令发布配置文件
php artisan vendor:publish --provider="MannikJ\Laravel\Wallet\WalletServiceProvider" --tag=config
这会将 wallet.php
配置文件合并,您可以在其中指定自定义的用户、钱包和交易类。
用法
将 HasWallet
特性添加到您的用户模型中。
use MannikJ\Laravel\Wallet\Traits\HasWallet; class User extends Model { use HasWallet; ... }
然后您可以从用户模型中轻松执行交易。
$user = User::find(1); $user->wallet->balance; // 0 $user->wallet->deposit(100); $user->wallet->balance; // 100 $user->wallet->withdraw(50); $user->wallet->balance; // 50 $user->wallet->forceWithdraw(200); $user->wallet->balance; // -150
您可以轻松地为交易添加元信息以满足您的需求。
$user = User::find(1); $user->wallet->deposit(100, ['stripe_source' => 'ch_BEV2Iih1yzbf4G3HNsfOQ07h', 'description' => 'Deposit of 100 credits from Stripe Payment']); $user->wallet->withdraw(10, ['description' => 'Purchase of Item #1234']);
测试
本包使用 https://github.com/orchestral/testbench 创建laravel测试环境。测试将在预配置的内存sqlite数据库上执行,因此您不需要在自己的系统上设置数据库。
要运行phpunit测试,请确保首先通过以下命令安装包依赖项
composer install
然后从项目根目录执行
composer test
安全性
如果您发现任何安全相关的问题,请在 github仓库 上提交问题。
鸣谢
许可证
MIT许可证(MIT)。请参阅 许可证文件 获取更多信息。