- Add Enums: TransactionType, TransactionStatus, PaymentGateway - Migrations: wallets, wallet_transactions, wallet_activity_logs - Models: Wallet, WalletTransaction, WalletActivityLog - Services: WalletService with complete business logic - Controllers: WalletController, PaymentController - Filament Resources: WalletResource, WalletTransactionResource - Artisan Command: ifnex:token for API token generation - Sanctum integration with statefulApi and exception handling - Full API endpoints: balance, transactions, admin-adjust, freeze/unfreeze
41 lines
1.8 KiB
PHP
41 lines
1.8 KiB
PHP
<?php
|
||
|
||
use App\Http\Controllers\Api\DiscountCodeController;
|
||
use App\Http\Controllers\Api\PaymentController;
|
||
use App\Http\Controllers\Api\PricingController;
|
||
use App\Http\Controllers\Api\TrackController;
|
||
use App\Http\Controllers\Api\WalletController;
|
||
use Illuminate\Support\Facades\Route;
|
||
use App\Http\Middleware\ApiKeyMiddleware;
|
||
|
||
// APIهای عمومی با API Key
|
||
Route::middleware([ApiKeyMiddleware::class])->prefix('v1')->group(function () {
|
||
Route::get('/track/{awb_no}', [TrackController::class, 'show']);
|
||
});
|
||
|
||
// APIهای احراز هویت شده (نیاز به Sanctum یا Bearer Token)
|
||
Route::middleware(['auth:sanctum'])->prefix('v1')->group(function () {
|
||
|
||
// Wallet APIها (کاربر عادی)
|
||
Route::get('/wallet/balance', [WalletController::class, 'balance']);
|
||
Route::get('/wallet/transactions', [WalletController::class, 'transactions']);
|
||
|
||
// Payment APIها
|
||
Route::post('/payment/redirect', [PaymentController::class, 'redirectToGateway']);
|
||
Route::get('/payment/check/{transaction}', [PaymentController::class, 'checkStatus']);
|
||
|
||
// Admin Wallet APIها
|
||
Route::post('/wallet/admin-adjust', [WalletController::class, 'adminAdjust']);
|
||
Route::post('/wallet/{wallet}/freeze', [WalletController::class, 'freeze']);
|
||
Route::post('/wallet/{wallet}/unfreeze', [WalletController::class, 'unfreeze']);
|
||
Route::get('/wallet/{wallet}/activity-log', [WalletController::class, 'activityLog']);
|
||
});
|
||
|
||
// Callback از درگاه (بدون auth)
|
||
Route::any('/v1/payment/callback', [PaymentController::class, 'callback'])
|
||
->name('payment.callback');
|
||
|
||
// APIهای عمومی (بدون auth)
|
||
Route::post('/v1/calculate', [PricingController::class, 'calculate']);
|
||
Route::get('/v1/discount-codes', [DiscountCodeController::class, 'index']);
|
||
Route::post('/v1/discount-codes/validate', [DiscountCodeController::class, 'validate']); |