Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
1369e5e
Se sube estructura basica de carpetas, y ejemplo form a index
Jul 6, 2018
fb76ffe
Merge pull request #1 from Lainix/eli
Lainix Jul 12, 2018
338366e
Se añade al README mayor descripcion del flujo del proyecto
DolceLemus Jul 12, 2018
73358e2
Se modifica form ejemplo
Jul 12, 2018
dfe4564
Merge pull request #2 from DolceLemus/dulce
Lainix Jul 12, 2018
deff4e7
se reestructura el form de html
DolceLemus Jul 17, 2018
bd52a0d
Merge pull request #3 from DolceLemus/dulce
Lainix Jul 17, 2018
4397b96
Se sube funcionalidad para validar la tarjeta de credito
Jul 17, 2018
30935c3
Merge branch 'master' into eli
Lainix Jul 17, 2018
2a313ae
Merge pull request #5 from Lainix/eli
Lainix Jul 17, 2018
2e5e610
inicia funcionalidad de validaciones de fecha
DolceLemus Jul 17, 2018
27c2ca8
Merge branch 'master' into dulce
DolceLemus Jul 18, 2018
12b3d48
Merge pull request #6 from DolceLemus/dulce
Lainix Jul 19, 2018
2aa5472
funciona la validacion de year y month
DolceLemus Jul 19, 2018
3404737
resolving
DolceLemus Jul 19, 2018
32c6530
resolving
DolceLemus Jul 19, 2018
e21792a
resolving
DolceLemus Jul 19, 2018
bd02e91
Merge pull request #7 from DolceLemus/dulce
Lainix Jul 19, 2018
69d2322
Funcionalidad validar tarjeta correjida, funcion validar solo numeros…
Jul 20, 2018
b8f1ec9
Merge branch 'master' into eli
Lainix Jul 20, 2018
b865faf
Merge pull request #12 from Lainix/eli
Lainix Jul 20, 2018
a8e993e
funcionalidad terminada
DolceLemus Jul 20, 2018
19b4e21
Correcion node module
Jul 20, 2018
a988918
Merge branch 'eli' of https://github.com/Lainix/card-validator into eli
Jul 20, 2018
18ce465
Merge pull request #14 from Lainix/eli
Lainix Jul 20, 2018
11b277a
borrando node_modules
Jul 20, 2018
a5268e5
Merge pull request #15 from Lainix/eli
Lainix Jul 20, 2018
1ddbe71
resolvilg merge
DolceLemus Jul 20, 2018
d281af6
resolvilg merge
DolceLemus Jul 20, 2018
4034368
Merge pull request #13 from DolceLemus/dulce
Lainix Jul 20, 2018
67b6315
cambio de nombre de funcion
DolceLemus Jul 20, 2018
2924766
Merge pull request #16 from DolceLemus/dulce
Lainix Jul 20, 2018
07572b2
Pasan las pruebas unitarias.
DolceLemus Jul 21, 2018
4f78a46
Merge pull request #17 from DolceLemus/dulce
Lainix Jul 21, 2018
cc67c32
Se hace limpieza de codigo
DolceLemus Jul 21, 2018
3b59536
se estructura correctamente los archivos, se agregan los autores al p…
DolceLemus Jul 21, 2018
d751fb3
se indica enlace de repositorio DEMO
DolceLemus Jul 21, 2018
b5e2dc0
se crea index.js
DolceLemus Jul 21, 2018
896acd3
se modifica package
DolceLemus Jul 21, 2018
125cd59
Merge pull request #18 from DolceLemus/dulce
Lainix Jul 21, 2018
d62c0f0
solo funciona para node por el momento
DolceLemus Jul 22, 2018
4dd0d43
se añade el if de consola/navegador
DolceLemus Jul 22, 2018
c8eed80
Merge pull request #19 from DolceLemus/dulce
Lainix Jul 22, 2018
e557abc
1.0.1
DolceLemus Jul 22, 2018
abddee2
numero a string y viceversa en card
DolceLemus Jul 22, 2018
023c5e3
1.0.2
DolceLemus Jul 22, 2018
2413e27
cambiando en src y lib
DolceLemus Jul 22, 2018
c4c4c43
1.0.3
DolceLemus Jul 22, 2018
0bed797
se soluciona String de card en src y lib
DolceLemus Jul 22, 2018
05e53f5
1.0.4
DolceLemus Jul 22, 2018
aae6fc8
1.0.5
DolceLemus Jul 22, 2018
c9b0c2e
1.0.6
DolceLemus Jul 22, 2018
b3a2e39
resolving
DolceLemus Jul 22, 2018
f5c4620
1.0.7
DolceLemus Jul 22, 2018
4fc7366
1.0.8
DolceLemus Jul 22, 2018
4b7d2ee
1.0.9
DolceLemus Jul 22, 2018
7a52a5a
1.0.10
DolceLemus Jul 22, 2018
503c36e
Merge pull request #20 from DolceLemus/dulce
Lainix Jul 22, 2018
5063f6e
instaló la biblioteca que se habia subido en la version 1.0.10 y comi…
DolceLemus Jul 23, 2018
0b405b1
argo biblioteca 1.0.10
DolceLemus Jul 23, 2018
e17a2e6
Merge pull request #21 from DolceLemus/dulce
Lainix Jul 23, 2018
edf8554
funciona correctamente con el demo, se modifica la funcion de date pa…
DolceLemus Jul 23, 2018
0d55813
Merge pull request #22 from DolceLemus/dulce
Lainix Jul 23, 2018
2813af5
Instruciones de uso para el usuario final
Jul 23, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
127 changes: 71 additions & 56 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,71 @@
# Valida datos de tarjetas de crédito

