Файловый менеджер - Редактировать - /home/c7lekhnath/silverray.com.au/Modules/Language/database/seeders/68334/Wallet.tar
Назад
lang/.gitkeep 0000644 00000000000 15012230276 0007102 0 ustar 00 module.json 0000644 00000000332 15012230276 0006720 0 ustar 00 { "name": "Wallet", "alias": "wallet", "description": "", "keywords": [], "priority": 0, "providers": [ "Modules\\Wallet\\app\\Providers\\WalletServiceProvider" ], "files": [] } tests/Unit/.gitkeep 0000644 00000000000 15012230276 0010242 0 ustar 00 tests/Feature/.gitkeep 0000644 00000000000 15012230276 0010716 0 ustar 00 vite.config.js 0000644 00000001302 15012230276 0007307 0 ustar 00 import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ build: { outDir: '../../public/build-wallet', emptyOutDir: true, manifest: true, }, plugins: [ laravel({ publicDirectory: '../../public', buildDirectory: 'build-wallet', input: [ __dirname + '/resources/assets/sass/app.scss', __dirname + '/resources/assets/js/app.js' ], refresh: true, }), ], }); //export const paths = [ // 'Modules/$STUDLY_NAME$/resources/assets/sass/app.scss', // 'Modules/$STUDLY_NAME$/resources/assets/js/app.js', //]; wsus.json 0000644 00000000617 15012230276 0006442 0 ustar 00 { "name": "Wallet Addon", "is_default": true, "description": "This is Wallet Addon", "author": { "name": "Websolutionsus", "email": "websolutionus1@gmail.com", "website": "https://websolutionus.com" }, "license": "Proprietary", "url": "", "options" : { "route" : "home" }, "last_update": "2024-03-31", "version": "1.0.0" } routes/.gitkeep 0000644 00000000000 15012230276 0007502 0 ustar 00 routes/error_log 0000644 00000001074 15012230276 0010002 0 ustar 00 [07-May-2025 11:49:31 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\Facades\Route" not found in /home/lekhnath/silverray.com.au/Modules/Wallet/routes/api.php:5 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/Wallet/routes/api.php on line 5 [07-May-2025 13:13:42 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\Facades\Route" not found in /home/lekhnath/silverray.com.au/Modules/Wallet/routes/web.php:7 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/Wallet/routes/web.php on line 7 routes/web.php 0000644 00000004110 15012230276 0007345 0 ustar 00 <?php use Illuminate\Support\Facades\Route; use Modules\Wallet\app\Http\Controllers\Admin\WalletController as AdminWalletController; use Modules\Wallet\app\Http\Controllers\WalletController; Route::group(['as' => 'wallet.', 'prefix' => 'wallet', 'middleware' => ['auth:web', 'translation']], function () { Route::resource('wallet', WalletController::class)->names('wallet'); Route::controller(WalletController::class)->group(function () { Route::post('pay-via-stripe', 'stripe_pay')->name('pay-via-stripe'); Route::get('pay-via-stripe', 'stripe_success')->name('stripe-success'); Route::get('pay-via-paypal', 'pay_via_paypal')->name('pay-via-paypal'); Route::post('pay-via-bank', 'pay_via_bank')->name('pay-via-bank'); Route::post('pay-via-razorpay', 'pay_via_razorpay')->name('pay-via-razorpay'); Route::get('pay-via-mollie', 'pay_via_mollie')->name('pay-via-mollie'); Route::get('pay-via-instamojo', 'pay_via_instamojo')->name('pay-via-instamojo'); Route::get('/payment-addon-success', 'payment_addon_success')->name('payment-addon-success'); Route::get('/payment-addon-faild', 'payment_addon_faild')->name('payment-addon-faild'); }); }); Route::group(['as' => 'admin.', 'prefix' => 'admin', 'middleware' => ['auth:admin']], function () { Route::controller(AdminWalletController::class)->group(function () { Route::get('/wallet-history', 'index')->name('wallet-history'); Route::get('/pending-wallet-payment', 'pending_wallet_payment')->name('pending-wallet-payment'); Route::get('/rejected-wallet-payment', 'rejected_wallet_payment')->name('rejected-wallet-payment'); Route::get('/show-wallet-history/{id}', 'show')->name('show-wallet-history'); Route::delete('/delete-wallet-history/{id}', 'destroy')->name('delete-wallet-history'); Route::post('/rejected-wallet-request/{id}', 'rejected_wallet_request')->name('rejected-wallet-request'); Route::post('/approved-wallet-request/{id}', 'approved_wallet_request')->name('approved-wallet-request'); }); }); routes/api.php 0000644 00000000214 15012230276 0007342 0 ustar 00 <?php use Illuminate\Support\Facades\Route; Route::middleware(['auth:sanctum'])->prefix('v1')->name('api.')->group(function () { }); composer.json 0000644 00000001267 15012230276 0007272 0 ustar 00 { "name": "nwidart/wallet", "description": "", "authors": [ { "name": "Nicolas Widart", "email": "n.widart@gmail.com" } ], "extra": { "laravel": { "providers": [], "aliases": { } } }, "autoload": { "psr-4": { "Modules\\Wallet\\": "", "Modules\\Wallet\\App\\": "app/", "Modules\\Wallet\\Database\\Factories\\": "database/factories/", "Modules\\Wallet\\Database\\Seeders\\": "database/seeders/" } }, "autoload-dev": { "psr-4": { "Modules\\Wallet\\Tests\\": "tests/" } } } config/config.php 0000644 00000000053 15012230276 0007763 0 ustar 00 <?php return [ 'name' => 'Wallet', ]; config/.gitkeep 0000644 00000000000 15012230276 0007426 0 ustar 00 package.json 0000644 00000000410 15012230276 0007023 0 ustar 00 { "private": true, "type": "module", "scripts": { "dev": "vite", "build": "vite build" }, "devDependencies": { "axios": "^1.1.2", "laravel-vite-plugin": "^0.7.5", "sass": "^1.69.5", "postcss": "^8.3.7", "vite": "^4.0.0" } } app/Http/Controllers/.gitkeep 0000644 00000000000 15012230276 0012166 0 ustar 00 app/Http/Controllers/Admin/WalletController.php 0000644 00000006731 15012230276 0015613 0 ustar 00 <?php namespace Modules\Wallet\app\Http\Controllers\Admin; use App\Models\User; use Illuminate\Http\Request; use App\Traits\GlobalMailTrait; use App\Http\Controllers\Controller; use App\Services\GlobalMailSendService; use Modules\Wallet\app\Models\WalletHistory; class WalletController extends Controller { use GlobalMailTrait; public function index() { $wallet_histories = WalletHistory::latest()->get(); $title = __('Wallet History'); return view('wallet::admin.index', ['wallet_histories' => $wallet_histories, 'title' => $title]); } public function pending_wallet_payment() { $wallet_histories = WalletHistory::where('payment_status', 'pending')->latest()->get(); $title = __('Pending Wallet Payment'); return view('wallet::admin.index', ['wallet_histories' => $wallet_histories, 'title' => $title]); } public function rejected_wallet_payment() { $wallet_histories = WalletHistory::where('payment_status', 'rejected')->latest()->get(); $title = __('Pending Wallet Payment'); return view('wallet::admin.index', ['wallet_histories' => $wallet_histories, 'title' => $title]); } public function show($id) { $wallet_history = WalletHistory::findOrFail($id); return view('wallet::admin.show', ['wallet_history' => $wallet_history]); } public function destroy($id) { $wallet_history = WalletHistory::findOrFail($id); $wallet_history->delete(); $notification = __('Payment delete successfully'); $notification = ['messege' => $notification, 'alert-type' => 'success']; return redirect()->route('admin.wallet-history')->with($notification); } public function rejected_wallet_request(Request $request, $id) { $request->validate([ 'subject' => 'required', 'description' => 'required', ], [ 'subject.required' => __('Subject is required'), 'description.required' => __('Description is required'), ]); $wallet_history = WalletHistory::findOrFail($id); $wallet_history->payment_status = 'rejected'; $wallet_history->save(); $user = User::findOrFail($wallet_history->user_id); //mail send $message = $request->description; $message = str_replace('[[name]]', $user->name, $message); $this->sendMail($user->email, $request->subject, $message); $notification = __('Wallet request rejected successfully'); $notification = ['messege' => $notification, 'alert-type' => 'success']; return redirect()->back()->with($notification); } public function approved_wallet_request(Request $request, $id) { $wallet_history = WalletHistory::findOrFail($id); $wallet_history->payment_status = 'success'; $wallet_history->save(); $user = User::findOrFail($wallet_history->user_id); $wallet_balance = $user->wallet_balance; $wallet_balance += $wallet_history->amount; $user->wallet_balance = $wallet_balance; $user->save(); //mail send [$subject, $message] = $this->fetchEmailTemplate('pending_wallet_payment', ['user_name' => $user->name]); $this->sendMail($user->email, $subject, $message); $notification = __('Wallet payment approval successfully'); $notification = ['messege' => $notification, 'alert-type' => 'success']; return redirect()->back()->with($notification); } } app/Http/Controllers/WalletController.php 0000644 00000035002 15012230276 0014554 0 ustar 00 <?php namespace Modules\Wallet\app\Http\Controllers; use Illuminate\Support\Str; use Illuminate\Http\Request; use Mollie\Laravel\Facades\Mollie; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Session; use App\Traits\GetGlobalInformationTrait; use Modules\Wallet\app\Models\WalletHistory; use Modules\BasicPayment\app\Http\Controllers\FrontPaymentController; use Modules\BasicPayment\app\Enums\BasicPaymentSupportedCurrencyListEnum; class WalletController extends Controller { use GetGlobalInformationTrait; public function index() { $auth_user = Auth::guard('web')->user(); $wallet_histories = WalletHistory::where('user_id', $auth_user->id)->latest()->get(); return view('wallet::index', ['wallet_histories' => $wallet_histories]); } /** * Show the form for creating a new resource. */ public function create(Request $request) { $request->validate([ 'amount' => 'required', ], [ 'amount.required' => __('Amount is required'), ]); $payable_amount = $request->amount; $user = Auth::guard('web')->user(); $basic_payment = $this->get_basic_payment_info(); $payment_setting = $this->get_payment_gateway_info(); /**start razorpay setting */ $razorpay_calculate_charge = $this->calculate_payable_charge($payable_amount, 'razorpay'); $razorpay_credentials = (object) [ 'currency_code' => $razorpay_calculate_charge->currency_code, 'payable_with_charge' => $razorpay_calculate_charge->payable_with_charge, 'razorpay_key' => $payment_setting->razorpay_key, 'razorpay_secret' => $payment_setting->razorpay_secret, 'razorpay_name' => $payment_setting->razorpay_name, 'razorpay_description' => $payment_setting->razorpay_description, 'razorpay_image' => $payment_setting->razorpay_image, 'razorpay_theme_color' => $payment_setting->razorpay_theme_color, 'razorpay_status' => $payment_setting->razorpay_status, ]; /**end razorpay setting */ /**start mollie setting */ $mollie_credentials = (object) [ 'mollie_status' => $payment_setting->mollie_status, ]; /**end mollie setting */ /**start instamojo setting */ $instamojo_credentials = (object) [ 'instamojo_status' => $payment_setting->instamojo_status, ]; /**end instamojo setting */ /**start flutterwave setting */ $flutterwave_calculate_charge = $this->calculate_payable_charge($payable_amount, 'flutterwave'); $flutterwave_credentials = (object) [ 'country_code' => $flutterwave_calculate_charge->country_code, 'currency_code' => $flutterwave_calculate_charge->currency_code, 'payable_with_charge' => $flutterwave_calculate_charge->payable_with_charge, 'flutterwave_public_key' => $payment_setting->flutterwave_public_key, 'flutterwave_secret_key' => $payment_setting->flutterwave_secret_key, 'flutterwave_app_name' => $payment_setting->flutterwave_app_name, 'flutterwave_status' => $payment_setting->flutterwave_status, 'flutterwave_image' => $payment_setting->flutterwave_image, ]; /**end flutterwave setting */ /**start paystack setting */ $paystack_calculate_charge = $this->calculate_payable_charge($payable_amount, 'paystack'); $paystack_credentials = (object) [ 'country_code' => $paystack_calculate_charge->country_code, 'currency_code' => $paystack_calculate_charge->currency_code, 'payable_with_charge' => $paystack_calculate_charge->payable_with_charge, 'paystack_public_key' => $payment_setting->paystack_public_key, 'paystack_secret_key' => $payment_setting->paystack_secret_key, 'paystack_status' => $payment_setting->paystack_status, ]; /**end paystack setting */ return view('wallet::payment')->with([ 'user' => $user, 'payable_amount' => $payable_amount, 'basic_payment' => $basic_payment, 'payment_setting' => $payment_setting, 'razorpay_credentials' => $razorpay_credentials, 'mollie_credentials' => $mollie_credentials, 'instamojo_credentials' => $instamojo_credentials, 'flutterwave_credentials' => $flutterwave_credentials, 'paystack_credentials' => $paystack_credentials, ]); } public function stripe_pay() { $basic_payment = $this->get_basic_payment_info(); $payable_amount = 100; /** developer need to assign the amount here */ // Set your Stripe API secret key \Stripe\Stripe::setApiKey($basic_payment->stripe_secret); $calculate_payable_charge = $this->calculate_payable_charge($payable_amount, 'stripe'); $payable_with_charge = (int) ($calculate_payable_charge->payable_with_charge * 100); $allCurrencyCodes = BasicPaymentSupportedCurrencyListEnum::getStripeSupportedCurrencies(); if (in_array(Str::upper($calculate_payable_charge->currency_code), $allCurrencyCodes['non_zero_currency_codes'])) { $payable_with_charge = $calculate_payable_charge->payable_with_charge; } elseif (in_array(Str::upper($calculate_payable_charge->currency_code), $allCurrencyCodes['three_digit_currency_codes'])) { $convertedCharge = (string) $calculate_payable_charge->payable_with_charge . '0'; $payable_with_charge = (int) $convertedCharge; } else { $payable_with_charge = (int) ($calculate_payable_charge->payable_with_charge * 100); } $after_faild_url = route('wallet.payment-addon-faild'); Session::put('payable_amount', $calculate_payable_charge->payable_amount); Session::put('payable_with_charge', $payable_with_charge); Session::put('after_faild_url', $after_faild_url); // Create a checkout session $checkoutSession = \Stripe\Checkout\Session::create([ // 'payment_method_types' => ['bancontact','card','eps','giropay','ideal','p24','sepa_debit'], //only supported currency "eur" 'payment_method_types' => ['card'], 'line_items' => [[ 'price_data' => [ 'currency' => $calculate_payable_charge->currency_code, 'unit_amount' => $payable_with_charge, // Replace with the actual amount in cents 'product_data' => [ 'name' => config('app.name'), ], ], 'quantity' => 1, ]], 'mode' => 'payment', 'success_url' => url('/wallet/pay-via-stripe') . '?session_id={CHECKOUT_SESSION_ID}', 'cancel_url' => $after_faild_url, ]); // Redirect to the checkout session URL return redirect()->away($checkoutSession->url); } public function stripe_success(Request $request) { $after_success_url = route('wallet.payment-addon-success'); $basic_payment = $this->get_basic_payment_info(); // Assuming the Checkout Session ID is passed as a query parameter $session_id = $request->query('session_id'); if ($session_id) { \Stripe\Stripe::setApiKey($basic_payment->stripe_secret); $session = \Stripe\Checkout\Session::retrieve($session_id); $paymentDetails = [ 'transaction_id' => $session->payment_intent, 'amount' => $session->amount_total, 'currency' => $session->currency, 'payment_status' => $session->payment_status, 'created' => $session->created, ]; Session::put('after_success_url', $after_success_url); Session::put('paid_amount', $session->amount_total); Session::put('after_success_gateway', 'Stripe'); Session::put('after_success_transaction', $session->payment_intent); Session::put('payment_details', $paymentDetails); return redirect($after_success_url); } $after_faild_url = Session::get('after_faild_url'); return redirect($after_faild_url); } public function pay_via_paypal(Request $request) { $request->validate([ 'payable_amount' => 'required', ], [ 'payable_amount.required' => __('Amount is required'), ]); $basic_payment = $this->get_basic_payment_info(); $payable_amount = $request->payable_amount; /** developer need to assign the amount here */ $after_success_url = route('wallet.payment-addon-success'); $after_faild_url = route('wallet.payment-addon-faild'); $paypal_credentials = (object) [ 'paypal_client_id' => $basic_payment->paypal_client_id, 'paypal_secret_key' => $basic_payment->paypal_secret_key, 'paypal_account_mode' => $basic_payment->paypal_account_mode, ]; $user = Auth::guard('web')->user(); $paypal_payment = new FrontPaymentController(); return $paypal_payment->pay_with_paypal($paypal_credentials, $payable_amount, $after_success_url, $after_faild_url, $user); } public function pay_via_bank(Request $request) { $request->validate([ 'payable_amount' => 'required', ], [ 'payable_amount.required' => __('Amount is required'), ]); $payable_amount = $request->payable_amount; /** developer need to assign the amount here */ $after_success_url = route('payment-addon-success'); $after_faild_url = route('payment-addon-faild'); $user = Auth::guard('web')->user(); Session::put('after_success_url', $after_success_url); Session::put('after_faild_url', $after_faild_url); Session::put('payable_amount', $payable_amount); Session::put('after_success_gateway', 'Direct Bank'); Session::put('after_success_transaction', $request->bank_transaction); return $this->payment_addon_success(); } public function pay_via_razorpay(Request $request) { $payment_setting = $this->get_payment_gateway_info(); $after_success_url = route('wallet.payment-addon-success'); $after_faild_url = route('wallet.payment-addon-faild'); $user = Auth::guard('web')->user(); $razorpay_credentials = (object) [ 'razorpay_key' => $payment_setting->razorpay_key, 'razorpay_secret' => $payment_setting->razorpay_secret, ]; } public function pay_via_mollie(Request $request) { $request->validate([ 'payable_amount' => 'required', ], [ 'payable_amount.required' => __('Amount is required'), ]); $payable_amount = $request->payable_amount; /** developer need to assign the amount here */ $after_success_url = route('wallet.payment-addon-success'); $after_faild_url = route('wallet.payment-addon-faild'); $user = Auth::guard('web')->user(); $payment_setting = $this->get_payment_gateway_info(); $mollie_credentials = (object) [ 'mollie_key' => $payment_setting->mollie_key, ]; } public function pay_via_instamojo(Request $request) { $request->validate([ 'payable_amount' => 'required', ], [ 'payable_amount.required' => __('Amount is required'), ]); $payable_amount = $request->payable_amount; /** developer need to assign the amount here */ $after_success_url = route('wallet.payment-addon-success'); $after_faild_url = route('wallet.payment-addon-faild'); $user = Auth::guard('web')->user(); $payment_setting = $this->get_payment_gateway_info(); $instamojo_credentials = (object) [ 'instamojo_api_key' => $payment_setting->instamojo_api_key, 'instamojo_auth_token' => $payment_setting->instamojo_auth_token, 'account_mode' => $payment_setting->instamojo_account_mode, ]; } public function payment_addon_success() { $payable_amount = Session::get('payable_amount'); $gateway_name = Session::get('after_success_gateway'); $transaction = Session::get('after_success_transaction'); $auth_user = Auth::guard('web')->user(); $new_wallet = new WalletHistory(); $new_wallet->user_id = $auth_user->id; $new_wallet->amount = $payable_amount; $new_wallet->transaction_id = $transaction; $new_wallet->payment_gateway = $gateway_name; $new_wallet->payment_status = $gateway_name == 'Direct Bank' ? 'pending' : 'success'; $new_wallet->save(); if ($gateway_name != 'Direct Bank') { $wallet_balance = $auth_user->wallet_balance; $wallet_balance += $payable_amount; $auth_user->wallet_balance = $wallet_balance; $auth_user->save(); Session::forget('after_success_url'); Session::forget('after_faild_url'); Session::forget('payable_amount'); Session::forget('gateway_charge'); Session::forget('currency_rate'); Session::forget('after_success_gateway'); Session::forget('after_success_transaction'); $notification = __('Payment has done successfully'); $notification = ['messege' => $notification, 'alert-type' => 'success']; return redirect()->route('wallet.wallet.index')->with($notification); } else { $notification = __('Your bank payment request has been send, please wait for admin approval'); $notification = ['messege' => $notification, 'alert-type' => 'success']; return redirect()->route('wallet.wallet.index')->with($notification); } } public function payment_addon_faild() { Session::forget('after_success_url'); Session::forget('after_faild_url'); Session::forget('payable_amount'); Session::forget('gateway_charge'); Session::forget('currency_rate'); Session::forget('after_success_gateway'); Session::forget('after_success_transaction'); $notification = __('Payment Failed please try again'); $notification = ['messege' => $notification, 'alert-type' => 'error']; return redirect()->route('wallet.wallet.index')->with($notification); } } app/Http/Requests/.gitkeep 0000644 00000000000 15012230276 0011473 0 ustar 00 app/Http/Middleware/.gitkeep 0000644 00000000000 15012230276 0011735 0 ustar 00 app/Models/.gitkeep 0000644 00000000000 15012230276 0010164 0 ustar 00 app/Models/error_log 0000644 00000000476 15012230276 0010471 0 ustar 00 [13-May-2025 02:44:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/lekhnath/silverray.com.au/Modules/Wallet/app/Models/WalletHistory.php:10 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/Wallet/app/Models/WalletHistory.php on line 10 app/Models/WalletHistory.php 0000644 00000001161 15012230276 0012067 0 ustar 00 <?php namespace Modules\Wallet\app\Models; use App\Models\User; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Modules\Wallet\Database\factories\WalletHistoryFactory; class WalletHistory extends Model { use HasFactory; /** * The attributes that are mass assignable. */ protected $fillable = []; protected static function newFactory(): WalletHistoryFactory { //return WalletHistoryFactory::new(); } public function user() { return $this->belongsTo(User::class)->select('id', 'name', 'email', 'image'); } } app/Providers/RouteServiceProvider.php 0000644 00000002657 15012230276 0014154 0 ustar 00 <?php namespace Modules\Wallet\app\Providers; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Route; class RouteServiceProvider extends ServiceProvider { /** * The module namespace to assume when generating URLs to actions. */ protected string $moduleNamespace = 'Modules\Wallet\app\Http\Controllers'; /** * Called before routes are registered. * * Register any model bindings or pattern based filters. */ public function boot(): void { parent::boot(); } /** * Define the routes for the application. */ public function map(): void { $this->mapApiRoutes(); $this->mapWebRoutes(); } /** * Define the "web" routes for the application. * * These routes all receive session state, CSRF protection, etc. */ protected function mapWebRoutes(): void { Route::middleware('web') ->namespace($this->moduleNamespace) ->group(module_path('Wallet', '/routes/web.php')); } /** * Define the "api" routes for the application. * * These routes are typically stateless. */ protected function mapApiRoutes(): void { Route::prefix('api') ->middleware('api') ->namespace($this->moduleNamespace) ->group(module_path('Wallet', '/routes/api.php')); } } app/Providers/.gitkeep 0000644 00000000000 15012230276 0010716 0 ustar 00 app/Providers/WalletServiceProvider.php 0000644 00000006436 15012230276 0014305 0 ustar 00 <?php namespace Modules\Wallet\app\Providers; use Illuminate\Support\Facades\Blade; use Illuminate\Support\ServiceProvider; class WalletServiceProvider extends ServiceProvider { protected string $moduleName = 'Wallet'; protected string $moduleNameLower = 'wallet'; /** * Boot the application events. */ public function boot(): void { $this->registerCommands(); $this->registerCommandSchedules(); $this->registerTranslations(); $this->registerConfig(); $this->registerViews(); $this->loadMigrationsFrom(module_path($this->moduleName, 'database/migrations')); } /** * Register the service provider. */ public function register(): void { $this->app->register(RouteServiceProvider::class); } /** * Register commands in the format of Command::class */ protected function registerCommands(): void { // $this->commands([]); } /** * Register command Schedules. */ protected function registerCommandSchedules(): void { // $this->app->booted(function () { // $schedule = $this->app->make(Schedule::class); // $schedule->command('inspire')->hourly(); // }); } /** * Register translations. */ public function registerTranslations(): void { $langPath = resource_path('lang/modules/'.$this->moduleNameLower); if (is_dir($langPath)) { $this->loadTranslationsFrom($langPath, $this->moduleNameLower); $this->loadJsonTranslationsFrom($langPath); } else { $this->loadTranslationsFrom(module_path($this->moduleName, 'lang'), $this->moduleNameLower); $this->loadJsonTranslationsFrom(module_path($this->moduleName, 'lang')); } } /** * Register config. */ protected function registerConfig(): void { $this->publishes([module_path($this->moduleName, 'config/config.php') => config_path($this->moduleNameLower.'.php')], 'config'); $this->mergeConfigFrom(module_path($this->moduleName, 'config/config.php'), $this->moduleNameLower); } /** * Register views. */ public function registerViews(): void { $viewPath = resource_path('views/modules/'.$this->moduleNameLower); $sourcePath = module_path($this->moduleName, 'resources/views'); $this->publishes([$sourcePath => $viewPath], ['views', $this->moduleNameLower.'-module-views']); $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower); $componentNamespace = str_replace('/', '\\', config('modules.namespace').'\\'.$this->moduleName.'\\'.config('modules.paths.generator.component-class.path')); Blade::componentNamespace($componentNamespace, $this->moduleNameLower); } /** * Get the services provided by the provider. */ public function provides(): array { return []; } private function getPublishableViewPaths(): array { $paths = []; foreach (config('view.paths') as $path) { if (is_dir($path.'/modules/'.$this->moduleNameLower)) { $paths[] = $path.'/modules/'.$this->moduleNameLower; } } return $paths; } } database/factories/.gitkeep 0000644 00000000000 15012230276 0011704 0 ustar 00 database/migrations/2023_11_30_101249_create_wallet_histories_table.php 0000644 00000001327 15012230276 0021342 0 ustar 00 <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('wallet_histories', function (Blueprint $table) { $table->id(); $table->integer('user_id'); $table->decimal('amount', 8, 2); $table->string('transaction_id'); $table->string('payment_gateway'); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('wallet_histories'); } }; database/migrations/.gitkeep 0000644 00000000000 15012230276 0012101 0 ustar 00 database/migrations/2023_12_03_052502_add_to_payment_status_wallet_histories.php 0000644 00000001240 15012230276 0023312 0 ustar 00 <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::table('wallet_histories', function (Blueprint $table) { $table->enum('payment_status', ['pending', 'success', 'rejected'])->default('pending'); }); } /** * Reverse the migrations. */ public function down(): void { Schema::table('wallet_histories', function (Blueprint $table) { $table->dropColumn('payment_status'); }); } }; database/seeders/.gitkeep 0000644 00000000000 15012230276 0011357 0 ustar 00 database/seeders/WalletDatabaseSeeder.php 0000644 00000000371 15012230276 0014457 0 ustar 00 <?php namespace Modules\Wallet\database\seeders; use Illuminate\Database\Seeder; class WalletDatabaseSeeder extends Seeder { /** * Run the database seeds. */ public function run(): void { // $this->call([]); } } resources/assets/.gitkeep 0000644 00000000000 15012230276 0011475 0 ustar 00 resources/assets/js/app.js 0000644 00000000000 15012230276 0011576 0 ustar 00 resources/assets/sass/app.scss 0000644 00000000000 15012230276 0012472 0 ustar 00 resources/views/payment_basic.blade.php 0000644 00000011536 15012230276 0014314 0 ustar 00 <!-- Pay with stripe --> <a href="javascript:;" class="btn btn-primary" onclick="event.preventDefault(); $('#stripe-form').trigger('submit');">Pay with Stripe</a> <form id="stripe-form" action="{{ route('wallet.pay-via-stripe') }}" method="POST" class="d-none"> @csrf </form> <a href="{{ route('wallet.pay-via-paypal', ['payable_amount' => $payable_amount]) }}" class="btn btn-primary"> Pay with paypal </a> <!-- Button trigger modal --> <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#bankModal"> Pay via direct bank </button> <!-- stripe Modal --> <div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h1 class="modal-title fs-5" id="exampleModalLabel">Modal title</h1> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <form action="{{route('wallet.pay-via-stripe') }}" method="post"> @csrf <input type="hidden" name="payable_amount" value="{{ $payable_amount }}"> <div class="row"> <div class="col-md-12 mt-2"> <div class="form-group"> <label for="card_number">{{ __('Card Number') }}*</label> <input autocomplete='off' class='form-control card-number' size='20' type='text' name="card_number" autocomplete="off"> </div> </div> <div class="col-md-12 mt-4"> <div class="form-group"> <label for="month">{{ __('Month') }}*</label> <input input class='form-control card-expiry-month' size='2' type='text' name="month" autocomplete="off"> </div> </div> <div class="col-md-12 mt-4"> <div class="form-group"> <label for="year">{{ __('Year') }}*</label> <input class='form-control card-expiry-year' size='4' type='text' name="year" autocomplete="off"> </div> </div> <div class="col-md-12 my-4"> <div class="form-group"> <label for="cvc">{{ __('CVC') }}*</label> <input autocomplete='off' class='form-control card-cvc' size='4' type='text' name="cvc" autocomplete="off"> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-danger" data-bs-dismiss="modal">{{ __('Cancel') }}</button> <button class="btn btn-primary btn-block" type="submit">{{ __('Payment') }}</button> </div> </form> </div> </div> </div> {{-- bank modal --}} <div class="modal fade" id="bankModal" tabindex="-1" aria-labelledby="bankModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h1 class="modal-title fs-5" id="bankModalLabel">Pay via direct bank</h1> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> {!! nl2br($basic_payment->bank_information) !!} <form action="{{route('wallet.pay-via-bank') }}" method="post"> @csrf <input type="hidden" name="payable_amount" value="{{ $payable_amount }}"> <div class="form-group"> <label for="">Provide your transaction</label> <textarea required name="bank_transaction" class="form-control" id="" cols="30" rows="5"></textarea> </div> <button class="btn btn-primary">Submit</button> </form> </div> </div> </div> </div> resources/views/payment_addon.blade.php 0000644 00000013761 15012230276 0014322 0 ustar 00 @if ($razorpay_credentials->razorpay_status == 'active') <a href="javascript:;" class="btn btn-primary" id="razorpayBtn"> Pay with razorpay </a> <form action="{{ route('wallet.pay-via-razorpay') }}" method="POST" class="d-none"> @csrf <input type="hidden" name="payable_amount" value="{{ $payable_amount }}"> <script src="https://checkout.razorpay.com/v1/checkout.js" data-key="{{ $razorpay_credentials->razorpay_key }}" data-currency="{{ $razorpay_credentials->currency_code }}" data-amount= "{{ $razorpay_credentials->payable_with_charge * 100 }}" data-buttontext="{{ __('Pay') }}" data-name="{{ $razorpay_credentials->razorpay_name }}" data-description="{{ $razorpay_credentials->razorpay_description }}" data-image="{{ asset($razorpay_credentials->razorpay_image) }}" data-prefill.name="" data-prefill.email="" data-theme.color="{{ $razorpay_credentials->razorpay_theme_color }}"> </script> </form> @endif @if ($mollie_credentials->mollie_status == 'active') <a href="{{ route('wallet.pay-via-mollie', ['payable_amount' => $payable_amount]) }}" class="btn btn-primary"> Pay with Mollie </a> @endif @if ($instamojo_credentials->instamojo_status == 'active') <a href="{{ route('wallet.pay-via-instamojo', ['payable_amount' => $payable_amount]) }}" class="btn btn-primary"> Pay with instamojo </a> @endif @if ($flutterwave_credentials->flutterwave_status == 'active') <a onclick="flutterwavePayment()" href="javascript:;" class="btn btn-primary"> Pay with flutterwave </a> @endif @if ($paystack_credentials->paystack_status == 'active') <a onclick="payWithPaystack()" href="javascript:;" class="btn btn-primary my-2"> Pay with paystack </a> @endif @push('js') <script> "use strict"; $(function() { $("#razorpayBtn").on("click", function(){ $(".razorpay-payment-button").trigger('click'); }) }); </script> {{-- start flutterwave payment --}} <script src="https://checkout.flutterwave.com/v3.js"></script> <script> "use strict"; function flutterwavePayment() { var isDemo = "{{ env('APP_MODE') }}" if(isDemo == 'DEMO'){ toastr.error('This Is Demo Version. You Can Not Change Anything'); return; } FlutterwaveCheckout({ public_key: "{{ $flutterwave_credentials->flutterwave_public_key }}", tx_ref: "{{ substr(rand(0,time()),0,10) }}", amount: "{{ $flutterwave_credentials->payable_with_charge }}", currency: "{{ $flutterwave_credentials->currency_code }}", country: "{{ $flutterwave_credentials->country_code }}", payment_options: " ", customer: { email: "{{ $user->email }}", phone_number: "{{ $user->phone }}", name: "{{ $user->name }}", }, callback: function (data) { var tnx_id = data.transaction_id; var _token = "{{ csrf_token() }}"; var payable_amount = "{{ $payable_amount }}"; var secret_key = "{{ $flutterwave_credentials->flutterwave_secret_key }}"; $.ajax({ type: 'post', data : {tnx_id, _token, payable_amount, secret_key}, url: "{{ url('paymentgateway/pay-via-flutterwave') }}", success: function (response) { window.location.href = "{{ route('wallet.payment-addon-success') }}"; }, error: function(err) { toastr.error("{{ __('Payment Failed please try again') }}"); window.location.reload(); } }); }, customizations: { title: "{{ $flutterwave_credentials->flutterwave_app_name }}", logo: "{{ asset($flutterwave_credentials->flutterwave_image) }}", }, }); } </script> {{-- end flutterwave payment --}} {{-- paystack start --}} <script src="https://js.paystack.co/v1/inline.js"></script> <script> function payWithPaystack(){ var isDemo = "{{ env('APP_MODE') }}" if(isDemo == 'DEMO'){ toastr.error('This Is Demo Version. You Can Not Change Anything'); return; } var handler = PaystackPop.setup({ key: '{{ $paystack_credentials->paystack_public_key }}', email: '{{ $user->email }}', amount: '{{ $paystack_credentials->payable_with_charge * 100 }}', currency: "{{ $paystack_credentials->currency_code }}", callback: function(response){ let reference = response.reference; let tnx_id = response.transaction; let _token = "{{ csrf_token() }}"; var payable_amount = "{{ $payable_amount }}"; var secret_key = "{{ $paystack_credentials->paystack_secret_key }}"; $.ajax({ type: "get", data: {reference, tnx_id, _token, payable_amount, secret_key}, url: "{{ url('paymentgateway/pay-via-paystack') }}", success: function(response) { window.location.href = "{{ route('wallet.payment-addon-success') }}"; }, error: function(response){ toastr.error("{{ __('Payment Failed please try again') }}"); window.location.reload(); } }); }, onClose: function(){ alert('window closed'); } }); handler.openIframe(); } </script> @endpush resources/views/admin/sidebar.blade.php 0000644 00000002004 15012230276 0014165 0 ustar 00 <li class="nav-item dropdown {{ isRoute('admin.wallet-history') || isRoute('admin.pending-wallet-payment') || isRoute('admin.show-wallet-history') || isRoute('admin.rejected-wallet-payment') ? 'active' : '' }}"> <a href="#" class="nav-link has-dropdown" data-toggle="dropdown"><i class="fas fa-wallet"></i> <span>{{ __('Manage Wallet') }} </span> </a> <ul class="dropdown-menu"> <li class="{{ isRoute('admin.wallet-history') ? 'active' : '' }}"><a class="nav-link" href="{{ route('admin.wallet-history') }}">{{ __('Wallet History') }}</a></li> <li class="{{ isRoute('admin.pending-wallet-payment') ? 'active' : '' }}"><a class="nav-link" href="{{ route('admin.pending-wallet-payment') }}">{{ __('Pending Request') }}</a></li> <li class="{{ isRoute('admin.rejected-wallet-payment') ? 'active' : '' }}"><a class="nav-link" href="{{ route('admin.rejected-wallet-payment') }}">{{ __('Rejected Request') }}</a></li> </ul> </li> resources/views/admin/show.blade.php 0000644 00000021601 15012230276 0013540 0 ustar 00 @extends('admin.master_layout') @section('title') <title>{{ __('Wallet Details') }}</title> @endsection @section('admin-content') <div class="main-content"> <section class="section"> <x-admin.breadcrumb title="{{ __('Wallet Details') }}" :list="[ __('Dashboard') => route('admin.dashboard'), __('Wallet Details') => '#', ]" /> <div class="section-body"> <div class="row"> <div class="col-12 col-md-12 col-lg-12"> <div class="card"> <div class="card-body"> <div class="table-responsive"> <table class="table table-striped"> <tr> <td>{{ __('User') }}</td> <td><a href="{{ route('admin.customer-show', $wallet_history->user_id) }}">{{ $wallet_history?->user?->name }}</a> </td> </tr> <tr> <td>{{ __('Gateway') }}</td> <td>{{ $wallet_history->payment_gateway }}</td> </tr> <tr> <td>{{ __('Amount') }}</td> <td>{{ currency($wallet_history->amount) }}</td> </tr> <tr> <td>{{ __('Status') }}</td> <td> @if ($wallet_history->payment_status == 'success') <div class="badge bg-success">{{ __('Success') }}</div> @elseif ($wallet_history->payment_status == 'rejected') <div class="badge bg-danger">{{ __('Rejected') }}</div> @else <div class="badge bg-danger">{{ __('Pending') }}</div> @endif </td> </tr> <tr> <td>{{ __('Transaction') }}</td> <td>{!! nl2br($wallet_history->transaction_id) !!}</td> </tr> <tr> <td>{{ __('Deposit At') }}</td> <td>{{ formattedDateTime($wallet_history->created_at) }}</td> </tr> </table> </div> @if ($wallet_history->payment_status == 'pending') <a href="javascript:;" data-bs-toggle="modal" data-bs-target="#rejectWallet" class="btn btn-danger">{{ __('Make a reject') }}</a> @endif @if ($wallet_history->payment_status == 'rejected' || $wallet_history->payment_status == 'pending') <a href="javascript:;" data-bs-toggle="modal" data-bs-target="#approveRefund" class="btn btn-success">{{ __('Make an approved') }}</a> @endif <a href="" data-url="{{ route('admin.delete-wallet-history', $wallet_history->id) }}" class="btn btn-danger delete">{{ __('Delete History') }}</a> </div> </div> </div> </div> </div> </section> </div> <div class="modal fade" tabindex="-1" role="dialog" id="delete"> <div class="modal-dialog" role="document"> <form action="" method="POST"> @csrf @method('DELETE') <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">{{ __('Delete refund request') }}</h5> <button type="button" class="btn-close" data-bs-dismiss="modal"></button> </div> <div class="modal-body"> <p class="text-danger">{{ __('Are You Sure to Delete this refund ?') }}</p> </div> <div class="modal-footer"> <x-admin.button variant="danger" data-bs-dismiss="modal" text="{{ __('Close') }}" /> <x-admin.button type="submit" text="{{ __('Yes, Delete') }}" /> </div> </div> </form> </div> </div> <!--Wallet Reject Modal --> <div class="modal fade" id="rejectWallet" tabindex="-1" role="dialog" aria-labelledby="modelTitleId" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">{{ __('Payment Request Rejected') }}</h5> <button type="button" class="btn-close" data-bs-dismiss="modal"></button> </div> <div class="modal-body"> <div class="container-fluid"> <form action="{{ route('admin.rejected-wallet-request', $wallet_history->id) }}" method="POST"> @csrf <div class="form-group"> <label for="">{{ __('Subject') }}</label> <input type="text" name="subject" class="form-control"> </div> @php($default_value = '[[name]]') <div class="form-group"> <label for="">{{ __('Description') }} <span data-toggle="tooltip" data-placement="top" class="fa fa-info-circle text--primary" title="Don't remove the [[name]] keyword, user name will be dynamic using it"> </label> <textarea name="description" class="form-control text-area-5" cols="30" rows="10">{{ 'Dear ' . $default_value }}</textarea> </div> </div> </div> <div class="modal-footer"> <x-admin.button variant="danger" data-bs-dismiss="modal" text="{{ __('Close') }}" /> <x-admin.button type="submit" text="{{ __('Save Data') }}" /> </div> </form> </div> </div> </div> <!--Refund Approved Modal --> <div class="modal fade" id="approveRefund" tabindex="-1" role="dialog" aria-labelledby="modelTitleId" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">{{ __('Wallet payment request approval') }}</h5> <button type="button" class="btn-close" data-bs-dismiss="modal"></button> </div> <div class="modal-body"> <div class="container-fluid"> <form action="{{ route('admin.approved-wallet-request', $wallet_history->id) }}" method="POST"> @csrf {{ __('Are you sure want to approve this wallet payment request?') }} </div> </div> <div class="modal-footer"> <x-admin.button variant="danger" data-bs-dismiss="modal" text="{{ __('Close') }}" /> <x-admin.button type="submit" text="{{ __('Yes, Sure') }}" /> </div> </form> </div> </div> </div> @push('js') <script> $(function() { 'use strict' $('.delete').on('click', function(e) { e.preventDefault(); const modal = $('#delete'); modal.find('form').attr('action', $(this).data('url')); modal.modal('show'); }) }) </script> @endpush @endsection resources/views/admin/index.blade.php 0000644 00000020632 15012230276 0013672 0 ustar 00 @extends('admin.master_layout') @section('title') <title>{{ $title }}</title> @endsection @section('admin-content') <div class="main-content"> <section class="section"> <x-admin.breadcrumb title="{{ $title }}" :list="[ __('Dashboard') => route('admin.dashboard'), $title => '#', ]" /> <div class="row"> <div class="col-md-3"> <div class="card card-statistic-1"> <div class="card-icon bg-primary"> <i class="far fa-newspaper"></i> </div> <div class="card-wrap"> <div class="card-header"> <h4>{{ __('Total Deposit') }}</h4> </div> <div class="card-body"> {{ currency($wallet_histories->sum('amount')) }} </div> </div> </div> </div> <div class="col-md-3"> <div class="card card-statistic-1"> <div class="card-icon bg-success"> <i class="far fa-newspaper"></i> </div> <div class="card-wrap"> <div class="card-header"> <h4>{{ __('Success Deposit') }}</h4> </div> <div class="card-body"> {{ currency($wallet_histories->where('payment_status', 'success')->sum('amount')) }} </div> </div> </div> </div> <div class="col-md-3"> <div class="card card-statistic-1"> <div class="card-icon bg-danger"> <i class="far fa-newspaper"></i> </div> <div class="card-wrap"> <div class="card-header"> <h4>{{ __('Pending Deposit') }}</h4> </div> <div class="card-body"> {{ currency($wallet_histories->where('payment_status', 'pending')->sum('amount')) }} </div> </div> </div> </div> <div class="col-md-3"> <div class="card card-statistic-1"> <div class="card-icon bg-warning"> <i class="far fa-newspaper"></i> </div> <div class="card-wrap"> <div class="card-header"> <h4>{{ __('Rejected Deposit') }}</h4> </div> <div class="card-body"> {{ currency($wallet_histories->where('payment_status', 'rejected')->sum('amount')) }} </div> </div> </div> </div> </div> <div class="section-body"> <div class="row"> <div class="col-12 col-md-12 col-lg-12"> <div class="card"> <div class="card-body"> <div class="table-responsive"> <table class="table table-striped"> <thead> <th>{{ __('SN') }}</th> <th>{{ __('User') }}</th> <th>{{ __('Gateway') }}</th> <th>{{ __('Amount') }}</th> <th>{{ __('Status') }}</th> <th>{{ __('Deposit At') }}</th> <th>{{ __('Action') }}</th> </thead> @forelse ($wallet_histories as $index => $wallet_history) <tr> <td>{{ ++$index }}</td> <td><a href="{{ route('admin.customer-show', $wallet_history->user_id) }}">{{ $wallet_history?->user?->name }}</a> </td> <td>{{ $wallet_history->payment_gateway }}</td> <td>{{ currency($wallet_history->amount) }}</td> <td> @if ($wallet_history->payment_status == 'success') <div class="badge bg-success">{{ __('Success') }}</div> @elseif ($wallet_history->payment_status == 'rejected') <div class="badge bg-danger">{{ __('Rejected') }}</div> @else <div class="badge bg-danger">{{ __('Pending') }}</div> @endif </td> <td>{{ formattedDateTime( $wallet_history->created_at) }}</td> <td> <a href="{{ route('admin.show-wallet-history', $wallet_history->id) }}" class="btn btn-primary btn-sm"><i class="fa fa-eye"></i></a> <a href="" data-url="{{ route('admin.delete-wallet-history', $wallet_history->id) }}" class="btn btn-danger btn-sm delete"><i class="fa fa-trash"></i></a> </td> </tr> @empty <x-empty-table :name="__('')" route="" create="no" :message="__('No data found!')" colspan="7"></x-empty-table> @endforelse </table> </div> </div> </div> </div> </div> </div> </section> </div> <div class="modal fade" tabindex="-1" role="dialog" id="delete"> <div class="modal-dialog" role="document"> <form action="" method="POST"> @csrf @method('DELETE') <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">{{ __('Delete refund request') }}</h5> <button type="button" class="btn-close" data-bs-dismiss="modal"></button> </div> <div class="modal-body"> <p class="text-danger">{{ __('Are You Sure to Delete this refund ?') }}</p> </div> <div class="modal-footer"> <x-admin.button variant="danger" data-bs-dismiss="modal" text="{{ __('Close') }}" /> <x-admin.button type="submit" text="{{ __('Yes, Delete') }}" /> </div> </div> </form> </div> </div> @push('js') <script> $(function() { 'use strict' $('.delete').on('click', function(e) { e.preventDefault(); const modal = $('#delete'); modal.find('form').attr('action', $(this).data('url')); modal.modal('show'); }) }) </script> @endpush @endsection resources/views/.gitkeep 0000644 00000000000 15012230276 0011330 0 ustar 00 resources/views/payment.blade.php 0000644 00000004022 15012230276 0013143 0 ustar 00 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Wallet module</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> <link rel="stylesheet" href="{{ asset('global/toastr/toastr.min.css') }}"> <script src="https://www.google.com/recaptcha/api.js" async defer></script> </head> <body> <div class="container text-center"> <h1 class="my-5">Wallet module</h1> @include('wallet::payment_basic') @include('wallet::payment_addon') </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script> <script src="{{ asset('global/toastr/toastr.min.js') }}"></script> <script> @if(Session::has('messege')) var type="{{Session::get('alert-type','info')}}" switch(type){ case 'info': toastr.info("{{ Session::get('messege') }}"); break; case 'success': toastr.success("{{ Session::get('messege') }}"); break; case 'warning': toastr.warning("{{ Session::get('messege') }}"); break; case 'error': toastr.error("{{ Session::get('messege') }}"); break; } @endif </script> @if ($errors->any()) @foreach ($errors->all() as $error) <script> toastr.error('{{ $error }}'); </script> @endforeach @endif @stack('js') </body> </html> resources/views/index.blade.php 0000644 00000005702 15012230276 0012603 0 ustar 00 <!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> <title>Wallet Module</title> </head> <body> <div class="container"> <h1 class="text-center">Wallet Module</h1> <div class="card text-left"> <div class="card-body"> <h4 class="card-title">Deposit form</h4> <form action="{{ route('wallet.wallet.create') }}"> <div class="form-group"> <label for="">Deposit Amount</label> <input type="text" class="form-control" name="amount" autocomplete="off"> </div> <button class="btn btn-primary">{{ __('Submit') }}</button> </form> </div> </div> <h1>Wallet Balance : {{ currency($wallet_histories->where('payment_status', 'success')->sum('amount')) }}</h1> <table class="table table-striped"> <thead> <th>{{ __('SN') }}</th> <th>{{ __('Amount') }}</th> <th>{{ __('Gateway Name') }}</th> <th>{{ __('Transaction') }}</th> <th>{{ __('Deposit At') }}</th> <th>{{ __('Status') }}</th> </thead> @forelse ($wallet_histories as $index => $wallet_history) <tr> <td>{{ ++$index }}</td> <td>{{ currency($wallet_history->amount) }}</td> <td>{{ $wallet_history->payment_gateway }}</td> <td>{{ $wallet_history->transaction_id }}</td> <td>{{ $wallet_history->created_at->format('H:iA, d M Y') }}</td> <td> @if ($wallet_history->payment_status == 'success') success @elseif ($wallet_history->payment_status == 'rejected') rejected @else pending @endif </td> </tr> @empty <x-empty-table :name="__('')" route="" create="no" :message="__('No data found!')" colspan="6"></x-empty-table> @endforelse </table> </div> <!-- Optional JavaScript; choose one of the two! --> <!-- Option 1: Bootstrap Bundle with Popper --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"> </script> </body> </html>
| ver. 1.4 |
Github
|
.
| PHP 8.3.20 | Генерация страницы: 0.01 |
proxy
|
phpinfo
|
Настройка