98
UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES DELITOS RELATIVOS A LAS TARJETAS DE CRÉDITO, ALTERNATIVA TECNOLÓGICA DE PAGO. PROPUESTA LA COMUNICACIÓN NFC MANUAL TÉCNICO AUTOR: ROBERTO DAVID RAMIREZ VELIZ TUTOR: ING. JUAN SANCHEZ GUAYAQUIL – ECUADOR 2013

FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

Embed Size (px)

Citation preview

Page 1: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS

CARRERA DE INGENIERÍA EN SISTEMAS

COMPUTACIONALES

DELITOS RELATIVOS A LAS TARJETAS DE CRÉDITO,

ALTERNATIVA TECNOLÓGICA DE PAGO.

PROPUESTA LA COMUNICACIÓN NFC

MANUAL TÉCNICO

AUTOR: ROBERTO DAVID RAMIREZ VELIZ

TUTOR: ING. JUAN SANCHEZ

GUAYAQUIL – ECUADOR

2013

Page 2: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

2

ÍNDICE GENERAL

DIAGRAMA DE PROCESOS DE PAGO NFC........................................................ 4

DETALLE DE LOS PROCESO NFC ....................................................................... 6

DIAGRAMA DE CASO DE USO ............................................................................ 7

CÓDIGO FUENTE DE LA APLICACIÓN DE LA TARJETA DE CRÉDITO ......... 8

NOMBRE DEL PROYECTO : TESIS ...................................................................... 8

PAQUETE ANDROID.COM.LIBRARY .............................................................. 8

CLASE DATABASE.JAVA ............................................................................. 8

CLASE FUNCIONES.JAVA .......................................................................... 10

CLASE HTTP.JAVA ...................................................................................... 11

CLASE HTTPPOSTAUX.JAVA .................................................................... 12

CLASE PARAMETROS.JAVA ...................................................................... 14

PAQUETE ANDROID.COM.TESIS .................................................................. 16

CLASE ACTIVIDAD_ACERCA.JAVA ......................................................... 16

CLASE CONTRASENIA.JAVA .................................................................... 16

CLASE DATABASE_HELPER.JAVA ........................................................... 19

CLASE EDITAR_TARJETA.JAVA ............................................................... 19

CLASE GALERIA_TARJETA.JAVA ............................................................ 24

CLASE INGRESAR.JAVA ............................................................................ 28

CLASE LECTURA.JAVA .............................................................................. 32

CLASE LOGIN.JAVA .................................................................................... 33

CLASE MAIN.JAVA .................................................................................... 36

CLASE REGISTRO.JAVA ............................................................................ 37

CLASE TARJETA.JAVA .............................................................................. 40

ARCHIVOS XML .............................................................................................. 42

ANDROID MANIFEST.XML ........................................................................ 42

ACERCA.XML .............................................................................................. 43

CONTRASENIA.XML ................................................................................... 44

Page 3: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

3

EDITAR.XML ................................................................................................ 44

GALERIA.XML ............................................................................................. 46

INGRESAR.XML ........................................................................................... 47

LOGIN.XML .................................................................................................. 48

REGISTER.XML ............................................................................................ 49

TARJETA.XML ............................................................................................. 51

CÓDIGO PHP .................................................................................................... 53

CONFIGURACIONE.PHP ............................................................................. 53

LISTADO_TARJETA.PHP ............................................................................ 54

PETICIONES.PHP.......................................................................................... 55

INDEX.PHP.................................................................................................... 60

LISTADOTARJETAENTIDADES.PHP ......................................................... 60

LISTADOUSUARIO.PHP .............................................................................. 62

USUARIOSISTEMA.PHP .............................................................................. 63

USUARIO.PHP .............................................................................................. 66

FUNCIONES.PHP .......................................................................................... 72

CONTROL.PHP ............................................................................................. 73

PERMISO.PHP ............................................................................................... 74

PETICIONES.PHP.......................................................................................... 74

PETICIONES ENTIDADES ........................................................................... 78

PETICIONES TARJETAS.PHP ...................................................................... 80

PETICIONES USUARIOS.PHP ..................................................................... 82

RECUPERAR CONTRASENIA.PHP ............................................................. 84

RECUPERAR CONTRASENIA EXITO.PHP ................................................ 85

JQUERY.JTABLE .............................................................................................. 86

DICCIONARIO DE DATOS .............................................................................. 96

LIBRERÍAS ADICIONALES ............................................................................. 98

Page 4: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

4

DIAGRAMA DE PROCESOS DE PAGO NFC

Inicio de la actividad del pago NFC

El cliente tiene la necesidad de adquirir un bien.

El cliente selecciona los productos a comprar

Se debe activar la comunicación NFC

no

El Sistema le validará si tiene activo el NFC

si

El Vendedor, le indicará el total a cancelar

no

El Sistema le calculará el total a cancelar

si

El Vendedor Indica el total a Pagar

Inicio/Cliente

Selección productos a comprar

¿Tiene Activo NFC?

Activar NFC

Verifica valor de totales

x

Page 5: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

5

El usuario deberá acerca su dispositivo Smartphone Para poder realizar la comunicación NFC

El usuario acepta la cancelación de la compra Se realiza la confirmación del Pago.

Se ejecuta el pago de la tarjeta de crédito del NFC

Se recibirá un correo de confirmación del pago

Finaliza la actividad del pago NFC

Efectuar el Pago NFC

Confirmar de Pago NFC

Fin/Proceso

Interacción de los dispositivos móviles

x

Confirmación del Proceso(email)

Page 6: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

6

DETALLE DE LOS PROCESO NFC

Inicio/Cliente El cliente inicia el proceso de pago de tarjeta de crédito mediante el NFC. Cliente necesita adquirir un producto El cliente tiene la necesidad de adquirir un bien, por este motivo se dirige a la tienda, a realizar la respectiva compra. Activación de la comunicación NFC del smartphone El cliente deberá crear la tarjeta de crédito en el dispositivo Smartphone, para establecer el mecanismo de comunicación y poder efectuar el pago NFC debe activar la configuración Android Beam en el dispositivo. Verificación de la comunicación NFC El sistema verificará que la comunicación de NFC e internet este activa, mediante validación del servicio en el teléfono. Cálculo de totales El cliente seleccionara los productos a comprar, y se le presentara mediante un cálculo el total a pagar del cliente. Verificación del total a cancelar El cliente verificará la compra de los productos, se le detallara todos los artículos seleccionados con su respectivo precio de venta. Interacción del dispositivo móvil con el lector NFC El cliente deberá acercar su dispositivo Smartphone con el lector de NFC, para poder realizar la comunicación NFC. Aceptación de efectuarse la transacción El cliente debe aceptar la transacción, se enviará un correo automático al cliente. Ejecución del pago NFC Proceso de efectuarse el pago, se debita el saldo de la tarjeta de crédito, y podrá ser consultado su detalle del estado de cuenta mediante la vía web.

Page 7: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

7

DIAGRAMA DE CASO DE USO

DETALLE DE CASO DE USO

El usuario crea la tarjeta de crédito en el dispositivo móvil, que puede ser Dinners, Visa o Mastercard.

Deberá ingresar datos personales, y un correo electrónico donde se le enviará al cliente la verificación de la transacción.

El dispositivo móvil, efectuará el proceso de transmisión de datos al lector NFC, este recibirá la información, procesará el pago y se enviará mediante un email, la confirmación de transacción.

REGISTRAR USUARIO Y

TARJETA CRÉDITO

COMUNICACIÓN NFC

REALIZACIÓN DEL PAGO

Users

Page 8: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

8

CÓDIGO FUENTE DE LA APLICACIÓN DE LA TARJETA DE CRÉDITO

NOMBRE DEL PROYECTO : TESIS

PAQUETE ANDROID.COM.LIBRARY

CLASE DATABASE.JAVA Permite la interacción de la base de dato que se crea en el teléfono smartphone que

contendrá la información de las tarjetas de crédito, contiene las sentencias de SQL,

como: delete, update, insert. package com.android.library; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import com.android.tesis.R; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.provider.BaseColumns; import android.util.Log; import android.widget.Toast; public class DataBase { private static final String DATABASE_NAME = "Tesis"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "tarjetas"; private static final String TAG = "Tesis"; private Context context; private SQLiteDatabase db; public DataBase(Context context) { this.context = context; OpenHelper openHelper = new OpenHelper(this.context); this.db = openHelper.getWritableDatabase(); }

Page 9: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

9

public void open() { if (!db.isOpen()) { OpenHelper openHelper = new OpenHelper(this.context); this.db = openHelper.getWritableDatabase(); } } public long insert(String tableName, ContentValues pairValues) { long rowId = db.insertOrThrow(tableName, null, pairValues); Log.i(TAG, "Insertando registro en la tabla " + tableName + ", id = " + rowId); return rowId; } public void insertString(String tableName, String query) { Log.i(TAG, "Insertando registro en la tabla " + tableName); db.execSQL(query); } public void close() { db.close(); } public String update(String tableName, ContentValues pairValues, String rowId) { db.update(tableName, pairValues, " tarjeta = " + rowId, null); Log.i(TAG, "Actualizando registro en la tabla " + tableName + ", tarjeta = " + rowId); return rowId; } public long updateAll(String tableName, ContentValues pairValues) { Log.i(TAG, "Actualizando registro en la tabla " + tableName ); return db.update(tableName, pairValues, null , null); } public void delete(String tableName, String whereClause, String[] whereArgs) { db.delete(tableName, whereClause, whereArgs); Log.i(TAG, "Eliminando registros en la tabla " + tableName); } public Cursor rawQuery(String query, String[] selectionArgs) { Cursor test = db.rawQuery(query, selectionArgs); return test; } public Cursor query(String tableName, String[] columnsName, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) { return db.query(tableName, columnsName, selection, selectionArgs, groupBy, having, orderBy); } private static class OpenHelper extends SQLiteOpenHelper {

Page 10: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

10

private Context context; OpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); this.context = context; } @Override public void onCreate(SQLiteDatabase db) { String s; try { InputStream in = context.getResources().openRawResource( R.raw.sql); DocumentBuilder builder = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); Document doc = builder.parse(in, null); NodeList statements = doc.getElementsByTagName("statement"); for (int i = 0; i < statements.getLength(); i++) { s = statements.item(i).getChildNodes().item(0) .getNodeValue(); db.execSQL(s); } } catch (Throwable t) { System.out.println("Error hp: " + t.toString()); Toast.makeText(context, t.toString(), 50000).show(); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + DATABASE_NAME); onCreate(db); } } }

CLASE FUNCIONES.JAVA

Esta clase maneja la encriptación de la información con el estándar MD5 que se le

envía por parámetro.

package com.android.library; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Funciones {

Page 11: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

11

public static String md5(String s) { MessageDigest digest; try { digest = MessageDigest.getInstance("MD5"); digest.update(s.getBytes(),0,s.length()); String hash = new BigInteger(1, digest.digest()).toString(16); return hash; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; } } CLASE HTTP.JAVA

Permite la interacción con el ambiente web, maneja las conexiones del cliente y se

realiza una validación para verificar que el dispositivo tiene la conexión de internet. package com.android.library; import java.net.URLEncoder; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import android.content.Context; import android.net.ConnectivityManager; public class Http { /* * Funcion para acceder al Web Service */ public String accederWebService(String page, List<NameValuePair> nameValuePairs, int method) { String responseBody = null; HttpClient httpclient = new DefaultHttpClient(); ResponseHandler<String> responseHandler = new BasicResponseHandler(); try { switch (method) {

Page 12: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

12

case 1: { String combinedParams = ""; if (!nameValuePairs.isEmpty()) { combinedParams += "?"; for (NameValuePair p : nameValuePairs) { String paramString = p.getName() + "=" + URLEncoder.encode(p.getValue(), "UTF-8"); if (combinedParams.length() > 1) { combinedParams += "&" + paramString; } else { combinedParams += paramString; } } } HttpGet request = new HttpGet( page + combinedParams); responseBody = httpclient.execute(request, responseHandler); break; } case 2: { HttpPost httpPost = new HttpPost(page); httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); responseBody = httpclient.execute(httpPost, responseHandler); break; } } } catch (Exception e) { e.printStackTrace(); } return responseBody; } /* * Funcion para validar si se esta conectado al internet */ public boolean validarConexion(Context context) { String service = Context.CONNECTIVITY_SERVICE; ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(service); return connectivity.getActiveNetworkInfo() != null && connectivity.getActiveNetworkInfo().isAvailable() && connectivity.getActiveNetworkInfo().isConnected(); } } CLASE HTTPPOSTAUX.JAVA

Permite manejar la interacción con el método JSON, que encripta los objetos que son

utilizados en el ambiente, se manejo la información en el tipo de dato String.

Page 13: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

13

package com.android.library; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import android.util.Log; /*CLASE AUXILIAR PARA EL ENVIO DE PETICIONES A NUESTRO SISTEMA * Y MANEJO DE RESPUESTA.*/ public class Httppostaux{ InputStream is = null; String result = ""; public JSONArray getserverdata(ArrayList<NameValuePair> parameters, String urlwebserver ){ //conecta via http y envia un post. httppostconnect(parameters,urlwebserver); if (is!=null){//si obtuvo una respuesta getpostresponse(); return getjsonarray(); }else{ return null; } } //peticion HTTP private void httppostconnect(ArrayList<NameValuePair> parametros, String urlwebserver){ // try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(urlwebserver); httppost.setEntity(new UrlEncodedFormEntity(parametros)); //ejecuto peticion enviando datos por POST HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ Log.e("log_tag", "Error in http connection "+e.toString()); } } public void getpostresponse(){ //Convierte respuesta a String try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);

Page 14: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

14

StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString(); Log.e("getpostresponse"," result= "+sb.toString()); }catch(Exception e){ Log.e("log_tag", "Error converting result "+e.toString()); } } public JSONArray getjsonarray(){ //parse json data try{ JSONArray jArray = new JSONArray(result); return jArray; } catch(JSONException e){ Log.e("log_tag", "Error parsing data "+e.toString()); return null; } } } CLASE PARAMETROS.JAVA

Maneja la dirección URL, donde se encuentra el Web Services, puede ser este local o

publicado en algún dominio que maneja el estándar Mail, XAMPP.

package com.android.library; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.preference.PreferenceManager; public class Parametros { private SharedPreferences parametros; private String urlServidor = "http://www.ideasinteligentes.com.ec/PagosNFC/"; private String urlServidor = "http://10.0.2.2/PagosNFC/"; private Editor editor; private String PREF_NOMBRE = "PREF_NOMBRE"; private String PREF_CEDULA = "PREF_CEDULA"; private String PREF_USUARIO = "PREF_USUARIO"; private String PREF_CONTRASENIA = "PREF_USUARIO";

Page 15: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

15

public Parametros(Context context) { parametros = PreferenceManager.getDefaultSharedPreferences(context); } public String getNombre() { return parametros.getString(PREF_NOMBRE, ""); } public void setNombre(String nombre) { editor = parametros.edit(); editor.putString(PREF_NOMBRE, nombre); editor.commit(); } public String getUsuario() { return parametros.getString(PREF_USUARIO, ""); } public void setCedula(String cedula) { editor = parametros.edit(); editor.putString(PREF_CEDULA, cedula); editor.commit(); } public String getCedula() { return parametros.getString(PREF_CEDULA, ""); } public void setUsuario(String usuario) { editor = parametros.edit(); editor.putString(PREF_USUARIO, usuario); editor.commit(); } public String getContrasenia() { return parametros.getString(PREF_CONTRASENIA, ""); } public void setContrasenia(String contrasenia) { editor = parametros.edit(); editor.putString(PREF_CONTRASENIA, contrasenia); editor.commit(); } public String getUrlServidor() { return urlServidor; } }

Page 16: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

16

PAQUETE ANDROID.COM.TESIS

CLASE ACTIVIDAD_ACERCA.JAVA

package com.android.tesis; import android.app.Activity; import android.os.Bundle; public class Actividad_acerca extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acerca); } } CLASE CONTRASENIA.JAVA

Maneja el proceso del usuario que pueda recuperar la contraseña, que se envía por

Email, maneja métodos de conexión de internet y envio de correos. package com.android.tesis; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.TableLayout; import com.android.library.Funciones; import com.android.library.Http; import com.android.library.Parametros; public class Contrasenia extends Activity { private ProgressDialog progressDialog; private Parametros parametros; private Http http; private int error = 0; private static final int alertExito = 1, alertProgress = 2, alertError = 3, alertInternet = 4; private TableLayout tlyLogin;

Page 17: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

17

private EditText txtUsuario; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); parametros = new Parametros(getApplicationContext()); http = new Http(); setContentView(R.layout.contrasenia); tlyLogin = (TableLayout) findViewById(R.id.tlyLogin); txtUsuario = (EditText) findViewById(R.id.txtUsuario); } public void enviar(View v) { validarInputs(tlyLogin); if (error == 0) { showDialog(alertProgress); new RecordarContrasenia().execute( txtUsuario.getText().toString()); } error = 0; } @Override protected Dialog onCreateDialog(int id) { String title = "", msg = ""; switch (id) { case alertExito: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_exito).toString(); break; case alertError: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_error).toString(); break; case alertInternet: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_internet).toString(); break; case alertProgress: progressDialog = new ProgressDialog(Contrasenia.this); progressDialog.setTitle(getText(R.string.app_name).toString()); progressDialog .setMessage(getText(R.string.lbl_cargando).toString()); return progressDialog; } return new AlertDialog.Builder(Contrasenia.this) .setTitle(title) .setMessage(msg) .setPositiveButton( getText(R.string.lbl_aceptar).toString(), new DialogInterface.OnClickListener() { @Override

Page 18: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

18

public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).create(); } private void validarInputs(ViewGroup group) { for (int i = 0, count = group.getChildCount(); i < count; ++i) { View view = group.getChildAt(i); if (view instanceof EditText) { EditText e = ((EditText) view); if (e.getText().toString().length() == 0) { error++; e.setError(getText(R.string.input_error)); } } if (view instanceof ViewGroup && (((ViewGroup) view).getChildCount() > 0)) validarInputs((ViewGroup) view); } } class RecordarContrasenia extends AsyncTask<String, String, String> { protected String doInBackground(String... params) { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("accion", "RC") nameValuePairs.add(new BasicNameValuePair("usuario", params[0])); if(http.validarConexion(getApplicationContext())){ return http.accederWebService(parametros.getUrlServidor() + "/modulos/peticiones.php", nameValuePairs, 2); }else{ return "NOINTERNET"; } } protected void onPostExecute(String result) { System.out.println("Devuelve el correo: " + result); progressDialog.dismiss();// ocultamos progess dialog. if(result.equals("NOINTERNET")){ showDialog(alertInternet); }else if (result.equals("ok")) { parametros.setUsuario(txtUsuario.getText().toString()); showDialog(alertExito); } else { showDialog(alertError); }

Page 19: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

19

} } } CLASE DATABASE_HELPER.JAVA

Crea la tabla en la base de dato del teléfono que contendrá la información de la tarjeta

de crédito. package com.android.tesis; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME="tarjetas.db"; public DatabaseHelper(Context context, String nombre, CursorFactory factory, int version) { super(context, DATABASE_NAME, factory, 1); } @Override public void onCreate(SQLiteDatabase arg0) { // TODO Auto-generated method stub arg0.execSQL("CREATE TABLE tarjetas(idtarjeta TEXT PRIMARY KEY, cliente TEXT);"); } @Override public void onUpgrade(SQLiteDatabase arg0, int oldVersion, int newVersion) { // TODO Auto-generated method stub android.util.Log.v("tarjetas","Upgrading database, which will destroy all old data"); arg0.execSQL("DROP TABLE IF EXISTS tarjetas"); onCreate(arg0); } } CLASE EDITAR_TARJETA.JAVA

Permite modificar la información de la tarjeta de crédito, disponible, ejemplo, la

fecha de caducidad, el tipo de tarjeta. package com.android.tesis; import java.util.ArrayList; import java.util.Calendar;

Page 20: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

20

import java.util.GregorianCalendar; import java.util.List; import java.util.StringTokenizer; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.DatePicker; import android.widget.EditText; import android.widget.Spinner; import android.widget.TableLayout; import com.android.library.DataBase; import com.android.library.Http; import com.android.library.Parametros; public class Editar extends Activity { private DataBase db; private Cursor cursor; private static final String TABLE_NAME = "tarjetas"; private ProgressDialog progressDialog; private Parametros parametros; private Http http; private int error = 0; private static final int alertExito = 1, alertProgress = 2, alertError = 3, alertInternet = 4; private TableLayout tlyIngresar; private EditText txtTarjeta, txtCodigo; private Spinner spnTarjetas; private String[] tarjetas = { "America", "Visa", "Dinners" }; private int[] images = { R.drawable.american, R.drawable.visa, R.drawable.discovery }; private DatePicker dpFecha; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); db = new DataBase(getApplicationContext()); parametros = new Parametros(getApplicationContext()); http = new Http(); setContentView(R.layout.ingresar);

Page 21: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

21

tlyIngresar = (TableLayout) findViewById(R.id.tlyIngresar); txtTarjeta = (EditText) findViewById(R.id.txtTarjeta); txtTarjeta.setEnabled(false); txtCodigo = (EditText) findViewById(R.id.txtCodigo); spnTarjetas = (Spinner) findViewById(R.id.spnTarjetas); ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, tarjetas); dataAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spnTarjetas.setAdapter(dataAdapter); dpFecha = (DatePicker) findViewById(R.id.dpFecha); Calendar cal = Calendar.getInstance(); Intent i = getIntent(); if (i.hasExtra("id")) { cursor = db .rawQuery("SELECT tarjeta, tipo, codigo, strftime('%m-%d-%Y', FECHA, 'unixepoch') AS fecha FROM " + TABLE_NAME + " WHERE _id = ?", new String[] { i.getStringExtra("id") }); cursor.moveToPosition(0); Log.e("aqui ", cursor.getString(cursor .getColumnIndexOrThrow("fecha"))); StringTokenizer st = new StringTokenizer(cursor.getString(cursor .getColumnIndexOrThrow("fecha")),"-"); txtTarjeta.setText(cursor.getString(cursor .getColumnIndexOrThrow("tarjeta"))); txtCodigo.setText(cursor.getString(cursor .getColumnIndexOrThrow("codigo"))); String tipo = cursor.getString(cursor .getColumnIndexOrThrow("tipo")); for(int x=0; x<tarjetas.length; x++ ){ if(tipo.equals(tarjetas[x])){ spnTarjetas.setSelection(x,true); } } int month = Integer.valueOf(st.nextToken()); int day = Integer.valueOf(st.nextToken()); int year = Integer.valueOf(st.nextToken()); Log.e("Entra", Integer.valueOf(day).toString() + " - " + Integer.valueOf(month).toString() + " - " + Integer.valueOf(year).toString()); dpFecha.updateDate(year, month, day); } } public void guardar(View v) { validarInputs(tlyIngresar); if (error == 0) { showDialog(alertProgress); new ActualizarTarjeta().execute( txtTarjeta.getText().toString(), txtCodigo.getText().toString(), tarjetas[spnTarjetas.getSelectedItemPosition()],

Page 22: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

22

Integer.valueOf( images[spnTarjetas.getSelectedItemPosition()]) .toString()); } error = 0; } public void guardarTarjeta() { ContentValues vals = new ContentValues(); vals.put("tarjeta", txtTarjeta.getText().toString()); vals.put("tipo", tarjetas[spnTarjetas.getSelectedItemPosition()]); vals.put("codigo", txtCodigo.getText().toString()); vals.put("imagen", images[spnTarjetas.getSelectedItemPosition()]); GregorianCalendar d = new GregorianCalendar(dpFecha.getYear(), dpFecha.getMonth() - 1, dpFecha.getDayOfMonth()); System.out.println("Fecha: " + d.toString()); vals.put("FECHA", d.getTimeInMillis()/1000); db.update(TABLE_NAME, vals, txtTarjeta.getText().toString()); } @Override protected Dialog onCreateDialog(int id) { String title = "", msg = ""; switch (id) { case alertExito: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_exito).toString(); break; case alertError: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_error).toString(); break; case alertInternet: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_internet).toString(); break; case alertProgress: progressDialog = new ProgressDialog(Editar.this); progressDialog.setTitle(getText(R.string.app_name).toString()); progressDialog .setMessage(getText(R.string.lbl_cargando).toString()); return progressDialog; } return new AlertDialog.Builder(Editar.this) .setTitle(title) .setMessage(msg) .setPositiveButton(getText(R.string.lbl_aceptar).toString(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {

Page 23: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

23

// TODO Auto-generated method stub } }).create(); } private void validarInputs(ViewGroup group) { for (int i = 0, count = group.getChildCount(); i < count; ++i) { View view = group.getChildAt(i); if (view instanceof EditText) { EditText e = ((EditText) view); if (e.getText().toString().length() == 0) { error++; e.setError(getText(R.string.input_error)); } } if (view instanceof ViewGroup && (((ViewGroup) view).getChildCount() > 0)) validarInputs((ViewGroup) view); } } class ActualizarTarjeta extends AsyncTask<String, String, String> { protected String doInBackground(String... params) { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("accion", "AT")); nameValuePairs.add(new BasicNameValuePair("tarjeta", params[0])); nameValuePairs.add(new BasicNameValuePair("codigo", params[1])); nameValuePairs.add(new BasicNameValuePair("tipo", params[2])); nameValuePairs.add(new BasicNameValuePair("imagen", params[3])); nameValuePairs.add(new BasicNameValuePair("fecha_creacion", Integer.valueOf(dpFecha.getYear()).toString() + "-" + Integer.valueOf(dpFecha.getMonth()).toString() + "-" + Integer.valueOf(dpFecha.getDayOfMonth()).toString())); if (http.validarConexion(getApplicationContext())) { return http.accederWebService(parametros.getUrlServidor() + "/modulos/peticiones.php", nameValuePairs, 2); } else { return "NOINTERNET"; } } protected void onPostExecute(String result) { System.out.println("Rpta: " + result); progressDialog.dismiss();// ocultamos progess dialog. if (result.equals("NOINTERNET")) { showDialog(alertInternet); } else if (result.equals("ok")) { guardarTarjeta(); showDialog(alertExito);

Page 24: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

24

} else { showDialog(alertError); } } } public void onDestroy() { super.onDestroy(); db.close(); } } CLASE GALERIA_TARJETA.JAVA

Maneja la creación de la imagen de la tarjeta de crédito, esta información se la

