domingo, 28 de marzo de 2010

Visual Basic 6.0: Validar un número de tarjeta de crédito (ISO 2894)

En una aplicación de comercio electrónico o una aplicación que necesite validar el número de una tarjeta de crédito, se puede hace uso del algoritmo ISO 2894. Este algoritmo permite comprobar que la numeración de la tarjeta es correcta, pero obviamente no indica si la tarjeta sigue siendo válida (no ha sido anulada, ha caducado, etc.).

A continuación, se muestra el código Visual Basic para comprobar la validez en la numeración de una tarjeta de crédito:

Cree un nuevo proyecto en Visual Basic y añada una caja de texto y un botón.

Pegue el siguiente código:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Valida la tarjeta de crédito de acuerdo con el algoritmo ISO 2894
' El algoritmo es:
' 1. Calcular el peso para el primer dígito: si el número de dígitos
' es par el primer peso es 2 de lo contrario es 1. Después los
' pesos alternan entre 1, 2, 1, 2, 1 ...
' 2. Multiplicar cada dígito por su peso
' 3. Si el resultado del 2º paso es mayor que 9, restar 9
' 4. Sumar todos los dígitos
' 5. Comprobar que el resultado es divisible por 10
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function EsCCValido(sTarjeta As String) As Boolean
Dim iPeso As Integer
Dim iDigito As Integer
Dim iSuma As Integer
Dim iContador As Integer
Dim sNuevaTarjeta As String
Dim cCaracter As String * 1


iPeso = 0
iDigito = 0
iSuma = 0


'Reemplazar cualquier no digito por una cadena vacía
For iContador = 1 To Len(sTarjeta)
cCaracter = Mid(sTarjeta, iContador, 1)
If IsNumeric(cCaracter) Then
sNuevaTarjeta = sNuevaTarjeta & cCaracter
End If
Next iContador


' Si es 0 devolver Falso
If sNuevaTarjeta = 0 Then
EsCCValido = False
Exit Function
End If


' Si el número de dígitos es par el primer peso es 2, de lo
' contrario es 1
If (Len(sNuevaTarjeta) Mod 2) = 0 Then
iPeso = 2
Else
iPeso = 1
End If


For iContador = 1 To Len(sNuevaTarjeta)
iDigito = Mid(sNuevaTarjeta, iContador, 1) * iPeso
If iDigito >; 9 Then iDigito = iDigito - 9
iSuma = iSuma + iDigito
' Cambiar peso para el siguiente dígito
If iPeso = 2 Then
iPeso = 1
Else
iPeso = 2
End If
Next iContador


' Devolver verdadero si la suma es divisible por 10
If (iSuma Mod 10) = 0 Then
EsCCValido = True
Else
EsCCValido = False
End If


End Function


Private Sub btnComprobarCC_Click()
If EsCCValido(Text1) Then
MsgBox "Tarjeta válida"
Else
MsgBox "Tarjeta inválida"
End If
End Sub



Ejecute la aplicación. En la caja de texto introduzca el número de la tarjeta de crédito y pulse el botón de comprobación. Puede probar con 4242 4242 4242 4242 que es un número válido.

Digg Technorati Delicious StumbleUpon Reddit BlinkList Furl Mixx Facebook Google Bookmark Yahoo
ma.gnolia squidoo newsvine live netscape tailrank mister-wong blogmarks slashdot spurl

No hay comentarios: