From 5430e3bd0f387152dc07afbb9fb088624964980d Mon Sep 17 00:00:00 2001 From: gholak tala Date: Sun, 26 Apr 2026 20:09:21 +0000 Subject: [PATCH] NASER add jibit verification api and jibit counter --- .../Controllers/Admin/CustomerController.php | 34 +++++++++++++++++++ app/Http/Controllers/Controller.php | 13 +++++++ routes/admin.php | 3 ++ 3 files changed, 50 insertions(+) diff --git a/app/Http/Controllers/Admin/CustomerController.php b/app/Http/Controllers/Admin/CustomerController.php index a4f2446..b04bb46 100644 --- a/app/Http/Controllers/Admin/CustomerController.php +++ b/app/Http/Controllers/Admin/CustomerController.php @@ -4,9 +4,12 @@ namespace App\Http\Controllers\Admin; use App\DB\Te\TableEngine; use App\Http\Controllers\SuperController; +use App\Models\Cnt; use App\Models\Customer; use App\Models\TransactionsAdmin; use App\Models\Withdraw; +use Carbon\Carbon; +use Hekmatinasser\Verta\Verta; use Illuminate\Http\Request; use Rooyesh\Wallet\interfaces\TransactionInterface; use Rooyesh\Wallet\interfaces\WalletInterface; @@ -254,4 +257,35 @@ class CustomerController extends SuperController return response()->json(true); } + + public function cardChecker(Request $request){ + + if (strlen($request->cart_number) != 16) { + throw new UnprocessableEntityHttpException('شماره کارت اشتباه می‌باشد.'); + } + if (empty($request->national_code)) { + throw new UnprocessableEntityHttpException('لطفا شماره ملی وارد کنید.'); + } + if(empty($request->birth_date)){ + throw new UnprocessableEntityHttpException('لطفا تاریخ تولد وارد کنید.'); + } + $birth_date = Verta::instance(Carbon::parse($request->birth_date))->format('Ymd'); + $card_number = preg_replace('/\D/', '', $request->cart_number); + +// dd("ok"); + + $response = $this->jibit("cartMatching", $card_number, $request->national_code, $birth_date); + + if(!empty($response)){ + if (isset($response['cartData'])) { + unset($response['refresh']); + return response()->json($response); + }elseif(!empty($response['message'])){ + throw new UnprocessableEntityHttpException($response['message']); + } + }else{ + throw new UnprocessableEntityHttpException('ارتباط با سامانه قطع میباشد.'); + } + } + } diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index e7afe91..5c06b20 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Models\Cnt; use App\Models\User; use App\Models\Customer; use App\Models\Setting; @@ -179,6 +180,14 @@ class Controller extends BaseController public static function jibit($method, $p1 = null, $p2 = null, $p3 = null) { + $counter = Cnt::where('key', 'jibit_counter')->first(); + if(empty($counter)){ + $counter = new Cnt(); + $counter->key = "jibit_counter"; + $counter->value = 0; + $counter->save(); + } + $apiData['refresh'] = Http::withoutVerifying()->withoutVerifying()->withToken(Storage::get('refreshTokenGibit')) ->post("https://napi.jibit.ir/ide/v1/tokens/generate", ['apiKey' => "J5WxrPxPOg", 'secretKey' => "7dgeE70xQXsQL7r36j3wif6X9",])->json(); Storage::put('accessTokenGibit', $apiData['refresh']['accessToken']); @@ -196,6 +205,10 @@ class Controller extends BaseController Storage::put('refreshTokenGibit', $apiData['refresh']['refreshToken']); $apiData['cartMatching'] = Http::withoutVerifying()->withToken(Storage::get('accessTokenGibit'))->get("https://napi.jibit.ir/ide/v1/services/matching?cardNumber=$p1&nationalCode=$p2&birthDate=$p3")->json(); } + //update jibit counter + $counter->value = (int)$counter->value + 1; + $counter->save(); + if (isset( $apiData['cartMatching']['matched']) and $apiData['cartMatching']['matched'] == true) { $apiData['cartData'] = Http::withoutVerifying()->withToken(Storage::get('accessTokenGibit'))->get("https://napi.jibit.ir/ide/v1/cards?number=$p1&iban=true")->json(); return $apiData; diff --git a/routes/admin.php b/routes/admin.php index 56313fb..3dde9d7 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -150,6 +150,9 @@ Route::middleware('auth:user')->group(function (){ Route::post('/offer_code/table',[OfferCodesController::class, 'table']); Route::post('/offer_code/create',[OfferCodesController::class, 'store']); Route::resource('/offer_code',OfferCodesController::class); + + //check card + Route::post('/check_card',[CustomerController::class, 'cardChecker']); }); });