almacena en la base de dato del teléfono. package com.android.tesis; package com.android.tesis; import java.nio.charset.Charset; import android.app.Activity; import android.content.Intent; import android.content.res.TypedArray; import android.database.Cursor; import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; import android.nfc.NfcAdapter.CreateNdefMessageCallback; import android.nfc.NfcAdapter.OnNdefPushCompleteCallback; import android.nfc.NfcEvent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Parcelable; import android.text.format.Time; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.Toast; import com.android.library.DataBase; public class GaleriaTarjeta extends Activity implements CreateNdefMessageCallback, OnNdefPushCompleteCallback { NfcAdapter mNfcAdapter; private static final int MESSAGE_SENT = 1; private Gallery galeria1; private ImageView imagen;

Page 25: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

25

private static final String TABLE_NAME = "tarjetas"; private DataBase db; private Cursor cursor; GalleryAdapter adapterG; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.galeria); mNfcAdapter = NfcAdapter.getDefaultAdapter(this); if (mNfcAdapter == null) { Toast.makeText(getApplicationContext(), "NFC is not available on this device.", Toast.LENGTH_LONG) .show(); } // Register callback to set NDEF message mNfcAdapter.setNdefPushMessageCallback(this, this); // Register callback to listen for message-sent success mNfcAdapter.setOnNdefPushCompleteCallback(this, this); db = new DataBase(getApplicationContext()); cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, new String[] {}); Log.e("tesis", "Registros " + cursor.getCount()); galeria1 = (Gallery) findViewById(R.id.galeria); imagen = (ImageView) findViewById(R.id.imagen); adapterG = new GalleryAdapter(); galeria1.setAdapter(adapterG); galeria1.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { if (position == 0) { Intent i = new Intent(); i.setClass(getApplicationContext(), Ingresar.class); startActivity(i); } else { cursor.moveToPosition(position); Intent i = new Intent(); i.putExtra("id", cursor.getString(cursor .getColumnIndexOrThrow("_id"))); i.setClass(getApplicationContext(), Editar.class); startActivity(i); } } }); galeria1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub cursor.moveToPosition(position);

Page 26: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

26

Intent i = new Intent(); i.putExtra("numero_tarjeta", cursor.getString(cursor .getColumnIndexOrThrow("tarjeta"))); i.setClass(getApplicationContext(), Tarjeta.class); startActivity(i); return true; } }); } @Override public void onResume() { super.onResume(); cursor.requery(); adapterG.notifyDataSetChanged(); // Check to see that the Activity started due to an Android Beam if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) { processIntent(getIntent()); } } @Override public void onDestroy() { super.onDestroy(); db.close(); } class GalleryAdapter extends BaseAdapter { private int mGalleryItemBackcground; public GalleryAdapter() { TypedArray a = getApplicationContext().obtainStyledAttributes( R.styleable.Gallery1); mGalleryItemBackcground = a.getResourceId( R.styleable.Gallery1_android_galleryItemBackground, 0); a.recycle(); } public int getCount() { // TODO Auto-generated method stub return cursor.getCount(); } public Object getItem(int arg0) { // TODO Auto-generated method stub return arg0; } public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } public View getView(int arg0, View arg1, ViewGroup arg2) {

Page 27: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

27

// TODO Auto-generated method stub cursor.moveToPosition(arg0); ImageView i = new ImageView(getApplicationContext()); i.setImageResource(cursor.getInt(cursor .getColumnIndexOrThrow("imagen"))); i.setLayoutParams(new Gallery.LayoutParams(180, 180)); i.setScaleType(ScaleType.FIT_XY); i.setBackgroundResource(mGalleryItemBackcground); return i; } } /* * Para la interacion con NFC */ /** * Implementation for the CreateNdefMessageCallback interface */ @Override public NdefMessage createNdefMessage(NfcEvent event) { Time time = new Time(); time.setToNow(); String text = ("Beam me up!\n\n" + "Beam Time: " + time .format("%H:%M:%S")); NdefMessage msg = new NdefMessage(new NdefRecord[] { createMimeRecord( "application/com.example.android.beam", text.getBytes()) /** * The Android Application Record (AAR) is commented out. When a device * receives a push with an AAR in it, the application specified in the * AAR is guaranteed to run. The AAR overrides the tag dispatch system. * You can add it back in to guarantee that this activity starts when * receiving a beamed message. For now, this code uses the tag dispatch * system. */ // ,NdefRecord.createApplicationRecord("com.example.android.beam") }); return msg; } @Override public void onNewIntent(Intent intent) { // onResume gets called after this to handle the intent setIntent(intent); } /** * Parses the NDEF Message from the intent and prints to the TextView */ void processIntent(Intent intent) { Parcelable[] rawMsgs = intent .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); // only one message sent during the beam NdefMessage msg = (NdefMessage) rawMsgs[0]; // record 0 contains the MIME type, record 1 is the AAR, if present

Page 28: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

28

Toast.makeText(getApplicationContext(), new String(msg.getRecords()[0].getPayload()), Toast.LENGTH_LONG) .show(); Intent i = new Intent(); i.setClass(getApplicationContext(), Lectura.class); i.putExtra("mensaje", new String(msg.getRecords()[0].getPayload())); startActivity(i); } /** * Creates a custom MIME type encapsulated in an NDEF record * * @param mimeType */ public NdefRecord createMimeRecord(String mimeType, byte[] payload) { byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII")); NdefRecord mimeRecord = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload); return mimeRecord; } @Override public void onNdefPushComplete(NfcEvent event) { // TODO Auto-generated method stub // A handler is needed to send messages to the activity when this // callback occurs, because it happens from a binder thread mHandler.obtainMessage(MESSAGE_SENT).sendToTarget(); } /** This handler receives a message from onNdefPushComplete */ private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MESSAGE_SENT: Toast.makeText(getApplicationContext(), "Mensaje enviado!", Toast.LENGTH_LONG).show(); break; } } }; } CLASE INGRESAR.JAVA

package com.android.tesis; import java.util.ArrayList; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import org.apache.http.NameValuePair;

Page 29: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

29

import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.ContentValues; import android.content.DialogInterface; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.DatePicker; import android.widget.EditText; import android.widget.Spinner; import android.widget.TableLayout; import com.android.library.DataBase; import com.android.library.Http; import com.android.library.Parametros; public class Ingresar extends Activity { private DataBase db; private static final String TABLE_NAME = "tarjetas"; private ProgressDialog progressDialog; private Parametros parametros; private Http http; private int error = 0; private static final int alertExito = 1, alertProgress = 2, alertError = 3, alertInternet = 4; private TableLayout tlyIngresar; private EditText txtTarjeta, txtCodigo; private Spinner spnTarjetas; private String[] tarjetas = { "America", "Visa", "Dinners" }; private int[] images = { R.drawable.american, R.drawable.visa, R.drawable.discovery }; private DatePicker dpFecha; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); db = new DataBase(getApplicationContext()); parametros = new Parametros(getApplicationContext()); http = new Http(); setContentView(R.layout.ingresar); tlyIngresar = (TableLayout) findViewById(R.id.tlyIngresar); txtTarjeta = (EditText) findViewById(R.id.txtTarjeta); txtCodigo = (EditText) findViewById(R.id.txtCodigo); spnTarjetas = (Spinner) findViewById(R.id.spnTarjetas); ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, tarjetas); dataAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spnTarjetas.setAdapter(dataAdapter);

Page 30: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

30

dpFecha = (DatePicker) findViewById(R.id.dpFecha); } public void guardar(View v) { validarInputs(tlyIngresar); if (error == 0) { showDialog(alertProgress); new IngresarTarjeta().execute(txtTarjeta.getText().toString(), txtCodigo.getText().toString(), tarjetas[spnTarjetas.getSelectedItemPosition()], Integer.valueOf(images[spnTarjetas.getSelectedItemPosition()]).toString()); } error = 0; } public void guardarTarjeta() { ContentValues vals = new ContentValues(); vals.put("tarjeta", txtTarjeta.getText().toString()); vals.put("tipo", tarjetas[spnTarjetas.getSelectedItemPosition()]); vals.put("codigo", txtCodigo.getText().toString()); vals.put("imagen", images[spnTarjetas.getSelectedItemPosition()]); GregorianCalendar d = new GregorianCalendar(dpFecha.getYear(), dpFecha.getMonth() - 1, dpFecha.getDayOfMonth()); System.out.println("Fecha: " + d.toString()); vals.put("FECHA", d.getTimeInMillis()/1000); //System.out.println("Entra: " + d.getTime()); db.insert(TABLE_NAME, vals); } @Override protected Dialog onCreateDialog(int id) { String title = "", msg = ""; switch (id) { case alertExito: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_exito).toString(); return new AlertDialog.Builder(Ingresar.this) .setTitle(title) .setMessage(msg) .setPositiveButton(getText(R.string.lbl_aceptar).toString(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub finish(); } }).create(); case alertError: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_error).toString(); break;

Page 31: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

31

case alertInternet: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_internet).toString(); break; case alertProgress: progressDialog = new ProgressDialog(Ingresar.this); progressDialog.setTitle(getText(R.string.app_name).toString()); progressDialog .setMessage(getText(R.string.lbl_cargando).toString()); return progressDialog; } return new AlertDialog.Builder(Ingresar.this) .setTitle(title) .setMessage(msg) .setPositiveButton(getText(R.string.lbl_aceptar).toString(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).create(); } private void validarInputs(ViewGroup group) { for (int i = 0, count = group.getChildCount(); i < count; ++i) { View view = group.getChildAt(i); if (view instanceof EditText) { EditText e = ((EditText) view); if (e.getText().toString().length() == 0) { error++; e.setError(getText(R.string.input_error)); } } if (view instanceof ViewGroup && (((ViewGroup) view).getChildCount() > 0)) validarInputs((ViewGroup) view); } } class IngresarTarjeta extends AsyncTask<String, String, String> { protected String doInBackground(String... params) { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("accion", "IT")); nameValuePairs.add(new BasicNameValuePair("tarjeta", params[0])); nameValuePairs.add(new BasicNameValuePair("codigo", params[1])); nameValuePairs.add(new BasicNameValuePair("tipo", params[2])); nameValuePairs.add(new BasicNameValuePair("imagen", params[3])); nameValuePairs.add(new BasicNameValuePair("fecha_creacion",

Page 32: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

32

Integer.valueOf(dpFecha.getYear()).toString() + "-" + Integer.valueOf(dpFecha.getMonth()).toString() + "-" + Integer.valueOf(dpFecha.getDayOfMonth()).toString())); if (http.validarConexion(getApplicationContext())) { return http.accederWebService(parametros.getUrlServidor() + "/modulos/peticiones.php" , nameValuePairs, 2); } else { return "NOINTERNET"; } } protected void onPostExecute(String result) { System.out.println("Rpta: " + result); progressDialog.dismiss();// ocultamos progess dialog. if (result.equals("NOINTERNET")) { showDialog(alertInternet); } else if (result.equals("ok")) { guardarTarjeta(); showDialog(alertExito); } else { showDialog(alertError); } } } public void onDestroy(){ super.onDestroy(); db.close(); } } CLASE LECTURA.JAVA

package com.android.tesis; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import com.android.tesis.R; public class Lectura extends Activity { TextView txtMensaje; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.lectura); txtMensaje = (TextView)findViewById(R.id.txtMensaje);

Page 33: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

33

Intent i = getIntent(); if(i.hasExtra("mensaje")){ txtMensaje.setText("Se recibe: " + i.getStringExtra("mensaje")); } } } CLASE LOGIN.JAVA

Maneja la pantalla principal de la aplicación, que registra el usuario y contraseña que

contendrá la información de la tarjeta de crédito. package com.android.tesis; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.TableLayout; import android.widget.Toast; import com.android.library.Funciones; import com.android.library.Http; import com.android.library.Parametros; public class Login extends Activity { private ProgressDialog progressDialog; private Parametros parametros; private Http http; private int error = 0; private static final int alertExito = 1, alertProgress = 2, alertError = 3, alertInternet = 4; private TableLayout tlyLogin; private EditText txtUsuario, txtContrasenia; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); parametros = new Parametros(getApplicationContext()); http = new Http();

Page 34: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

34

setContentView(R.layout.login); tlyLogin = (TableLayout) findViewById(R.id.tlyLogin); txtUsuario = (EditText) findViewById(R.id.txtUsuario); txtContrasenia = (EditText) findViewById(R.id.txtContrasenia); } public void guardar(View v) { validarInputs(tlyLogin); if (error == 0) { showDialog(alertProgress); new LoguearSistema().execute( txtUsuario.getText().toString(), txtContrasenia.getText() .toString()); } error = 0; } public void registrar(View v){ Intent iRegistrar = new Intent(); iRegistrar.setClass(getApplicationContext(), Registro.class); startActivity(iRegistrar); } public void recordarContrasenia(View v){ Intent iRegistrar = new Intent(); iRegistrar.setClass(getApplicationContext(), Contrasenia.class); startActivity(iRegistrar); } @Override protected Dialog onCreateDialog(int id) { String title = "", msg = ""; switch (id) { case alertExito: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_exito).toString(); break; case alertError: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_error).toString(); break; case alertInternet: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_internet).toString(); break; case alertProgress: progressDialog = new ProgressDialog(Login.this); progressDialog.setTitle(getText(R.string.app_name).toString()); progressDialog .setMessage(getText(R.string.lbl_cargando).toString()); return progressDialog; } return new AlertDialog.Builder(Login.this)

Page 35: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

35