* **Track:** _Common Core_
* **Curso:** _JS Deep Dive: Crea tu propia librería usando JavaScript_
* **Unidad:** _Producto final_

***

El plugin debe recibir una referencia a un elemento del DOM que contenga
`<input>`s con los siguientes nombres (atributo `name`):

* `cn` (Card Number): El número de la tarjeta de crédito
* `exp` (Expiry Date): Fecha de expiración
* `cvv` (Card Verification Value): Código de validación de 3 dígitos
* `name`: Nombre completo como aparece en la tarjeta

## Ejemplo

```html
<form>
<div class="form-group">
<label for="cn">Número de tarjeta</label>
<input id="cn" name="cn" />
</div>
<div class="form-group">
<label for="exp">Fecha de vencimiento</label>
<input id="exp" name="exp" />
</div>
<div class="form-group">
<label for="cvv">CVV</label>
<input id="cvv" name="cvv" />
</div>
<div class="form-group">
<label for="name">Nombre completo</label>
<input id="name" name="name" />
</div>
<input type="submit" value="Pagar" />
</form>
```

```js
const form = document.querySelector('form');

form.addEventListener('submit', (e) => {
e.preventDefault();
if (validateCardDetails(form)) {
console.log('datos válido... enviar...');
} else {
console.log('datos inválidos');
}
});
```

A la hora de hacer las validaciones, la librería debería de añadir la clase
`.error` a los `<input>`s que no pasen la validación, o la clase `.success`
en caso de que sí pase.
## Objetivo
El objetivo principal de la la herramienta será validar los distintos campos de una tarjeta convencional de credito tales como: numero de tarjeta, CVV, fecha de expiracion(mm/aa) y nombre del titular.

## Requerimientos del proyecto proporcionados por el cliente

Implementar un validador de datos de tarjeta de crédito. La librería debería validar el número de tarjeta de crédito (usando algoritmo de Luhn), fecha de vencimiento, código de verificación (cvv) y nombre completo que aparece en la tarjeta.

- Valida el número de tarjeta
- Valida CVV
- Valida Fecha Expiración
- Valida nombre

