$consulta_promociones, ]); } public function showclientes(){ return view('menu/clientes'); } public function showservicios(){ return view('menu/servicios'); } public function showtop(){ return view('menu/top'); } public function showreportes(){ return view('menu/reportes'); } public function showperfil(){ return view('menu/perfil'); } public function showpendientes(){ return view('menu/pendientes'); } public function showconfiguracion(){ return view('menu/configuracion'); } public function showplanes(){ return view('menu/planes'); } public function showusuarios(){ return view('menu/usuarios'); } public function showadmin(){ return view('menu/admin'); } public function showrecarga(){ return view('menu/recarga'); } public function showcomprar(){ return view('menu/comprar'); } public function showLogRecargas(){ return view('menu/logs_recargas'); } public function showLogGeneral(){ return view('menu/log_general'); } public function showLogHistorial(){ return view('menu/log_historial'); } public function showroles(){ return view('menu/roles'); } public function pay($estado){ return view('menu/order',[ 'estado' => $estado, ]); } public function showcredenciales(Request $request){ $credencial = Crypt::decryptString($request->id); $consulta_historiales = Historiale::where('id',$credencial)->with('cuentas')->first(); $msj = Configuracione::orderby('id','desc')->select('msj_compra','msj_wp','clave_1','clave_2','clave_3','clave_4','clave_5','clave_6','iptv')->first(); return view('menu/credenciales',[ 'consulta' =>$consulta_historiales, 'msj' => $msj, ]); } public function order( Request $request ){ $payment_id= $request->get('payment_id'); $response = Http::get("https://api.mercadopago.com/v1/payments/$payment_id" . "?access_token=APP_USR-7353579040069171-102716-58fdd1f52a604a1febd18a638227f603-260361439"); $response = json_decode($response); $status = $response->status; if ($status == 'approved') { $metodo_pago = $response->payment_method_id; $referencia = $response->external_reference; $consulta = recarga::where('reference',$referencia)->where('status',$status)->exists(); if ($consulta == false){ $update_recargas = recarga::where('reference',$referencia)->update(['status' => $status,'payment_method_id'=> $metodo_pago]); $recarga = recarga::where('reference',$referencia)->with('usuario')->first(); $usuario= $recarga->usuario; $saldo = $usuario->saldo; $saldo_anterior = $saldo->valor; $rol = $usuario->rol->nombre; $monto = $recarga->valor_recarga; if (!empty($saldo_anterior)) { $valor= (float)$saldo_anterior + (float)$monto ; $nuevo_saldo = $saldo->update(['valor'=>$valor]); }else{ $nuevo_saldo = $saldo->update(['valor'=>$monto]); } } $estado= 'aprobado'; }elseif($status == 'pending'){ $metodo_pago = $response->payment_method_id; $referencia = $response->external_reference; $update_recargas = recarga::where('reference',$referencia)->update(['status' => $status,'payment_method_id'=> $metodo_pago]); $usuario = recarga::where('reference',$referencia)->with('usuario')->first()->usuario; $estado= 'pendiente'; }else{ $metodo_pago = $response->payment_method_id; $referencia = $response->external_reference; $update_recargas = recarga::where('reference',$referencia)->update(['status' => $status,'payment_method_id'=> $metodo_pago]); $usuario = recarga::where('reference',$referencia)->with('usuario')->first()->usuario; $estado ='rechazado'; }; return redirect()->route('pay',$estado); } public function showwebhooks(Request $request){ } public function recargas(){ return view('menu/recargas'); } public function showutilidad(){ return view('menu/utilidades'); } public function showwompi($monto){ return view('menu/wompi',[ 'monto' => $monto, ]); } public function showoferta(){ return view('portadaservicio'); } public function showsingle(){ return view('menu/single'); } public function showpromo(){ return view('menu/promo'); } public function showlogs(){ return view('menu/logs'); } public function showpromociones(){ return view('menu/promociones'); } public function showimport(){ return view('menu/importar'); } public function showcategoria(){ return view('menu/categoria'); } public function showcategorias(){ return view('menu/ver'); } public function showservicio(){ return view('menu/servicio'); } public function compras( Request $request ){ $payment_id= $request->get('payment_id'); $response = Http::get("https://api.mercadopago.com/v1/payments/$payment_id" . "?access_token=APP_USR-7353579040069171-102716-58fdd1f52a604a1febd18a638227f603-260361439"); $response = json_decode($response); $status = $response->status; if ($status == 'approved') { foreach($response->additional_info->items as $item){ $consulta = Historiale::where('id', $item->id)->first(); $tarifa_id=$consulta->tarifa_id; } $date = Carbon::now()->subDay(30); $fecha= $date->format('Y-m-d'); //SERVICIO// if (!empty($consulta->tarifa_id)) { $pantallas = Tarifas::where('id', $tarifa_id)->with('servicio')->first(); $servicio_id= $pantallas->servicio_id; $pantalla_servicio = $pantallas->servicio->pantallas; $pantalla_servicio_completa = $pantallas->servicio->completa; $pantallas= $pantallas ->pantallas ?? null; $cantidad_tarjetaPlan = $consulta->cantidad; $cantidad_solicitada = (int)$cantidad_tarjetaPlan*(int)$pantallas; //dd($cantidad_tarjetaPlan); if((int)$pantalla_servicio_completa >= (int)$cantidad_solicitada ){ $suma = $pantalla_servicio-$cantidad_solicitada; $cuenta = Cuentas::where('servicio_id',$servicio_id)->whereDate('inicio','>=',$fecha)->Orderby('created_at', 'ASC')->withCount('historiales')->where('estado','activo')->having('historiales_count', '<=', $suma)->first(); }elseif((int)$pantalla_servicio_completa == (int)$cantidad_solicitada){ $this->fecha_final_1 = $today = Carbon::now()->addDays($pantallas->dias-15); $this->fecha_final_2 = $today = Carbon::now()->addDays($pantallas->dias+15); //completas $cuenta = Cuentas::where('servicio_id',$this->servicio_id)->whereDate('inicio','>=',$this->fecha)->whereDate('vencimiento','>=',$this->fecha_final_1)->whereDate('vencimiento','<=',$this->fecha_final_2)->Orderby('created_at', 'ASC')->withCount('historiales')->where('estado','pendiente')->having('historiales_count', '==', 0)->first(); }else{ $cuenta=null; } if (!empty($cuenta) ) { $perfil = $cuenta->historiales_count; for ($n=1; $n <= $cantidad_solicitada ; $n++) { $historial_cuenta = new Historial_cuenta(); $historial_cuenta->cuenta_id = $cuenta->id; $historial_cuenta->historial_id = $item->id; $historial_cuenta->perfil = (int)$perfil + (int)$n; $historial_cuenta->save(); //dd($historial_cuenta->id); } if (($n-1) == $cantidad_solicitada) { $consulta->update(['estado'=>'activo']); $this->cred($consulta); $encryptado = Crypt::encryptString($consulta->id); //dd('llegue'); return redirect('/credenciales?id='.$encryptado); }else{ return 'Error en la asignacion de cuentas, comuniquese con soporte!'; } }else{ //dd($cuenta); $suma2= $pantalla_servicio - $pantallas; for ($h=0; $h < (int)$cantidad_tarjetaPlan ; $h++) { //dd($n); $cuenta = Cuentas::where('servicio_id',$servicio_id)->whereDate('inicio','>=',$fecha)->Orderby('created_at', 'ASC')->with('historiales')->withCount('historiales')->where('estado','activo')->having('historiales_count', '<=', (int)$suma2)->first(); //dd($cuenta); if (!empty($cuenta)) { $perfil = $cuenta->historiales_count; for ($y=0; $y < (int)$pantallas ; $y++) { //dd($pantallas); $historial_cuenta = new Historial_cuenta; $historial_cuenta->cuenta_id = $cuenta->id; $historial_cuenta->historial_id = $item->id; $historial_cuenta->perfil = (int)$perfil + (int)$y+1; $historial_cuenta->save(); } }else{ return 'No hay cuentas disponibles, comuniquese con soporte!'; } } $consulta->update(['estado'=>'activo']); $this->cred($consulta); $encryptado = Crypt::encryptString($consulta->id); return redirect('/credenciales?id='.$encryptado); } } //PROMOCION if (!empty($consulta->promocion_id)){ for ($p = 0; $p < (int)$consulta->cantidad; $p++) { //dd($this->cantidad_comprarPromo); foreach ($consulta->promocion->tarifas as $tarifa) { $pantallas_tarifa = $tarifa->pantallas; $servicio_id = $tarifa->servicio_id; $pantalla_servicio = $tarifa->servicio->pantallas; $pantalla_servicio_completa = $tarifa->servicio->completa; $faltante = $pantalla_servicio - $pantallas_tarifa; if ($pantalla_servicio_completa == $pantallas_tarifa) { $this->fecha_final_1 = $today = Carbon::now()->addDays($tarifa->dias-15); $this->fecha_final_2 = $today = Carbon::now()->addDays($tarifa->dias+15); $cuenta = Cuentas::where('servicio_id',$servicio_id)->whereDate('inicio','>=',$fecha)->whereDate('vencimiento','>=',$this->fecha_final_1)->whereDate('vencimiento','<=',$this->fecha_final_2)->Orderby('created_at', 'ASC')->with('historiales')->withCount('historiales')->where('estado','pendiente')->having('historiales_count', '==', 0)->first(); }else{ $cuenta = Cuentas::where('servicio_id', $servicio_id)->whereDate('inicio','>=',$fecha)->Orderby('created_at', 'ASC')->with('historiales')->withCount('historiales')->where('estado', 'activo')->having('historiales_count', '<=', (int)$faltante)->first(); } //dd($tarifa); if (!empty($cuenta)) { $perfil = $cuenta->historiales_count; for ($y = 0; $y < (int)$pantallas_tarifa; $y++) { $historial_cuenta = new Historial_cuenta(); $historial_cuenta->cuenta_id = $cuenta->id; $historial_cuenta->historial_id = $item->id; $historial_cuenta->perfil = (int)$perfil + (int)$y+1; $historial_cuenta->save(); } } else { return 'No hay cuentas disponibles, comuniquese con soporte!'; } } } if (!empty($y)) { $consulta->update(['estado'=>'activo']); $this->cred($consulta); $encryptado = Crypt::encryptString($consulta->id); //dd('llegue'); return redirect('/credenciales?id='.$encryptado); }else{ return 'No hay cuentas disponibles, comuniquese con soporte!'; } } } } //wompi public function wompi_pagos(Request $request){ $response = Http::get("https://sandbox.wompi.co/v1/transactions/136099-1677473887-65588"); $response = json_decode($response); //dd($response); } public function wompi_hook(Request $request){ //return json_encode('hola'); if (!empty($request)) { foreach($request->data as $item ){ //return $item; $status = $item['status']; $user_id = $item['reference']; $monto = substr($item['amount_in_cents'], 0, -2); $metodo_pago = $item['payment_method_type']; } $update_recargas = recarga::where('reference',$referencia)->update(['status' => $status,'payment_method_id'=> $metodo_pago]); if ($status == 'APPROVED') { $usuario = recarga::where('reference',$referencia)->with('usuario')->first()->usuario; $saldo = $usuario->saldo; $saldo_anterior = $saldo->valor; $rol = $usuario->rol->nombre; //return $rol; $monto_adicional = 0; if ($rol == "super" || $rol == "administrador" || $rol == "distribuidor") { $monto_adicional = 500; } if (!empty($saldo_anterior)) { $valor= (float)$saldo_anterior + (float)$monto - (float)$monto_adicional; $nuevo_saldo = $saldo->update(['valor'=>$valor]); // return $nuevo_saldo; } } } } public function cred($consulta){ $encryptado = Crypt::encryptString($consulta->id); $enlace = '/credenciales?id='.$encryptado; $user=User::find($consulta->cliente); if (!empty($consulta->promocion_id)){ { $shortURLObject = ShortURL::destinationUrl('https://app.sirpremium.com.co'.$enlace)->make(); $shortURL = $shortURLObject->default_short_url; $message = $consulta->promocion->nombre.'. Ver credenciales: '.$shortURL ; $recipients= '+57'.$consulta->cliente->celular; $this->sendMessage($message, $recipients); $notificacion = [ 'enlace' => $enlace, 'fecha_final' => $consulta->fecha_final, 'cliente' => $consulta->cliente->name, 'servicio' => $consulta->promocion->nombre, 'tipo' => 'compra', 'vendedor' => Role::where('nombre','super')->first()->usuarios->first()->name, ]; } if (!empty($consulta->tarifa_id)){ $shortURLObject = ShortURL::destinationUrl('https://app.sirpremium.com.co'.$enlace)->make(); $shortURL = $shortURLObject->default_short_url; $message = $consulta->tarifa->servicio->nombre.'-'.$consulta->tarifa->pantallas. 'P. Ver credenciales: '.$shortURL ; $recipients= '+57'.$consulta->cliente->celular; $this->sendMessage($message, $recipients); $notificacion = [ 'enlace' => $enlace, 'fecha_final' => $consulta->fecha_final, 'cliente' => $consulta->cliente->name, 'servicio' => $consulta->tarifa->servicio->nombre.'-'.$consulta->tarifa->pantallas. 'pantallas', 'tipo' => 'compra', 'vendedor' => Role::where('nombre','super')->first()->usuarios->first()->name, ]; } Notification::send($user, new compra($notificacion)); } } public function sendMessage($message, $recipients) { $auth_basic = base64_encode(getenv("USER_LABSMOBILE").':'.getenv("PASS_LABSMOBILE")); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://api.labsmobile.com/json/send", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => '{"message":"'.$message.'", "tpoa":"Sender","recipient":[{"msisdn":"'.$recipients.'"}]}', CURLOPT_HTTPHEADER => array( "Authorization: Basic ".$auth_basic, "Cache-Control: no-cache", "Content-Type: application/json" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { } else { } } public function showmp(Request $request){ Log::info('MercadoPago webhook received', $request->all()); // Aquí puedes agregar la lógica para manejar las notificaciones de MercadoPago $data = json_decode($request->getContent(), true); $paymentId = $data['data']['id']; $response = Http::get("https://api.mercadopago.com/v1/payments/$paymentId" . "?access_token=APP_USR-7353579040069171-102716-58fdd1f52a604a1febd18a638227f603-260361439"); //return $response; $response = json_decode($response); $status = $response->status; if ($status == 'approved') { $metodo_pago = $response->payment_method_id; $referencia = $response->external_reference; $consulta = recarga::where('reference',$referencia)->where('status',$status)->exists(); if ($consulta == false){ $update_recargas = recarga::where('reference',$referencia)->update(['status' => $status,'payment_method_id'=> $metodo_pago]); $recarga = recarga::where('reference',$referencia)->with('usuario')->first(); $usuario= $recarga->usuario; $saldo = $usuario->saldo; $saldo_anterior = $saldo->valor; $monto = $recarga->valor_recarga; $valor= (float)$saldo_anterior + (float)$monto ; $nuevo_saldo = $saldo->update(['valor'=>$valor]); } } return response()->json(['status' => 'ok']); } public function pruebas (){ $fechaHoy = Carbon::now()->format('Y-m-d'); $consulta_historial = Historiale::whereDate('fecha_final', $fechaHoy)->with('cliente')->get(); foreach ($consulta_historial as $item) { $user = User::find($item->cliente->id); if (!empty($item->promocion_id)) { $nombre= $item->promocion->nombre; } if (!empty($item->tarifa_id)) { $nombre = $item->tarifa->servicio->nombre . '-' . $item->tarifa->pantallas . 'P'; } $notificacion = [ //'valor' => $value['precio'], 'fecha_final' => $item->fecha_final, 'cliente' => $item->cliente->name, 'servicio' => $nombre, 'tipo' => 'vencimiento', 'vendedor' =>$item->vendedor->name, ]; Notification::sendNow($user, new Vencimiento($notificacion)); // $fecha=Carbon::parse($item->fecha_final)->format('d/m/Y'); //$message = 'Su '.$nombre.', Vence Hoy, '.$fecha.'. Renueva ahora!!' ; //$recipients= '+57'.$item->cliente->celular; //$auth_basic = base64_encode('admin@jaguarws.ga:9u3xxXhHt8maeiOexg07pFKI0rpYazI0'); //$curl = curl_init(); //curl_setopt_array($curl, array( //CURLOPT_URL => "https://api.labsmobile.com/json/send", //CURLOPT_RETURNTRANSFER => true, //CURLOPT_ENCODING => "", //CURLOPT_MAXREDIRS => 10, //CURLOPT_TIMEOUT => 30, //CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, //CURLOPT_CUSTOMREQUEST => "POST", //CURLOPT_POSTFIELDS => '{"message":"'.$message.'", "tpoa":"Sender","recipient":[{"msisdn":"'.$recipients.'"}]}', //CURLOPT_HTTPHEADER => array( // "Authorization: Basic ".$auth_basic, // "Cache-Control: no-cache", // "Content-Type: application/json" //), //)); //$response = curl_exec($curl); //$err = curl_error($curl); //curl_close($curl); //return $response; //if ($err) { //} else { //} } $fechaHoy1 = Carbon::now(); $fechaHoy1 = Carbon::parse($fechaHoy1)->subDay(1); $consulta_historial1= Historiale::whereDate('fecha_final','<',$fechaHoy1)->with('cliente','cuentas')->get(); foreach ($consulta_historial1 as $item1) { foreach($item1->cuentas->unique() as $item2){ //dd($item2); $logs = new log; $logs->historial_id = $item1->id; $logs->cuenta_id = $item2->id; $logs->save(); } //$eliminar_cuentas = Historial_cuenta::where('historial_id',$item1->id)->truncate(); //dd('termine'); } } }