.setTitle(title) .setMessage(msg) .setPositiveButton( getText(R.string.lbl_aceptar).toString(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).create(); } private void validarInputs(ViewGroup group) { for (int i = 0, count = group.getChildCount(); i < count; ++i) { View view = group.getChildAt(i); if (view instanceof EditText) { EditText e = ((EditText) view); if (e.getText().toString().length() == 0) { error++; e.setError(getText(R.string.input_error)); } } if (view instanceof ViewGroup && (((ViewGroup) view).getChildCount() > 0)) validarInputs((ViewGroup) view); } } class LoguearSistema extends AsyncTask<String, String, String> { protected String doInBackground(String... params) { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("accion", "LU")); nameValuePairs.add(new BasicNameValuePair("usuario", params[0])); nameValuePairs .add(new BasicNameValuePair("contrasenia", Funciones.md5(params[1]))); Log.e("Respuesta: " , Funciones.md5(params[1]) + " - " + params[1]); if(http.validarConexion(getApplicationContext())){ return http.accederWebService(parametros.getUrlServidor() + "/modulos/peticiones.php", nameValuePairs, 2); }else{ return "NOINTERNET"; } } protected void onPostExecute(String result) { Log.e("Respuesta: " , result);

Page 36: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

36

progressDialog.dismiss();// ocultamos progess dialog. if(result.equals("NOINTERNET")){ showDialog(alertInternet); }else if (result.equals("ok")) { parametros.setUsuario(txtUsuario.getText().toString()); parametros.setContrasenia(txtContrasenia.getText().toString()); //showDialog(alertExito); Intent i = new Intent(getApplicationContext(),GaleriaTarjeta.class); startActivity(i); } else { showDialog(alertError); } } } } CLASE MAIN.JAVA

Maneja la actividad principal que se ejecuta en el proyecto. package com.android.tesis; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import com.android.library.Parametros; public class Main extends Activity { private Parametros parametros; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); parametros = new Parametros(getApplicationContext()); if(parametros.getUsuario().equals("")) { Intent i = new Intent(); i.setClass(this, Login.class); startActivity(i); }else{ Intent i = new Intent(); i.setClass(this, GaleriaTarjeta.class); startActivity(i); } finish(); } }

Page 37: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

37

CLASE REGISTRO.JAVA

Permite registrar la informacion del usuario, que manejará el teléfono, los datos que

contendrá son: nombre de usuario, contraseña, cédula, fecha de creación. package com.android.tesis; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.TableLayout; import com.android.library.Funciones; import com.android.library.Http; import com.android.library.Parametros; public class Registro extends Activity { private ProgressDialog progressDialog; private Parametros parametros; private Http http; private int error = 0; private static final int alertExito = 1, alertProgress = 2, alertError = 3, alertInternet = 4; private TableLayout tlyLogin; private EditText txtNombre, txtCedula, txtUsuario, txtContrasenia, txtEmail; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); parametros = new Parametros(getApplicationContext()); http = new Http(); setContentView(R.layout.register); tlyLogin = (TableLayout) findViewById(R.id.tlyLogin); txtNombre = (EditText) findViewById(R.id.txtNombre); txtCedula = (EditText) findViewById(R.id.txtCedula); txtEmail = (EditText) findViewById(R.id.txtEmail); txtUsuario = (EditText) findViewById(R.id.txtUsuario); txtContrasenia = (EditText) findViewById(R.id.txtContrasenia); }

Page 38: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

38

public void guardar(View v) { validarInputs(tlyLogin); if (error == 0) { showDialog(alertProgress); new RegistrarUsuario().execute(txtNombre.getText().toString(),txtCedula.getText().toString(),txtEmail.getText().toString(), txtUsuario.getText().toString(), txtContrasenia.getText() .toString()); } error = 0; } @Override protected Dialog onCreateDialog(int id) { String title = "", msg = ""; switch (id) { case alertExito: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_exito).toString(); break; case alertError: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_error).toString(); break; case alertInternet: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_internet).toString(); break; case alertProgress: progressDialog = new ProgressDialog(Registro.this); progressDialog.setTitle(getText(R.string.app_name).toString()); progressDialog .setMessage(getText(R.string.lbl_cargando).toString()); return progressDialog; } return new AlertDialog.Builder(Registro.this) .setTitle(title) .setMessage(msg) .setPositiveButton( getText(R.string.lbl_aceptar).toString(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).create(); } private void validarInputs(ViewGroup group) { for (int i = 0, count = group.getChildCount(); i < count; ++i) {

Page 39: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

39

View view = group.getChildAt(i); if (view instanceof EditText) { EditText e = ((EditText) view); if (e.getText().toString().length() == 0) { error++; e.setError(getText(R.string.input_error)); } } if (view instanceof ViewGroup && (((ViewGroup) view).getChildCount() > 0)) validarInputs((ViewGroup) view); } } class RegistrarUsuario extends AsyncTask<String, String, String> { protected String doInBackground(String... params) { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("accion", "RU")); nameValuePairs.add(new BasicNameValuePair("nombre", params[0])); nameValuePairs.add(new BasicNameValuePair("cedula", params[1])); nameValuePairs.add(new BasicNameValuePair("email", params[2])); nameValuePairs.add(new BasicNameValuePair("usuario", params[3])); nameValuePairs .add(new BasicNameValuePair("contrasenia", Funciones.md5(params[4]))); if(http.validarConexion(getApplicationContext())){ return http.accederWebService(parametros.getUrlServidor() + "/modulos/peticiones.php", nameValuePairs, 2); }else{ return "NOINTERNET"; } } protected void onPostExecute(String result) { progressDialog.dismiss();// ocultamos progess dialog. if(result.equals("NOINTERNET")){ showDialog(alertInternet); }else if (result.equals("ok")) { parametros.setNombre(txtNombre.getText().toString()); parametros.setUsuario(txtUsuario.getText().toString()); parametros.setContrasenia(txtContrasenia.getText().toString()); //showDialog(alertExito); Intent i = new Intent(getApplicationContext(),GaleriaTarjeta.class); startActivity(i); } else { showDialog(alertError); } } } }

Page 40: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

40

CLASE TARJETA.JAVA

package com.android.tesis; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.widget.EditText; import com.android.library.Http; import com.android.library.Parametros; public class Tarjeta extends Activity { private String numTarjeta=""; private ProgressDialog progressDialog; private Parametros parametros; private Http http; private EditText txtTarjeta, txtNombre, txtFechaTope, txtSaldoInicial, txtMinimoPagar, txtCupoAsignado, txtCupoUtilizado, txtCupoDisponible; private static final int alertExito = 1, alertProgress = 2, alertError = 3, alertInternet = 4; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); parametros = new Parametros(getApplicationContext()); http = new Http(); setContentView(R.layout.tarjeta); txtTarjeta = (EditText)findViewById(R.id.txtTarjeta); txtNombre = (EditText)findViewById(R.id.txtNombre); txtFechaTope = (EditText)findViewById(R.id.txtFechaTope); txtSaldoInicial = (EditText)findViewById(R.id.txtSaldoInicial); txtMinimoPagar = (EditText)findViewById(R.id.txtMinimoPagar); txtCupoAsignado = (EditText)findViewById(R.id.txtCupoAsignado); txtCupoUtilizado = (EditText)findViewById(R.id.txtCupoUtilizado); txtCupoDisponible = (EditText)findViewById(R.id.txtCupoDisponible); Intent i = getIntent(); if(i.hasExtra("numero_tarjeta")){

Page 41: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

41

numTarjeta = i.getStringExtra("numero_tarjeta"); new ConsultarTarjeta().execute(); } } class ConsultarTarjeta extends AsyncTask<Void, String, String> { protected String doInBackground(Void... params) { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("accion", "CT")); nameValuePairs.add(new BasicNameValuePair("numero_tarjeta", numTarjeta)); if (http.validarConexion(getApplicationContext())) { return http.accederWebService(parametros.getUrlServidor() + "/modulos/peticiones.php" , nameValuePairs, 2); } else { return "NOINTERNET"; } } protected void onPostExecute(String result) { System.out.println("Rpta: " + result); //progressDialog.dismiss();// ocultamos progess dialog. if (result.equals("NOINTERNET")) { showDialog(alertInternet); } else if (!result.equals("[]")) { try { JSONObject jsonRoot = new JSONObject(result); JSONArray jsonArray = jsonRoot.getJSONArray("data"); if (jsonArray.length() > 0) { JSONObject jsonObj = jsonArray .getJSONObject(0); txtTarjeta.setText(jsonObj.getString("numero_tarjeta")); txtNombre.setText(jsonObj.getString("nombre")); txtFechaTope.setText(jsonObj.getString("fecha_tope_pago")); //txtSaldoInicial.setText(jsonObj.getString("")) txtMinimoPagar.setText(jsonObj.getString("minimo_pagar")); txtCupoAsignado.setText(jsonObj.getString("cupo_asignado")); //txtCupoUtilizado.setText(jsonObj.getString("cupo_utilizado")); txtCupoDisponible.setText(jsonObj.getString("cupo_disponible")); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } @Override protected Dialog onCreateDialog(int id) { String title = "", msg = ""; switch (id) {

Page 42: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

42

case alertExito: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_exito).toString(); break; case alertError: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_error).toString(); break; case alertInternet: title = getText(R.string.lbl_informacion).toString(); msg = getText(R.string.lbl_internet).toString(); break; case alertProgress: progressDialog = new ProgressDialog(Tarjeta.this); progressDialog.setTitle(getText(R.string.app_name).toString()); progressDialog .setMessage(getText(R.string.lbl_cargando).toString()); return progressDialog; } return new AlertDialog.Builder(Tarjeta.this) .setTitle(title) .setMessage(msg) .setPositiveButton(getText(R.string.lbl_aceptar).toString(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).create(); } }

ARCHIVOS XML

ANDROID MANIFEST.XML

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.tesis" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Page 43: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

43

<uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android.hardware.nfc" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".Main" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Login"></activity> <activity android:name=".Contrasenia"></activity> <activity android:name=".Registro"></activity> <activity android:name=".GaleriaTarjeta"> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="application/com.android.tesis" /> </intent-filter> </activity> <activity android:name=".Actividad_acerca"></activity> <activity android:name="Ingresar"></activity> <activity android:name="Editar"></activity> <activity android:name="Tarjeta"></activity> <activity android:name=".Lectura"></activity> <activity android:name=".HiScreen"> </activity> </application> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.VIBRATE"/> </manifest>

ACERCA.XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/fondo2" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="153dp" android:text="Sistema de creacion de Tarjeta de Credito" android:textAppearance="?android:attr/textAppearanceLarge" /> </RelativeLayout>

Page 44: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

44

CONTRASENIA.XML

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" style="@style/scrolls" > <TableLayout android:id="@+id/tlyLogin" style="@style/tables" > <TableRow> <TextView style="@style/texts" android:layout_span="2" android:text="@string/lbl_mensaje_contrasenia" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_usuario" /> <EditText android:id="@+id/txtUsuario" style="@style/edits" android:inputType="text" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center" > <Button style="@style/buttons" android:onClick="enviar" android:text="@string/lbl_enviar_email" > </Button> </LinearLayout> </TableRow> </TableLayout> </ScrollView>

EDITAR.XML

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" style="@style/scrolls" > <TableLayout android:id="@+id/tlyIngresar" style="@style/tables" >

Page 45: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

45

<TableRow> <TextView style="@style/texts" android:text="@string/lbl_tarjeta" /> <EditText android:id="@+id/txtTarjeta" style="@style/edits" android:inputType="text" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_tipo" /> <Spinner android:id="@+id/spnTarjetas" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:entries="@array/spn_tarjeta"/> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_codigo" /> <EditText android:id="@+id/txtCodigo" style="@style/edits" android:inputType="text" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center_vertical" > <TextView style="@style/texts" android:text="@string/lbl_fecha" /> <DatePicker android:id="@+id/dpFecha" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center" > <Button style="@style/buttons"

Page 46: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

46

android:onClick="Buscar" android:text="@string/lbl_buscar" > </Button> <Button style="@style/buttons" android:onClick="guardar" android:text="@string/lbl_editar" > </Button> </LinearLayout> </TableRow> </TableLayout> </ScrollView>

GALERIA.XML

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" style="@style/scrolls" > <TableLayout android:id="@+id/tlyLogin" style="@style/tables" > <TableRow> <TextView style="@style/texts" android:layout_span="2" android:text="@string/lbl_mensaje_contrasenia" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_usuario" /> <EditText android:id="@+id/txtUsuario" style="@style/edits" android:inputType="text" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center" > <Button style="@style/buttons" android:onClick="enviar" android:text="@string/lbl_enviar_email" > </Button> </LinearLayout> </TableRow> </TableLayout> </ScrollView>

Page 47: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

47

INGRESAR.XML

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" style="@style/scrolls" > <TableLayout android:id="@+id/tlyIngresar" style="@style/tables" > <TableRow> <TextView style="@style/texts" android:text="@string/lbl_tarjeta" /> <EditText android:id="@+id/txtTarjeta" style="@style/edits" android:inputType="text" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_tipo" /> <Spinner android:id="@+id/spnTarjetas" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:entries="@array/spn_tarjeta"/> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_codigo" /> <EditText android:id="@+id/txtCodigo" style="@style/edits" android:inputType="text" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center_vertical" > <TextView style="@style/texts" android:text="@string/lbl_fecha" />

Page 48: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

48

<DatePicker android:id="@+id/dpFecha" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center" > <Button style="@style/buttons" android:onClick="guardar" android:text="@string/lbl_ingresar" > </Button> </LinearLayout> </TableRow> </TableLayout> </ScrollView>

LOGIN.XML

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" style="@style/scrolls" > <TableLayout android:id="@+id/tlyLogin" style="@style/tables" > <TableRow> <TextView style="@style/texts" android:text="@string/lbl_usuario" /> <EditText android:id="@+id/txtUsuario" style="@style/edits" android:inputType="text" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_password" /> <EditText android:id="@+id/txtContrasenia" style="@style/edits" android:inputType="text" android:password="true" /> </TableRow> <TableRow>