## Herramientas utilizadas en el proyecto
Para este proyecto se utiliza:
- Javascript ES6
- HTML
- Node JS
- JQuery
- Mocha
- NPM

## Aplicación

### Valida el número de tarjeta
Las validaciones correspondientes a este campo serán las siguientes:
- El usuario solo podra ingresar 16 digitos.
- El campo solo acepta numeros.
- El campo acepta espacios pero no son tomados en cuenta para el array de validacion.

### Valida CVV
Validaciones del campo:
- El usuario solo podrá ingresar 3 digitos.
- El campo solo acepta numeros.

### Valida Fecha Expiración
Campo será dividido en dos secciones: Mes y Año.

**Año**

- Tendrá formato "aa".
- En caso de que sea menor al año en curso, se retornará un false el cual indicaria que la tarjeta esta expirada.
- Solo acepta numeros.

**Mes**

- Tendrá formato "mm".
- Solo acepta numeros en el rango de 1 al 12


### Valida nombre
El usuario ingresa nombre y apellidos tal y como se encuentra plasmado en su identifiacion oficial o tarjeta de crédito.
El campo solo permite qué el usuario:
- Ingrese un maximo de 50 carácteres.
- Los carácteres deben de estar constituidos solo por letras.
- Se permite el uso de espacios.

## DEMO

Una manera de utilizar la libreria.

### Instrucciones de uso:

