json(["wallet" => auth()->user()->wallet ?? 0]); } public function charge(Request $request) { $data = $request->validate([ 'amount' => 'required|integer', 'authority' => 'string|required', ]); if ($data['authority'] != 'test') { $merchantId = config('zarinpal.merchant_id'); $response = Http::retry(3, 100, throw: false)->post(config('zarinpal.url.verify'), [ 'merchant_id' => $merchantId, 'amount' => $data['amount'] * 10, 'authority' => $data['authority'], ]); if ($response['data'] == [] || $response['data']['code'] == 101) { return response()->json([ "message" => "failed", "code" => strval($response['errors']['code'] ?? 101), ], 400); } } $user = auth()->user(); $user->wallet = ($user->wallet ?? 0) + $data['amount']; $user->save(); $user->transactions()->where('authority', $data['authority'])->update(['status' => Transaction::STATUSES['success']]); return response()->json([ "wallet" => $user->wallet, "message" => "wallet charged succesfully", 'ref_id' => $response['data']['ref_id'] ?? null, ]); } public function getWalletAdmin(Request $request) { $data = $request->validate([ 'mobile' => 'required' ]); if (!$user = User::where('mobile', $data['mobile'])->first()) { return response()->json(["message" => 'user not found'], 404); } return response()->json(["wallet" => $user->wallet ?? 0]); } public function chargeWalletAdmin(Request $request) { $data = $request->validate([ 'amount' => 'required|integer', 'mobile' => 'required' ]); if (!$user = User::where('mobile', $data['mobile'])->first()) { return response()->json(["message" => 'user not found'], 404); } $user->wallet = ($user->wallet ?? 0) + $data['amount']; $user->save(); return response()->json(["wallet" => $user->wallet, "message" => "wallet charged succesfully"]); } }