Page 49: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

49

<LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center" > <Button style="@style/buttons" android:onClick="guardar" android:text="@string/lbl_login" > </Button> </LinearLayout> </TableRow> <TableRow> <LinearLayout android:layout_width="fill_parent" style="@style/llayout"> <Button style="@style/buttons" android:background="@null" android:layout_weight="1" android:onClick="registrar" android:text="@string/lbl_registrar" > </Button> <Button style="@style/buttons" android:background="@null" android:layout_weight="1" android:onClick="recordarContrasenia" android:text="@string/lbl_recordar_contrasenia" > </Button> </LinearLayout> </TableRow> </TableLayout> </ScrollView>

REGISTER.XML

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" style="@style/scrolls" > <TableLayout android:id="@+id/tlyLogin" style="@style/tables" > <TableRow> <TextView style="@style/texts" android:text="@string/lbl_nombre" />

Page 50: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

50

<EditText android:id="@+id/txtNombre" style="@style/edits" android:inputType="text" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_cedula" /> <EditText android:id="@+id/txtCedula" style="@style/edits" android:inputType="number" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_email" /> <EditText android:id="@+id/txtEmail" style="@style/edits" android:inputType="textEmailAddress" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_usuario" /> <EditText android:id="@+id/txtUsuario" style="@style/edits" android:inputType="text" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_password" /> <EditText android:id="@+id/txtContrasenia" style="@style/edits" android:inputType="text" android:password="true" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center" > <Button style="@style/buttons" android:onClick="guardar" android:text="@string/lbl_login" > </Button> </LinearLayout>

Page 51: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

51

</TableRow> </TableLayout> </ScrollView>

TARJETA.XML

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" style="@style/scrolls" > <TableLayout android:id="@+id/tlyIngresar" style="@style/tables" > <TableRow> <TextView style="@style/texts" android:text="@string/lbl_tarjeta" /> <EditText android:id="@+id/txtTarjeta" style="@style/edits" android:enabled="false" android:inputType="text" /> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_nombre" /> <EditText android:id="@+id/txtNombre" style="@style/edits" android:enabled="false" android:inputType="text" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center_vertical" > </LinearLayout> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_fecha_tope" /> <EditText android:id="@+id/txtFechaTope" style="@style/edits" android:enabled="false" android:inputType="text" /> </TableRow> <TableRow>

Page 52: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

52

<LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center_vertical" > </LinearLayout> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_saldo_inicial" /> <EditText android:id="@+id/txtSaldoInicial" style="@style/edits" android:enabled="false" android:inputType="text" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center_vertical" > </LinearLayout> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_minimo_pagar" /> <EditText android:id="@+id/txtMinimoPagar" style="@style/edits" android:enabled="false" android:inputType="text" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center_vertical" > </LinearLayout> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_cupo_asignado" /> <EditText android:id="@+id/txtCupoAsignado" style="@style/edits" android:enabled="false" android:inputType="text" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout"

Page 53: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

53

android:layout_span="2" android:gravity="center_vertical" > </LinearLayout> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_cupo_utilizado" /> <EditText android:id="@+id/txtCupoUtilizado" style="@style/edits" android:enabled="false" android:inputType="text" /> </TableRow> <TableRow> <LinearLayout style="@style/llayout" android:layout_span="2" android:gravity="center_vertical" > </LinearLayout> </TableRow> <TableRow> <TextView style="@style/texts" android:text="@string/lbl_cupo_disponible" /> <EditText android:id="@+id/txtCupoDisponible" style="@style/edits" android:enabled="false" android:inputType="text" /> </TableRow> </TableLayout> </ScrollView>

CODIGO PHP

CONFIGURACIONE.PHP

<?php

extract($_REQUEST);

$hostname = "localhost";

$databasename = "pagosnfc";

$username = "root";

$password = "";

?>

Page 54: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

54

LISTADO_TARJETA.PHP

<?php

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

require_once('../clases/tarjeta.class.php');

$json_tarjetas = tarjeta::obtener_listado_json();

//echo $json_entidades;

?>

<link href="../css/estilos.css" rel="stylesheet" type="text/css" />

<link href="../css/tableorderer_1.css" rel="stylesheet" type="text/css">

<link href="../css/menu.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src="../lib/prototype.js"></script>

<script type="text/javascript" src="../lib/tableorderer/js/table_orderer.js"></script>

<!--<script type="text/javascript" src="../lib/tableorderer/js/table_orderer-min.js"></script> -->

<body>

<center>

<ul class="pureCssMenu pureCssMenum">

<li class="pureCssMenui"><a class="pureCssMenui"

href="listadoUsuarios.php">Usuarios</a></li>

<li class="pureCssMenui"><a class="pureCssMenui"

href="listadoTarjetas.php">Tarjetas</a></li>

<li class="pureCssMenui"><a class="pureCssMenui"

href="listadoTarjetasEntidades.php">Entidades</a></li>

</ul>

</center>

<br /><br /><br /><br />

<table width="550" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td>

<table width="100%" border="0" cellpadding="0" cellspacing="0">

<tr>

Page 55: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

55

<th><img src="../images_tm/header_left.jpg" alt="" /></th>

<td class="header"><strong><center>Listado de Tarjetas</center></strong></td>

<th class="header">&nbsp;</th>

<th><img src="../images_tm/header_right.jpg" alt="" /></th>

</tr>

</table>

</td>

</tr>

<tr>

<td><div id="container"></div></td>

</tr>

</table>

<script type="text/javascript" language="JavaScript">

new TableOrderer('container',{data : eval(<?php echo $json_tarjetas ?>),search : 'top',paginate :

'bottom', pageCount:20,unsortedColumn : ['OPC']});

</script>

</body>

</html>

PETICIONES.PHP

<?php

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

extract($_REQUEST);

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

* LU -> Loguear Usuario

*/

if ($accion == "LU") {

require_once('../clases/usuario.class.php');

Page 56: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

56

$objUsuario = new Usuario($id, $nombre, $cedula, trim($usuario), $contrasenia, $estado,

$fecha_creacion, $email);

if ($objUsuario->consultarUsuario() == "1") {

echo "ok";

} else {

echo "Error - Usuario/Contraseña invalidos";

}

}

/**

* LU -> Registrar Usuario

*/

if ($accion == "RU") {

require_once('../clases/usuario.class.php');

$objUsuario = new Usuario($id, $nombre, $cedula, trim($usuario), $contrasenia, $estado,

$fecha_creacion, $email);

if ($objUsuario->ingresarUsuario() == "1") {

echo "ok";

} else {

echo "error";

}

}

/**

* LU -> Recordar Contraseña

*/

if ($accion == "RC") {

require_once('../clases/usuario.class.php');

require_once('../libs/funciones.php');

require_once('../libs/PHPMailer/class.phpmailer.php');

define('GUSER', '[email protected]'); // Gmail username

define('GPWD', 'rr4mirez123'); // Gmail password

$objUsuario = new Usuario($id, $nombre, $cedula, trim($usuario), $contrasenia, $estado,

$fecha_creacion, $email);

$objUsuario->obtenerUsuario();

if ($objUsuario->get_email() != "" && $objUsuario->get_estado() == "1") {

Page 57: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

57

//$msg = 'Para recuperar de clic <a

href="http://www.ideasinteligentes.com.ec/PagosNFC/modulos/recuperarContrasenia.php?usuario=' .

$usuario . '">Aqui</a>';

$msg = 'Para recuperar su contraseña visiste la siguiente dirección:

http://ideasinteligentes.com.ec/PagosNFC/modulos/recuperarContrasenia.php?usuario=' . $usuario;

smtpmailer($objUsuario->get_email(), '[email protected]',

'Administracion', 'Recuperar contraseña ', $msg);

echo "ok";

} else {

echo "error";

}

}

/**

* IT -> Ingresar Tarjeta

*/

if ($accion == "IT") {

require_once('../clases/usuario.class.php');

require_once('../clases/tarjeta.class.php');

$objUsuario = new Usuario("", "", "", $usuario, "", "", "", "");

if ($objUsuario->consultarPorUsuario()) {

$objTarjeta = new Tarjeta($id, $tarjeta, $codigo, $tipo, $imagen, date("Y-m-d h:i:s"),

$objUsuario->get_id());

if ($objTarjeta->ingresarTarjeta() == "1") {

echo "ok";

} else {

echo "error";

}

} else {

echo "error: usuario no registrado en el sistema";

}

}

/*

* Consultar Tarjeta

*/

if ($accion == "CT") {

Page 58: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

58

require_once('../clases/entidad.class.php');

$objEntidad = new Entidad();

$objEntidad->set_numero_tarjeta($numero_tarjeta);

$data['data'] = $objEntidad->obtener_entidad();

echo json_encode($data);

}

/*

* Actualizar Tarjeta

*/

if ($accion == "AT") {

require_once('../clases/tarjeta.class.php');

$objTarjeta = new Tarjeta($id, $tarjeta, $codigo, $tipo, $imagen, $fecha_creacion, "");

if ($objTarjeta->actualizarTarjeta() == "1") {

echo "ok";

} else {

echo "No se realizó ningún cambio.";

}

}

if ($accion == "MC") {

require_once('../clases/usuario.class.php');

$objUsuario = new Usuario("", "", "", trim($usuario), $contrasenia, "", "", "");

if ($objUsuario->modificarContrasenia() == "1") {

header("Location:recuperarContraseniaExito.php");

} else {

echo "error";

}

};

if ($accion == "RT") {

require_once('../clases/entidad.class.php');

$objEntidad = new Entidad();

$objEntidad->set_numero_tarjeta($numero_tarjeta);

$data = $objEntidad->obtener_entidad2();

$arrFecha = explode("-", $data[fecha_vencimiento]);

if ($data != "") {

Page 59: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

59

if (date("Y-m-d", strtotime($data[fecha_vencimiento])) < date('Y-m-d')) {

echo "Su tarjeta esta vencida.";

} else {

if ($data['cupo_disponible'] < $monto) {

echo utf8_encode("No tiene cupo para realizar el proceso.");

} else {

try {

$cupo_disponible = $data['cupo_disponible'] - $monto;

$objEntidad->set_cupo_disponible($cupo_disponible);

$resp = $objEntidad->actualizar_cupo();

if ($resp == 1) {

require_once('../clases/usuario.class.php');

require_once('../libs/funciones.php');

require_once('../libs/PHPMailer/class.phpmailer.php');

define('GUSER', '[email protected]'); // Gmail username

define('GPWD', 'rr4mirez123'); // Gmail password

$objUsuario = new Usuario($id, $nombre, $cedula, trim($usuario), $contrasenia,

$estado, $fecha_creacion, $email);

$objUsuario->obtenerUsuario();

if ($objUsuario->get_email() != "" && $objUsuario->get_estado() == "1") {

//$msg = 'Para recuperar de clic <a

href="http://www.ideasinteligentes.com.ec/PagosNFC/modulos/recuperarContrasenia.php?usuario=' .

$usuario . '">Aqui</a>';

$msg = "Le indicamos que acaba de realizar una transaccion por $ $monto , revisar

su estado de cuenta \n\nHora de Transaccion: ".date("Y-m-d h:i:s");

smtpmailer($objUsuario->get_email(), '[email protected]',

'Administracion', 'Transaccion PagosNFC', $msg);

//echo "ok";

} else {

//echo "error";

}

echo "Ok";

} else {

echo "Error en la operación";

}

Page 60: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

60

} catch (Exception $e) {

echo "Error en la operación";

}

}

}

}

}

?>

INDEX.PHP

<?php

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

header("Location: modulos/listadoTarjetas.php");

?>

LISTADOTARJETAENTIDADES.PHP

<?php

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

require_once('../clases/entidad.class.php');

$json_entidades = entidad::obtener_listado_json();

//echo $json_entidades;

?>

<link href="../css/estilos.css" rel="stylesheet" type="text/css" />

<link href="../css/tableorderer_1.css" rel="stylesheet" type="text/css">

Page 61: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

61

<link href="../css/menu.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src="../lib/prototype.js"></script>

<script type="text/javascript" src="../lib/tableorderer/js/table_orderer.js"></script>

<!--<script type="text/javascript" src="../lib/tableorderer/js/table_orderer-min.js"></script> -->

<body>

<center>

<ul class="pureCssMenu pureCssMenum">

<li class="pureCssMenui"><a class="pureCssMenui"

href="listadoUsuarios.php">Usuarios</a></li>

<li class="pureCssMenui"><a class="pureCssMenui"

href="listadoTarjetas.php">Tarjetas</a></li>

<li class="pureCssMenui"><a class="pureCssMenui"

href="listadoTarjetasEntidades.php">Entidades</a></li>

</ul>

</center>

<br /><br /><br /><br />

<table width="550" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td>

<table width="100%" border="0" cellpadding="0" cellspacing="0">

<tr>

<th><img src="../images_tm/header_left.jpg" alt="" /></th>

<td class="header"><strong><center>Listado de Tarjetas Entidad</center></strong></td>

<th class="header">&nbsp;</th>

<th><img src="../images_tm/header_right.jpg" alt="" /></th>

</tr>

</table>

</td>

</tr>

<tr>

<td><div id="container"></div></td>

</tr>

</table>

<script type="text/javascript" language="JavaScript">

Page 62: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

62

new TableOrderer('container',{data : eval(<?php echo $json_entidades ?>),search : 'top',paginate :

'bottom', pageCount:20,unsortedColumn : ['OPC']});

</script>

</body>

</html>

LISTADOUSUARIO.PHP

<?php

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