* Instalar npm init
* Instalar la librería (basic-card-validator).
* Nuestro cliente nos pidió utilizar browserify, esto porque requerimos consumir nuestra librería en el navegador.
* En el siguiente link se describen las instrucciones de como instalar y utilizar browserify.
(https://blog.npmjs.org/post/112064849860/using-jquery-plugins-with-npm).
Nota: Browserify solo es compatible con module.export de manera que nuestra librería fue creado de esta manera y no con el método convencional.

* Utilizamos el comando (browserify main.js -o bundle.js) cada vez que deseemos utilizar el archivo bundle.js en comparación con nuestro main.js, como se muestra en el tutorial de el link anterior.
- Utilizar el ejemplo incluido en el main.js
7 changes: 7 additions & 0 deletions assets/assets/bootstrap.min.css

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions basic-card-validator-1_0_10_library/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
61 changes: 61 additions & 0 deletions basic-card-validator-1_0_10_library/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
## Objetivo
El objetivo principal de la la herramienta será validar los distintos campos de una tarjeta convencional de credito tales como: numero de tarjeta, CVV, fecha de expiracion(mm/aa) y nombre del titular.

## Requerimientos del proyecto proporcionados por el cliente

Implementar un validador de datos de tarjeta de crédito. La librería debería validar el número de tarjeta de crédito (usando algoritmo de Luhn), fecha de vencimiento, código de verificación (cvv) y nombre completo que aparece en la tarjeta.

- Valida el número de tarjeta
- Valida CVV
- Valida Fecha Expiración
- Valida nombre

## Herramientas utilizadas en el proyecto
Para este proyecto se utiliza:
- Javascript ES6
- HTML
- Node JS
- JQuery
- Mocha
- NPM

## Aplicación

### Valida el número de tarjeta
Las validaciones correspondientes a este campo serán las siguientes:
- El usuario solo podra ingresar 16 digitos.
- El campo solo acepta numeros.
- El campo acepta espacios pero no son tomados en cuenta para el array de validacion.

### Valida CVV
Validaciones del campo:
- El usuario solo podrá ingresar 3 digitos.
- El campo solo acepta numeros.

### Valida Fecha Expiración
Campo será dividido en dos secciones: Mes y Año.

**Año**

- Tendrá formato "aa".
- En caso de que sea menor al año en curso, se retornará un false el cual indicaria que la tarjeta esta expirada.
- Solo acepta numeros.

**Mes**

- Tendrá formato "mm".
- Solo acepta numeros en el rango de 1 al 12


### Valida nombre
El usuario ingresa nombre y apellidos tal y como se encuentra plasmado en su identifiacion oficial o tarjeta de crédito.
El campo solo permite qué el usuario:
- Ingrese un maximo de 50 carácteres.
- Los carácteres deben de estar constituidos solo por letras.
- Se permite el uso de espacios.

## DEMO

Una manera de utilizar la libreria.

https://dolcelemus.github.io/card-validator-DEMO/
6 changes: 6 additions & 0 deletions basic-card-validator-1_0_10_library/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const card = require("./lib/card");
const name = require("./lib/name");
const cvv = require("./lib/cvv");
const date = require("./lib/date");

module.exports = {card,name,cvv,date};
48 changes: 48 additions & 0 deletions basic-card-validator-1_0_10_library/lib/card.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
'use strict';
// validar que la tarjeta solo sean numeros y 16 numeros
(function () {

// Validar los numeros de tarjeta por Lunm
const isValidCard = (creditNumber) => {
let creditNumberReverse = (String(creditNumber).split("")).reverse();
let pairNumbers = [];
let testCreditNumber = /^([0-9]){16}$/.test(creditNumber);

for (let i = 0; i < creditNumberReverse.length; i++) {
if (i % 2 !== 0) {
let multiplication = creditNumberReverse[i] * 2;
if (multiplication >= 10) {
let sum = 0;
while (multiplication) {
sum += multiplication % 10;
multiplication = Math.floor(multiplication / 10)
}
pairNumbers.push(sum)
} else {
pairNumbers.push(multiplication);
}
} else
pairNumbers.push(parseInt(creditNumberReverse[i]));
}

let numberValidate = 0;
for (let j = 0; j < pairNumbers.length; j++) {
numberValidate += pairNumbers[j];
}

if (numberValidate % 10 === 0 && testCreditNumber === true) {
return true;
} else {
return false
}
}

if (typeof window == "undefined") {
console.log("consola");
module.exports = isValidCard;
} else {
console.log("navegador");
window.isValidCard = isValidCard;
}
})();

17 changes: 17 additions & 0 deletions basic-card-validator-1_0_10_library/lib/cvv.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use strict';
// validar cvv solo sean numeros y 3 digitos
(function () {

const validateNumCvv = (cvv) => {
return /^([0-9]){3}$/.test(cvv);
}

if (typeof window == "undefined") {
console.log("consola");
module.exports = validateNumCvv;
} else {
console.log("navegador");
window.validateNumCvv = validateNumCvv;
}

})();
36 changes: 36 additions & 0 deletions basic-card-validator-1_0_10_library/lib/date.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
'use strict';
(function () {

// DATE
const dateFunct = (month, year) => {
let today = new Date();
let year4Dig = today.getFullYear();
let year2Dig = year4Dig.toString().substr(-2);

let num2DigMonthTest = /^[0-9]{2}$/.test(month);
let num2DigYearTest = /^[0-9]{2}$/.test(year);

// months
if (num2DigMonthTest === true && month < 13) {
return true;
} else {
return false;
}
// years
if (num2DigYearTest === true && year >= year2Dig) {
return true;
} else {
return false;
}
}

if (typeof window == "undefined") {
console.log("consola");
module.exports = dateFunct;
} else {
console.log("navegador");
window.dateFunct = dateFunct;
}

})();

18 changes: 18 additions & 0 deletions basic-card-validator-1_0_10_library/lib/name.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
'use strict';

(function () {

// Validar nombre que solo contenga letras
const validateName = (name) => {
return /^[a-zA-Z]+(\s*[a-zA-Z]*)*[a-zA-Z]+$/.test(name);
}

if (typeof window == "undefined") {
console.log("consola");
module.exports = validateName;
} else {
console.log("navegador");
window.validateName = validateName;
}

})();
Loading