public function autorizatransaccion() { $hash = $_GET['id']; $decrypted = $this->decrypt($hash); $datos = explode('|', $decrypted); $numTarjeta = $datos[0]; $keyTransaccion = $datos[1]; $token_usuario = $datos[2]; $token_movil = $datos[3]; $idDispositivo = $datos[4]; $user = Usuario::find_by_access_token_movil($token_usuario); if (empty($user)) { $this->logg->error("1035: Usuario no Autorizado en autorizatransaccion " . $token_usuario . "con dispositivo " . $idDispositivo); $result = array("estado" => "NOK", "codResp" => "1035", "mensaje" => "Usuario No Autorizado."); $this->response($this->json($result), 200); } else { $dispositivo = Dispositivo::find_by_id_dispositivo_and_usuario_id_and_token($idDispositivo, $user->id, $token_movil); if (empty($dispositivo)) { $this->logg->error("1036: Dispositivo No Autorizado al Usuario en autorizatransaccion " . $user->id . "con dispositivo " . $idDispositivo); $result = array("estado" => "NOK", "codResp" => "1036", "mensaje" => "Dispositivo No Autorizado."); $this->response($this->json($result), 200); } else { $transaccion = Transaccion::find_by_keyTransaccion($keyTransaccion); if (empty($transaccion)) { $this->logg->error("1037: Transaccion No Existe en autorizatransaccion " . $user->id . "con dispositivo " . $idDispositivo); $result = array("estado" => "NOK", "codResp" => "1037", "mensaje" => "Transaccion No Existe."); $this->response($this->json($result), 200); } else { if ($transaccion->estado == "PENDIENTE") { $tarjeta = Elemento::find_by_id($numTarjeta); if (empty($tarjeta)) { $this->logg->error("1038: Elemento de Pago No Existe en autorizatransaccion " . $user->id . "con dispositivo " . $idDispositivo); $result = array("estado" => "NOK", "codResp" => "1038", "mensaje" => "Elemento de Pago No Existe."); $this->response($this->json($result), 200); } else { $transaccion->estado = "APROBADO"; $transaccion->elemento_id = $tarjeta->id; $transaccion->pagador = $user->id; $transaccion->dispositivo_pagador = $dispositivo->id; $transaccion->save(); if (count($transaccion->errors->full_messages()) != 0) { $this->logg->error("1039: Transaccion No Actualizada en autorizatransaccion " . $user->id . "con dispositivo " . $idDispositivo); $result = array("estado" => "NOK", "codResp" => "1039", "mensaje" => "Transaccion No Actualizada."); $this->response($this->json($result), 200); } else { $cobro = Cobro::find_by_transaccion_id($transaccion->id); if (empty($cobro)) { $result = array("estado" => "NOK", "codResp" => "10391", "mensaje" => "Cobro No Encontrado."); $this->response($this->json($result), 200); } else { $cobro->estado = "APROBADO"; $cobro->save(); if (count($cobro->errors->full_messages()) != 0) { $result = array("estado" => "NOK", "codResp" => "1040", "mensaje" => "Cobro No Actualizado."); $this->response($this->json($result), 200); } else { $pago = new Pago(); $pago->transaccion_id = $transaccion->id; $pago->dispositivo_id = $transaccion->dispositivo_pagador; $pago->usuario_id = $transaccion->pagador; $pago->elemento_id = $transaccion->elemento_id; $pago->cobro_id = $cobro->id; $pago->save(); if (count($pago->errors->full_messages()) != 0) { $result = array("estado" => "NOK", "codResp" => "1041", "mensaje" => "Pago No Ingresado."); $this->response($this->json($result), 200); } else { $result = array("estado" => "OK", "codResp" => "1042", "mensaje" => "Pago Realizado."); $this->response($this->json($result), 200); } } } //Fin else cobro } //fin else transaccion } //Fin else tarjeta } else { $result = array("estado" => "NOK", "codResp" => "1043", "mensaje" => "Transaccion ya se Encuentra Cancelada."); $this->response($this->json($result), 200); } } } } }