require_once('../clases/usuario.class.php');

$json_usuarios = usuario::obtener_listado_json();

//echo $json_entidades;

?>

<link href="../css/estilos.css" rel="stylesheet" type="text/css" />

<link href="../css/tableorderer_1.css" rel="stylesheet" type="text/css">

<link href="../css/menu.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src="../lib/prototype.js"></script>

<script type="text/javascript" src="../lib/tableorderer/js/table_orderer.js"></script>

<!--<script type="text/javascript" src="../lib/tableorderer/js/table_orderer-min.js"></script> -->

<body>

<center>

<ul class="pureCssMenu pureCssMenum">

<li class="pureCssMenui"><a class="pureCssMenui"

href="listadoUsuarios.php">Usuarios</a></li>

<li class="pureCssMenui"><a class="pureCssMenui"

href="listadoTarjetas.php">Tarjetas</a></li>

<li class="pureCssMenui"><a class="pureCssMenui"

href="listadoTarjetasEntidades.php">Entidades</a></li>

</ul>

Page 63: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

63

</center>

<br /><br /><br /><br />

<table width="550" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td>

<table width="100%" border="0" cellpadding="0" cellspacing="0">

<tr>

<th><img src="../images_tm/header_left.jpg" alt="" /></th>

<td class="header"><strong><center>Listado de Usuarios</center></strong></td>

<th class="header">&nbsp;</th>

<th><img src="../images_tm/header_right.jpg" alt="" /></th>

</tr>

</table>

</td>

</tr>

<tr>

<td><div id="container"></div></td>

</tr>

</table>

<script type="text/javascript" language="JavaScript">

new TableOrderer('container',{data : eval(<?php echo $json_usuarios ?>),search : 'top',paginate :

'bottom', pageCount:20,unsortedColumn : ['OPC']});

</script>

</body>

</html>

USUARIOSISTEMA.PHP

<?php

require_once('permisos.php');

?>

<html>

<link href="../css/estilos.css" rel="stylesheet" type="text/css" />

<link href="../css/menu.css" rel="stylesheet" type="text/css">

Page 64: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

64

<link href="../css/validationEngine.jquery.css" rel="stylesheet" type="text/css">

<link href="../css/redmond/jquery-ui-1.8.16.custom.css" rel="stylesheet" type="text/css" />

<link href="../js/jtable/themes/lightcolor/blue/jtable.css" rel="stylesheet" type="text/css" />

<script src="../js/jquery-1.6.4.min.js" type="text/javascript"></script>

<script src="../js/jquery-ui-1.8.16.custom.min.js" type="text/javascript"></script>

<script src="../js/jtable/jquery.jtable.js" type="text/javascript"></script>

<script type="text/javascript" src="../js/jquery.validationEngine.js"></script>

<script type="text/javascript" src="../js/jquery.validationEngine-es.js"></script>

</head>

<body>

<center>

<ul class="pureCssMenu pureCssMenum">

<li class="pureCssMenui"><a class="pureCssMenui" href="usuarios_sistema.php">Usuarios

Sistema</a></li>

<li class="pureCssMenui"><a class="pureCssMenui" href="usuarios.php">Usuarios</a></li>

<li class="pureCssMenui"><a class="pureCssMenui" href="tarjetas.php">Tarjetas</a></li>

<li class="pureCssMenui"><a class="pureCssMenui" href="entidades.php"

align="center">Entidades</a></li>

<li class="pureCssMenui"><a class="pureCssMenui"

href="recuperarContrasenia.php?usuario=<?php echo $_SESSION['usuarioLogin']; ?>&sistema=s"

align="center">Cambiar contrase&ntilde;a</a></li>

<li class="pureCssMenui"><a class="pureCssMenui" href="../control.php?accion=2"

align="center">Salir</a></li>

</ul>

</center>

<br /><br /><br /><br />

<div id="ContenedorUsuarios" style="width: 1000px;"></div>

<script type="text/javascript">

$(document).ready(function () {

//Prepare jTable

$('#ContenedorUsuarios').jtable({

title: 'Listado de Usuarios del Sistema',

paging: true,

pageSize: 20,

sorting: true,

Page 65: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

65

defaultSorting: 'nombre ASC',

actions: {

listAction: 'peticionesUsuariosSistema.php?action=list',

createAction: 'peticionesUsuariosSistema.php?action=create'

// updateAction: 'peticionesUsuariosSistema.php?action=update'

},

fields: {

id: {

key: true,

create: false,

edit: false,

list: false

},

nombre: {

title: 'Nombre',

width: '25%'

},

usuario: {

title: 'usuario',

width: '20%'

},

contrasenia: {

title: 'Contrase\xf1a',

visibility: 'hidden' ,

edit: false

},

fecha_creacion: {

title: 'Fecha de Creaci\xf3n',

width: '20%',

type: 'date',

create: false,

edit: false

}

}

});

Page 66: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

66

//Load person list from server

$('#ContenedorUsuarios').jtable('load');

});

</script>

</body>

</html>

USUARIO.PHP

<?php

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

