Пример #1
0
 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);
                 }
             }
         }
     }
 }