class usuario {

private $_id = "";

private $_nombre = '';

private $_cedula = '';

private $_usuario = '';

private $_contrasenia = '';

private $_estado = '';

private $_fecha_creacion = '';

private $_email = '';

public function __construct($id, $nombre, $cedula, $usuario, $contrasenia, $estado,

$fecha_creacion, $email) {

global $hostname, $databasename, $username, $password;

$this->_id = $id;

$this->_nombre = $nombre;

$this->_cedula = $cedula;

$this->_usuario = $usuario;

$this->_contrasenia = $contrasenia;

$this->_estado = $estado;

$this->_fecha_creacion = $fecha_creacion;

$this->_email = $email;

Page 67: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

67

$this->conexion = new Conexion($hostname, $databasename, $username, $password);

}

public function obtener_listado_json() {

global $hostname, $databasename, $username, $password, $lblDescripcion;

$conexion = new Conexion($hostname, $databasename, $username, $password);

$conexion->conectar();

$sql = "SELECT *

FROM $databasename.usuarios";

$res = $conexion->ejecutarSQL($sql, __CLASS__, __METHOD__, __LINE__);

$array_proc = array();

$idx = 0;

while ($data = mysql_fetch_array($res)) {

$array_proc[$idx]['Codigo'] = $data['id'];

$array_proc[$idx]['Nombre'] = $data['nombre'];

$array_proc[$idx]['Cedula'] = $data['cedula'];

$array_proc[$idx]['Email'] = $data['email'];

$array_proc[$idx]['Usuario'] = $data['usuario'];

$array_proc[$idx]['Fecha Creaci&oacute;n'] = $data['fecha_creacion'];

$idx++;

}

return json_encode($conexion->retornaUtf8($array_proc));

}

public function obtener_listado($jtSorting,$jtStartIndex,$jtPageSize) {

global $hostname, $databasename, $username, $password, $lblDescripcion;

$conexion = new Conexion($hostname, $databasename, $username, $password);

$conexion->conectar();

$sql = "SELECT *

FROM $databasename.usuarios ORDER BY ". $jtSorting . " LIMIT " . $jtStartIndex.

"," . $jtPageSize;

//echo $sql;

$result = $conexion->ejecutarSQL($sql, __CLASS__, __METHOD__, __LINE__);

$rows = array();

while ($row = mysql_fetch_array($result)) {

Page 68: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

68

$rows[] = $row;

}

return $rows;

}

public function ingresarUsuario() {

global $databasename;

$this->conexion->conectar();

$sql = "INSERT INTO $databasename.usuarios

(nombre,cedula,usuario,contrasenia,estado,fecha_creacion,email)

VALUES ('$this->_nombre','$this->_cedula', '$this->_usuario','$this-

>_contrasenia','1',date(now()),'$this->_email')";

$this->conexion->ejecutarSQL($sql, __CLASS__, __METHOD__, __LINE__);

if ($this->conexion->registrosAfectados() > 0) {

return "1";

} else {

return "0";

}

}

public function consultarUsuario() {

global $databasename;

$this->conexion->conectar();

$sql = "SELECT * FROM $databasename.usuarios WHERE usuario='$this->_usuario'

AND contrasenia = MD5('$this->_contrasenia') AND estado = '1'";

//echo $sql; EXIT;

$this->conexion->ejecutarSQL($sql, __CLASS__, __METHOD__, __LINE__);

if ($this->conexion->registrosAfectados() > 0) {

$data = $this->conexion->extraerDatos();

$this->_id = $data['id'];

$this->_nombre = $data['nombre'];

$this->_cedula = $data['cedula'];

$this->_email = $data['email'];

$this->_usuario = $data['usuario'];

$this->_contrasenia = $data['contrasenia'];

Page 69: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

69

$this->_fecha_creacion = $data['fecha_creacion'];

$this->_estado = $data['estado'];

return "1";

} else {

return "0";

}

}

public function modificarContrasenia(){

global $databasename;

$this->conexion->conectar();

$sql = "UPDATE $databasename.usuarios

SET contrasenia = md5('$this->_contrasenia')

WHERE usuario = '$this->_usuario'";

//echo $sql;

$this->conexion->ejecutarSQL($sql, __CLASS__, __METHOD__, __LINE__);

if ($this->conexion->registrosAfectados() > 0) {

return "1";

} else {

return "0";

}

}

public function consultarPorUsuario() {

global $databasename;

$this->conexion->conectar();

$sql = "SELECT * FROM $databasename.usuarios WHERE usuario='$this->_usuario'

AND estado = '1'";

//echo $sql;

$this->conexion->ejecutarSQL($sql, __CLASS__, __METHOD__, __LINE__);

if ($this->conexion->registrosAfectados() > 0) {

$data = $this->conexion->extraerDatos();

$this->_id = $data['id'];

$this->_nombre = $data['nombre'];

$this->_cedula = $data['cedula'];

Page 70: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

70

$this->_email = $data['email'];

$this->_usuario = $data['usuario'];

$this->_contrasenia = $data['contrasenia'];

$this->_fecha_creacion = $data['fecha_creacion'];

$this->_estado = $data['estado'];

return "1";

} else {

return "0";

}

}

public function obtenerUsuario() {

global $databasename;

$this->conexion->conectar();

$sql = "SELECT * FROM $databasename.usuarios WHERE usuario='$this->_usuario'";

$this->conexion->ejecutarSQL($sql, __CLASS__, __METHOD__, __LINE__);

if ($this->conexion->registrosObtenidos() > 0) {

$data = $this->conexion->extraerDatos();

$this->_id = $data['id'];

$this->_nombre = $data['nombre'];

$this->_cedula = $data['cedula'];

$this->_email = $data['email'];

$this->_usuario = $data['usuario'];

$this->_contrasenia = $data['contrasenia'];

$this->_fecha_creacion = $data['fecha_creacion'];

$this->_estado = $data['estado'];

return true;

} else {

return false;

}

}

public function get_id() {

return $this->_id;

}

Page 71: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

71

public function set_id($_id) {

$this->_id = $_id;

}

public function get_nombre() {

return $this->_nombre;

}

public function set_nombre($_nombre) {

$this->_nombre = $_nombre;

}

public function get_cedula() {

return $this->_cedula;

}

public function set_cedula($_cedula) {

$this->_cedula = $_cedula;

}

public function get_usuario() {

return $this->_usuario;

}

public function set_usuario($_usuario) {

$this->_usuario = $_usuario;

}

public function get_contrasenia() {

return $this->_contrasenia;

}

public function set_contrasenia($_contrasenia) {

$this->_contrasenia = $_contrasenia;

Page 72: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

72

}

public function get_estado() {

return $this->_estado;

}

public function set_estado($_estado) {

$this->_estado = $_estado;

}

public function get_fecha_creacion() {

return $this->_fecha_creacion;

}

public function set_fecha_creacion($_fecha_creacion) {

$this->_fecha_creacion = $_fecha_creacion;

}

public function get_email() {

return $this->_email;

}

public function set_email($_email) {

$this->_email = $_email;

}

}

?>

FUNCIONES.PHP

<?php

function smtpmailer($to, $from, $from_name, $subject, $body) {

global $error;

$mail = new PHPMailer(); // create a new object

$mail->IsSMTP(); // enable SMTP

Page 73: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

73

$mail->SMTPDebug = 0; // debugging: 1 = errors and messages, 2 = messages only

$mail->SMTPAuth = true; // authentication enabled

$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail

$mail->Host = 'mail.ideasinteligentes.com.ec';

$mail->Port = 465;

$mail->Username = GUSER;

$mail->Password = GPWD;

$mail->SetFrom($from, $from_name);

$mail->Subject = $subject;

$mail->Body = $body;

$mail->AddAddress($to);

if(!$mail->Send()) {

$error = 'Mail error: '.$mail->ErrorInfo;

return false;

} else {

$error = 'Message sent!';

return true;

}

}

?>

CONTROL.PHP

<?php

require_once('modulos/configuraciones.php');

require_once('clases/conexion.class.php');

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

session_start();

if ($accion == "1") {

require_once('clases/usuario_sistema.class.php');

Page 74: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

74

$nombre = "";

$objUsuario = new Usuario_sistema($id, $nombre, trim($usuario), $contrasenia);

if ($objUsuario->consultarUsuario() == "1") {

session_register('usuarioLogin');

$_SESSION['usuarioLogin']=trim($usuario);

header("Location:modulos/home.php");

} else {

header("Location:index.html");

}

}

if ($accion == "2") {

session_destroy();

header("Location:index.html");

exit;

}

?>

PERMISO.PHP

<?php

session_start();

if (isset($_SESSION['usuarioLogin'])) {

$usuarioLogin = $_SESSION['usuarioLogin'];

} else {

header("location: ../index.html");

exit();

}

?>

PETICIONES.PHP

<?php

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

Page 75: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

75

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

* LU -> Loguear Usuario

*/

if ($accion == "LU") {

require_once('../clases/usuario.class.php');

$objUsuario = new Usuario($id, $nombre, $cedula, trim($usuario), $contrasenia, $estado,

$fecha_creacion, $email);

if ($objUsuario->consultarUsuario() == "1") {

echo "ok";

} else {

echo "Error - Usuario/Contrase�a invalidos";

}

}

/**

* LU -> Registrar Usuario

*/

if ($accion == "RU") {

require_once('../clases/usuario.class.php');

$objUsuario = new Usuario($id, $nombre, $cedula, trim($usuario), $contrasenia, $estado,

$fecha_creacion, $email);

if ($objUsuario->ingresarUsuario() == "1") {

echo "ok";

} else {

echo "error";

}

}

/**

* LU -> Recordar Contraseña

*/

if ($accion == "RC") {

require_once('../clases/usuario.class.php');

require_once('../libs/funciones.php');

Page 76: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

76

require_once('../libs/PHPMailer/class.phpmailer.php');

define('GUSER', '[email protected]'); // Gmail username

define('GPWD', 'rr4mirez123'); // Gmail password

$objUsuario = new Usuario($id, $nombre, $cedula, trim($usuario), $contrasenia, $estado,

$fecha_creacion, $email);

$objUsuario->obtenerUsuario();

if ($objUsuario->get_email() != "" && $objUsuario->get_estado() == "1") {

//$msg = 'Para recuperar de clic <a

href="http://www.ideasinteligentes.com.ec/PagosNFC/modulos/recuperarContrasenia.php?usuario=' .

$usuario . '">Aqui</a>';

$msg = 'Para recuperar su contraseña visiste la siguiente dirección:

http://ideasinteligentes.com.ec/PagosNFC/modulos/recuperarContrasenia.php?usuario=' . $usuario;

smtpmailer($objUsuario->get_email(), '[email protected]',

'Administracion', 'Recuperar contraseña ', $msg);

echo "ok";

} else {

echo "error";

}

}

/**

* IT -> Ingresar Tarjeta

*/

if ($accion == "IT") {

require_once('../clases/usuario.class.php');

require_once('../clases/tarjeta.class.php');

$objUsuario = new Usuario("", "", "", $usuario, "", "", "", "");

if ($objUsuario->consultarPorUsuario()) {

$objTarjeta = new Tarjeta($id, $tarjeta, $codigo, $tipo, $imagen, date("Y-m-d h:i:s"),

$objUsuario->get_id());

if ($objTarjeta->ingresarTarjeta() == "1") {

echo "ok";

} else {

echo "error";

}

} else {

Page 77: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

77

echo "error: usuario no registrado en el sistema";

}

}

/*

* Consultar Tarjeta

*/

if ($accion == "CT") {

require_once('../clases/entidad.class.php');

$objEntidad = new Entidad();

$objEntidad->set_numero_tarjeta($numero_tarjeta);

echo $objEntidad->obtener_entidad();

}

/*

* Actualizar Tarjeta

*/

if ($accion == "AT") {

require_once('../clases/tarjeta.class.php');

$objTarjeta = new Tarjeta($id, $tarjeta, $codigo, $tipo, $imagen, $fecha_creacion, "");

if ($objTarjeta->actualizarTarjeta() == "1") {

echo "ok";

} else {

echo "No se realizó ningún cambio.";

}

}

if ($accion == "MC") {

require_once('../clases/usuario.class.php');

$objUsuario = new Usuario("", "", "", trim($usuario), $contrasenia, "", "", "");

if ($objUsuario->modificarContrasenia() == "1") {

echo "ok";

} else {

echo "error";

}

}

?>

Page 78: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

78

PETICIONES ENTIDADES

<?php

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

require_once('../clases/entidad.class.php');

$objEntidad = new entidad($id, $numero_tarjeta, $fecha_vencimiento, $fecha_tope_pago,

$codigo_verificacion, $cedula, $nombre,

$fecha_creacion,$cupo_asignado,$cupo_disponible,$minimo_pagar );

try

{

//Getting records (listAction)

if($action == "list")

{

$listado = $objEntidad->obtener_listado($jtSorting ,$jtStartIndex, $jtPageSize);

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

$jTableResult['Records'] = $listado;

$jTableResult['TotalRecordCount'] = count($listado);

print json_encode($jTableResult);

}

//Creating a new record (createAction)

else if($_GET["action"] == "create")

{

$objEntidad->ingresar_entidad();

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

$jTableResult['Record'] = $objEntidad->obtener_entidad2();

print json_encode($jTableResult);

}

Page 79: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

79

//Updating a record (updateAction)

else if($_GET["action"] == "update")

{

$objEntidad->actualizar_entidad();

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

print json_encode($jTableResult);

}

/*

//Deleting a record (deleteAction)

else if($_GET["action"] == "delete")

{

//Delete from database

$result = mysql_query("DELETE FROM people WHERE PersonId = " .

$_POST["PersonId"] . ";");

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

print json_encode($jTableResult);

}

//Close database connection

mysql_close($con);*/

}

catch(Exception $ex)

{

//Return error message

$jTableResult = array();

$jTableResult['Result'] = "ERROR";

$jTableResult['Message'] = $ex->getMessage();

print json_encode($jTableResult);

}

Page 80: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

80

?>

PETICIONES TARJETAS.PHP

<?php

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

require_once('../clases/tarjeta.class.php');

$objTarjeta = new Tarjeta($id, $tarjeta, $codigo, $tipo, $imagen, $fecha_creacion,$id_usuario);

try

{

//Getting records (listAction)

if($action == "list")

{

$listado = $objTarjeta->obtener_listado($jtSorting ,$jtStartIndex, $jtPageSize);

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

$jTableResult['Records'] = $listado;

$jTableResult['TotalRecordCount'] = count($listado);

print json_encode($jTableResult);

}

/*

//Creating a new record (createAction)

else if($_GET["action"] == "create")

{

//Insert record into database

$result = mysql_query("INSERT INTO people(Name, Age, RecordDate)

VALUES('" . $_POST["Name"] . "', " . $_POST["Age"] . ",now());");

//Get last inserted record (to return to jTable)

$result = mysql_query("SELECT * FROM people WHERE PersonId =

LAST_INSERT_ID();");

$row = mysql_fetch_array($result);

//Return result to jTable

Page 81: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

81

$jTableResult = array();

$jTableResult['Result'] = "OK";

$jTableResult['Record'] = $row;

print json_encode($jTableResult);

}

//Updating a record (updateAction)

else if($_GET["action"] == "update")

{

//Update record in database

$result = mysql_query("UPDATE people SET Name = '" . $_POST["Name"] . "',

Age = " . $_POST["Age"] . " WHERE PersonId = " . $_POST["PersonId"] . ";");

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

print json_encode($jTableResult);

}

//Deleting a record (deleteAction)

else if($_GET["action"] == "delete")

{

//Delete from database

$result = mysql_query("DELETE FROM people WHERE PersonId = " .

$_POST["PersonId"] . ";");

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

print json_encode($jTableResult);

}

//Close database connection

mysql_close($con);*/

}

catch(Exception $ex)

{

//Return error message

$jTableResult = array();

$jTableResult['Result'] = "ERROR";

Page 82: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

82

$jTableResult['Message'] = $ex->getMessage();

print json_encode($jTableResult);

}

?>

PETICIONES USUARIOS.PHP

<?php

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

require_once('../clases/usuario.class.php');

$objUsuario = new usuario($id, $nombre, $cedula, $usuario, $contrasenia, $estado, $fecha_creacion,

$email);

try

{

//Getting records (listAction)

if($action == "list")

{

$listado = $objUsuario->obtener_listado($jtSorting ,$jtStartIndex, $jtPageSize);

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

$jTableResult['Records'] = $listado;

$jTableResult['TotalRecordCount'] = count($listado);

print json_encode($jTableResult);

}

/*

//Creating a new record (createAction)

else if($_GET["action"] == "create")

{

//Insert record into database

$result = mysql_query("INSERT INTO people(Name, Age, RecordDate)

VALUES('" . $_POST["Name"] . "', " . $_POST["Age"] . ",now());");

//Get last inserted record (to return to jTable)

$result = mysql_query("SELECT * FROM people WHERE PersonId =

LAST_INSERT_ID();");

Page 83: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

83

$row = mysql_fetch_array($result);

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

$jTableResult['Record'] = $row;

print json_encode($jTableResult);

}

//Updating a record (updateAction)

else if($_GET["action"] == "update")

{

//Update record in database

$result = mysql_query("UPDATE people SET Name = '" . $_POST["Name"] . "',

Age = " . $_POST["Age"] . " WHERE PersonId = " . $_POST["PersonId"] . ";");

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

print json_encode($jTableResult);

}

//Deleting a record (deleteAction)

else if($_GET["action"] == "delete")

{

//Delete from database

$result = mysql_query("DELETE FROM people WHERE PersonId = " .

$_POST["PersonId"] . ";");

//Return result to jTable

$jTableResult = array();

$jTableResult['Result'] = "OK";

print json_encode($jTableResult);

}

//Close database connection

mysql_close($con);*/

}

catch(Exception $ex)

{

Page 84: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

84

//Return error message

$jTableResult = array();

$jTableResult['Result'] = "ERROR";

$jTableResult['Message'] = $ex->getMessage();

print json_encode($jTableResult);

}

?>

RECUPERAR CONTRASENIA.PHP

<?php

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

require_once('../clases/usuario.class.php');

$objUsuario = new Usuario("", "", "", trim($usuario), "", "", "", "");

$objUsuario->consultarPorUsuario();

?>

<html lang="en">

<head>

<title>Pagos NFC</title>

<link rel="stylesheet" type="text/css" href="../css/login.css" />

<script src="../js/modernizr.custom.63321.js"></script>

<!--[if lte IE 7]><style>.main{display:none;} .support-note .note-

ie{display:block;}</style><![endif]-->

<script type="text/javascript">

function validarEnvio(){

if(document.getElementById("contrasenia").value!=document.getElementById("password").value){

alert("Las contraseñas no coinciden");

}else{

document.forms[0].action = "peticiones.php";

document.forms[0].submit();

}

}

</script>

</head>

<body>

<div class="container">

Page 85: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

85

<section class="main">

<form class="form-1">

<p class="field">

<input type="text" value="<?php echo $objUsuario->get_usuario(); ?>"

placeholder="Usuario" readonly="readonly">

<i class="icon-user icon-large"></i>

</p>

<p class="field">

<input type="password" id="contrasenia" name="contrasenia"

placeholder="Contrase&ntilde;a">

<i class="icon-lock icon-large"></i>

</p>

<p class="field">

<input type="password" id="password" name="password" placeholder="Re-

Contrase&ntilde;a">

<i class="icon-lock icon-large"></i>

</p>

<p class="submit">

<button type="button" name="button" onClick="validarEnvio()"><i class="icon-arrow-

right icon-large"></i></button>

</p>

<input type="hidden" name="accion" value="MC"></input>

<input type="hidden" name="usuario" value="<?php echo $objUsuario->get_usuario();

?>"></input>

</form>

</section>

</div>

</body>

</html>

RECUPERAR CONTRASENIA EXITO.PHP

<?php

require_once('configuraciones.php');

require_once('../clases/conexion.class.php');

require_once('../clases/usuario.class.php');

Page 86: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

86

$objUsuario = new Usuario("", "", "", trim($usuario), "", "", "", "");

$objUsuario->consultarPorUsuario();

?>

<html lang="en">

<head>

<title>Pagos NFC</title>

<link rel="stylesheet" type="text/css" href="../css/login.css" />

<script src="../js/modernizr.custom.63321.js"></script>

<!--[if lte IE 7]><style>.main{display:none;} .support-note .note-

ie{display:block;}</style><![endif]-->

<script type="text/javascript">

function validarEnvio(){

if(document.getElementById("contrasenia").value!=document.getElementById("password").value){

alert("Las contraseñas no coinciden");

}else{

document.forms[0].action = "peticiones.php";

document.forms[0].submit();

}

}

</script>

</head>

<body>

<div class="container">

<center>

<h1>Le indicamos que su contrase&ntilde;a fue actualizada con &eacute;xito</h1>

</center>

</div>

</body>

</html>

JQUERY.JTABLE

jTable 2.0.0

http://www.jtable.org

Page 87: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

87

* CORE jTable module *

(function ($) {

$.widget("hik.jtable", {

options: {

//Options

actions: {},

fields: {},

animationsEnabled: true,

defaultDateFormat: 'yy-mm-dd',

dialogShowEffect: 'fade',

dialogHideEffect: 'fade',

showCloseButton: false,

loadingAnimationDelay: 500,

ajaxSettings: {

type: 'POST',

dataType: 'json'

},

//Events

closeRequested: function (event, data) { },

formCreated: function (event, data) { },

formSubmitting: function (event, data) { },

formClosed: function (event, data) { },

loadingRecords: function (event, data) { },

recordsLoaded: function (event, data) { },

rowInserted: function (event, data) { },

rowsRemoved: function (event, data) { },

//Localization

messages: {

serverCommunicationError: 'Ocurrio un error mientras se conectaba al servidor.',

loadingMessage: 'cargando registros...',

noDataAvailable: 'No hay datos!',

areYouSure: 'Esta seguro?',

save: 'Guardar',

Page 88: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

88

saving: 'Guardando',

cancel: 'Cancelar',

error: 'Error',

close: 'Cerrar',

cannotLoadOptionsFor: 'No se pueden argar las opciones para el campo {0}'

}

},

_$mainContainer: null, //Reference to the main container of all elements that are created by this

plug-in (jQuery object)

_$table: null, //Reference to the main <table> (jQuery object)

_$tableBody: null, //Reference to <body> in the table (jQuery object)

_$tableRows: null, //Array of all <tr> in the table (except "no data" row) (jQuery object array)

_$bottomPanel: null, //Reference to the panel at the bottom of the table (jQuery object)

_$busyDiv: null, //Reference to the div that is used to block UI while busy (jQuery object)

_$busyMessageDiv: null, //Reference to the div that is used to show some message when UI is

blocked (jQuery object)

_$errorDialogDiv: null, //Reference to the error dialog div (jQuery object)

_columnList: null, //Name of all data columns in the table (select column and command columns

are not included) (string array)

_fieldList: null, //Name of all fields of a record (defined in fields option) (string array)

_keyField: null, //Name of the key field of a record (that is defined as 'key: true' in the fields

option) (string)

_firstDataColumnOffset: 0, //Start index of first record field in table columns (some columns can

be placed before first data column, such as select checkbox column) (integer)

_lastPostData: null, //Last posted data on load method (object)

_cache: null, //General purpose cache dictionary (object)

_create: function () {

//Initialization

this._normalizeFieldsOptions();

this._initializeFields();

this._createFieldAndColumnList();

//Creating DOM elements

Page 89: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

89

this._createMainContainer();

this._createTableTitle();

this._createTable();

this._createBottomPanel();

this._createBusyPanel();

this._createErrorDialogDiv();

this._addNoDataRow();

},

/* Normalizes some options for all fields (sets default values).

_normalizeFieldsOptions: function () {

var self = this;

$.each(self.options.fields, function (fieldName, props) {

self._normalizeFieldOptions(fieldName, props);

});

},

/* Normalizes some options for a field (sets default values).

_normalizeFieldOptions: function (fieldName, props) {

props.listClass = props.listClass || '';

props.inputClass = props.inputClass || '';

},

/* Intializes some private variables.

_initializeFields: function () {

this._lastPostData = {};

this._$tableRows = [];

this._columnList = [];

this._fieldList = [];

this._cache = [];

},

/* Fills _fieldList, _columnList arrays and sets _keyField variable.

_createFieldAndColumnList: function () {

var self = this;

$.each(self.options.fields, function (name, props) {

Page 90: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

90

//Add field to the field list

self._fieldList.push(name);

//Check if this field is the key field

if (props.key == true) {

self._keyField = name;

}

//Add field to column list if it is shown in the table

if (props.list != false && props.type != 'hidden') {

self._columnList.push(name);

}

});

},

/* Creates the main container div.

_createMainContainer: function () {

this._$mainContainer = $('<div />')

.addClass('jtable-main-container')

.appendTo(this.element);

},

/* Creates title of the table if a title supplied in options.

_createTableTitle: function () {

var self = this;

if (!self.options.title) {

return;

}

var $titleDiv = $('<div />')

.addClass('jtable-title')

.appendTo(self._$mainContainer);

$('<div />')

.addClass('jtable-title-text')

.appendTo($titleDiv)

.append(self.options.title);

if (self.options.showCloseButton) {

Page 91: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

91

var $textSpan = $('<span />')

.html(self.options.messages.close);

$('<button></button>')

.addClass('jtable-command-button jtable-close-button')

.attr('title', self.options.messages.close)

.append($textSpan)

.appendTo($titleDiv)

.click(function (e) {

e.preventDefault();

e.stopPropagation();

self._onCloseRequested();

});

}

},

/* Creates the table.

_createTable: function () {

this._$table = $('<table></table>')

.addClass('jtable')

.appendTo(this._$mainContainer);

this._createTableHead();

this._createTableBody();

},

/* Creates header (all column headers) of the table.

_createTableHead: function () {

var $thead = $('<thead></thead>')

.appendTo(this._$table);

this._addRowToTableHead($thead);

},

/* Adds tr element to given thead element

_addRowToTableHead: function ($thead) {

var $tr = $('<tr></tr>')

.appendTo($thead);

Page 92: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

92

this._addColumnsToHeaderRow($tr);

},

/* Adds column header cells to given tr element.

_addColumnsToHeaderRow: function ($tr) {

for (var i = 0; i < this._columnList.length; i++) {

var fieldName = this._columnList[i];

var $headerCell = this._createHeaderCellForField(fieldName,

this.options.fields[fieldName]);

$headerCell.appendTo($tr);

}

},

/* Creates a header cell for given field.

* Returns th jQuery object.

_createHeaderCellForField: function (fieldName, field) {

field.width = field.width || '10%'; //default column width: 10%.

var $headerTextSpan = $('<span />')

.addClass('jtable-column-header-text')

.html(field.title);

var $headerContainerDiv = $('<div />')

.addClass('jtable-column-header-container')

.append($headerTextSpan);

var $th = $('<th></th>')

.addClass('jtable-column-header')

.css('width', field.width)

.data('fieldName', fieldName)

.append($headerContainerDiv);

return $th;

},

/* Creates an empty header cell that can be used as command column headers.

Page 93: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

93

_createEmptyCommandHeader: function () {

return $('<th></th>')

.addClass('jtable-command-column-header')

.css('width', '1%');

},

/* Creates tbody tag and adds to the table.

_createTableBody: function () {

this._$tableBody = $('<tbody></tbody>').appendTo(this._$table);

},

/* Creates bottom panel and adds to the page.

_createBottomPanel: function () {

this._$bottomPanel = $('<div />')

.addClass('jtable-bottom-panel')

.appendTo(this._$mainContainer);

$('<div />').addClass('jtable-left-area').appendTo(this._$bottomPanel);

$('<div />').addClass('jtable-right-area').appendTo(this._$bottomPanel);

},

/* Creates a div to block UI while jTable is busy.

_createBusyPanel: function () {

this._$busyMessageDiv = $('<div />').addClass('jtable-busy-

message').prependTo(this._$mainContainer);

this._$busyDiv = $('<div />').addClass('jtable-busy-panel-

background').prependTo(this._$mainContainer);

this._hideBusy();

},

/* Creates and prepares error dialog div.

_createErrorDialogDiv: function () {

var self = this;

self._$errorDialogDiv = $('<div></div>').appendTo(self._$mainContainer);

self._$errorDialogDiv.dialog({

autoOpen: false,

show: self.options.dialogShowEffect,

hide: self.options.dialogHideEffect,

modal: true,

Page 94: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

94

title: self.options.messages.error,

buttons: [{

text: self.options.messages.close,

click: function () {

self._$errorDialogDiv.dialog('close');

}

}]

});

},

BASE DE DATO EN MYSQL

-- phpMyAdmin SQL Dump

-- version 3.2.0.1

-- http://www.phpmyadmin.net

-- Servidor: localhost

-- Tiempo de generación: 31-12-2012 a las 08:19:08

-- Versión del servidor: 5.1.37

-- Versión de PHP: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- Base de datos: `pagosnfc`

-- --------------------------------------------------------

-- Estructura de tabla para la tabla `entidades`

CREATE TABLE IF NOT EXISTS `entidades` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`numero_tarjeta` varchar(20) DEFAULT NULL,

`fecha_vencimiento` date DEFAULT NULL,

`codigo_verificacion` varchar(10) DEFAULT NULL,

`cedula` varchar(20) DEFAULT NULL, `nombre` varchar(200) DEFAULT NULL, `fecha_creacion` date DEFAULT NULL, `cupo_asignado` float DEFAULT NULL, `cupo_disponible` float DEFAULT NULL, `minimo_pagar` float DEFAULT NULL, `fecha_tope_pago` date DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- Volcar la base de datos para la tabla `entidades`

Page 95: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

95

INSERT INTO `entidades` (`id`, `numero_tarjeta`, `fecha_vencimiento`, `codigo_verificacion`, `cedula`, `nombre`, `fecha_creacion`, `cupo_asignado`, `cupo_disponible`, `minimo_pagar`, `fecha_tope_pago`) VALUES (1, '9898232323233433', '2013-12-31', '1223', '0998989899', 'ROBERTO RAMIREZ', '2012-12-30', 1000, 11, 354, '2012-12-31'), (2, '46465456465', '2012-12-31', '5646', '0924951635', 'DAVID VELIZ', '2012-12-30', 500, 25, 100, '2012-12-24') --------------------------------------------------------

-- Estructura de tabla para la tabla `tarjetas` CREATE TABLE IF NOT EXISTS `tarjetas` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tarjeta` varchar(20) DEFAULT NULL, `codigo` varchar(200) DEFAULT NULL, `tipo` varchar(20) DEFAULT NULL, `imagen` int(11) DEFAULT NULL, `fecha_creacion` date DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- Volcar la base de datos para la tabla `tarjetas` INSERT INTO `tarjetas` (`id`, `tarjeta`, `codigo`, `tipo`, `imagen`, `fecha_creacion`) VALUES (1, '989898982299', '22222', 'Visa', 2130837514, '2012-11-18'), (2, '9898232323233433', '454555', 'Dinners', 2130837505, '2012-11-18'), (3, '3434343', '2323232', 'America', 2130837504, '2012-11-18'), (4, '344566896', '5678', 'America', 2130837504, '2012-12-30'); -- -------------------------------------------------------- -- Estructura de tabla para la tabla `usuarios` CREATE TABLE IF NOT EXISTS `usuarios` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nombre` varchar(200) DEFAULT NULL, `cedula` varchar(15) DEFAULT NULL, `email` varchar(200) DEFAULT NULL, `usuario` varchar(50) DEFAULT NULL, `contrasenia` varchar(200) DEFAULT NULL, `fecha_creacion` date DEFAULT NULL, `estado` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

Page 96: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

96

DICCIONARIO DE DATOS

ENTIDADES

ESQUEMA PÁGINA WEB CLAVE PRIMARIA ID CLAVE FORÁNEA N/A OBJETIVO Almacenar la información de las entidades nuevas ingresadas del

sitio web

CAMPO TIPO PERMITE NULO

OBSERVACIÓN

ID INTEGER NO Identificación única para cada entidad

NUMERO_TARJETA INTEGER SI Número de tarjeta relacionada que manejara la entidad

FECHA_VENCIMIENTO DATE SI Fecha de vencimiento de la tarjeta de crédito

CODIGO_VERIFICACION VARCHAR SI Código de verificación de la tarjeta de crédito

CEDULA VARCHAR SI Cédula de identidad del propietario de la tarjeta de crédito

NOMBRE VARCHAR SI Descripción de la entidad que se crean en la pagina web.

FECHA_CREACION DATE SI Fecha de creación de la página web

CUPO_ASIGNADO INTEGER SI Monto máximo que tiene la tarjeta de crédito

CUPO_DISPONIBLE INTEGER SI Cupo que se puede para realizar alguna compra

MINIMO_PAGAR INTEGER SI El valor que debe cancelar el cliente.

FECHA_TOPE_PAGO DATE SI Fecha máxima

Page 97: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

97

TARJETAS

ESQUEMA PÁGINA WEB CLAVE PRIMARIA ID CLAVE FORÁNEA N/A OBJETIVO Almacenar la información de las tarjetas de crédito nuevas

ingresadas desde la aplicación de dispositivo móvil.

CAMPO TIPO PERMITE NULO

OBSERVACIÓN

ID INTEGER NO Identificación única para cada tarjeta.

TARJETA INTEGER SI Número de tarjeta crédito creada en el teléfono Android.

CODIGO VARCHAR SI Código de verificación de la tarjeta de crédito.

TIPO VARCHAR SI Tipo de tarjeta de crédito:Visa, Dinner, etc.

IMAGEN INTEGER SI Tipo de imagen a mostrarse al crear una tarjeta de crédito.

FECHA_CREACION DATE SI Fecha de creación de la tarjeta en la página web.

USUARIOS

ESQUEMA PÁGINA WEB CLAVE PRIMARIA ID CLAVE FORÁNEA N/A OBJETIVO Almacenar la información de los usuarios tarjetas de crédito

ingresados desde la aplicación de dispositivo móvil.

Page 98: FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE ...repositorio.ug.edu.ec/bitstream/redug/2545/2/Manual Tecnico NFC... · JQUERY.JTABLE ... DICCIONARIO DE DATOS ... Permite

98

CAMPO TIPO PERMITE NULO

OBSERVACIÓN

ID INTEGER NO Identificación única para cada usuario

NOMBRE VARCHAR SI Nombre del usuario creado desde el smartphone

CEDULA VARCHAR SI Cédula de identidad del propietario de la tarjeta de crédito

EMAIL VARCHAR SI Correo electrónico del usuario de la aplicación de pago NFC

USUARIO VARCHAR SI Nombre de usuario de login de la aplicación

CONTRASEIA VARCHAR SI Password del usuario que desea realizar el login a la aplicación.

FECHA_CREACION DATE Fecha de registro del usuario en la aplicación de NFC

LIBRERÍAS ADICIONALES PROTOTYPE

Prototype es un framework de JavaScript que permite un rápido desarrollo de

aplicaciones web dinámicas. La versión utilizada en la creación del sitio web es la 1.6

y puede ser descargada desde la página http://www.prototypejs.org/

TABLEORDERER

TableOrderer es un script simple basado en el prototype1.6.0 que permite crear

dinámicamente tablas HTML con capacidad de ordenamiento. Se lo puede descargar

de la página http://prototools.negko.com/demo/tableorderer/