Rutina calculo codigo verificador PagoFacil

1,130 views
Skip to first unread message

Ruben Antunes

unread,
Aug 6, 2012, 3:01:29 PM8/6/12
to mundovis...@googlegroups.com

A quien me pueda ayudar del Foro. Necesito la rutina del cálculo digito verificador de PAGOFACIL , si alguien la puede tener agradecería me la puedan ofrecer.

Necesito calcular el digito verificador de mi código de barra y no tengo la misma. He pedido a PAGOFACIL (Medios de cobranza de CODIGOS DE BARRA en ARGENTINA) y me han dado en Word como trabaja, pero no la rutina. Agradezco me puedan ayudar.

 

Saludos

Rubén

 

Luis Gabriel Mondragon

unread,
Aug 6, 2012, 4:19:10 PM8/6/12
to mundovis...@googlegroups.com
y como trabaja, con eso podemos sacar la rutina

2012/8/6 Ruben Antunes <rubena...@gmail.com>

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
 
 

Ruben Antunes

unread,
Aug 6, 2012, 4:29:24 PM8/6/12
to mundovis...@googlegroups.com

Esto es lo que me pasaron.

Ruben Antunes

 

 Cálculo de los Dígitos verificadores

Dado un string numérico, se deberán aplicar los siguientes pasos para la obtención de sus dígitos de verificación.

Cálculo del primer dígito verificador:

Paso 1: Comenzando por el primer dígito del string numérico, asignarle la secuencia 1, 3, 5, 7, 9; y luego 3, 5, 7, 9 hasta completar la longitud total del mismo.

Paso 2: Realizar el producto de cada elemento de la secuencia por el elemento correspondiente del string a verificar.

Paso 3: Sumar todos los productos.

Paso 4: Dividir el resultado de la suma por 2.

Paso 5: Tomar la parte entera del paso 4 y dividirla por 10. El resto de esta división (modulo 10) será el primer dígito verificador.

Cálculo del segundo dígito verificador:

Paso 6: Agregar el primer dígito verificador obtenido (paso 5) a final de la cadena original, y aplicar nuevamente los pasos 1 al 5. El nuevo resultado será el segundo verificador.

Ejemplo: String :

0

1

2

3

0

0

0

0

5

1

0

0

0

4

1

2

5

0

0

0

0

0

0

0

0

0

0

1

2

3

4

0

0

0

0

1

5

0

1

0

-

Paso 1 :

1

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

-

Paso 2 :

0

3

10

21

0

0

0

0

45

3

0

0

0

12

5

14

45

0

0

0

0

0

0

0

0

0

0

7

18

9

20

0

0

0

0

7

45

0

5

0

-

Paso 3 :

269

Paso 4 :

269 / 2 = 134,50

Paso 5 :

Resto 134 /10 = 4

Paso 6 :

0

1

2

3

0

0

0

0

5

1

0

0

0

4

1

2

5

0

0

0

0

0

0

0

0

0

0

1

2

3

4

0

0

0

0

1

5

0

1

0

4

Paso 1’:

1

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

3

5

7

9

Paso 2’:

0

3

10

21

0

0

0

0

45

3

0

0

0

12

5

14

45

0

0

0

0

0

0

0

0

0

0

7

18

9

20

0

0

0

0

7

45

0

5

0

36

Paso 3’:

305

Paso 4’:

305 / 2 = 152,50

Paso 5’:

Resto 152 /10 = 2

String Final:

0

1

2

3

0

0

0

0

5

1

0

0

0

4

1

2

5

0

0

0

0

0

0

0

0

0

0

1

2

3

4

0

0

0

0

1

5

0

1

0

4

2

HernanCano

unread,
Aug 8, 2012, 2:10:29 AM8/8/12
to mundovis...@googlegroups.com

Tienes la explicación en Word.

¿Eres programador o no?

Ruben Antunes

unread,
Aug 8, 2012, 9:58:53 AM8/8/12
to mundovis...@googlegroups.com

Si lo soy. Solo preguntaba si alguien del foro la tenía ya funcionando porque me urgía por el tiempo –ya que estaba usando otra y la gente de PAGOFACIL aplicó la suya para el cálculo (es una historia larga). Pero ya me la pasaron –gracias y sepan perdonar los compañeros del foro si les molesto la consulta.

 

Saludos

Rubén Antunes

--

Daniel Sánchez

unread,
Aug 11, 2012, 7:11:36 PM8/11/12
to mundovis...@googlegroups.com
Ruben A. sería interesante que la compartas, así quedaría un aporte de tu parte al grupo.

Saludos

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

Luis Maria Guayan

unread,
Aug 12, 2012, 6:15:35 PM8/12/12
to mundovis...@googlegroups.com
Mira, esta función sirve para los servicios de RapiPago y/o Pago Fácil de Argentina.

Lo que no tengo muy en claro es cual o cuando se genera 1 ó 2 dígitos de verificación, esto se pasa en el segundo parámetro:

? GenerarDigitoVerificador("30540360002000800080581122160008058112234", 1) && 1 dígito de verificación

FUNCTION GenerarDigitoVerificador(tcCadena, tn)
  *---
  * Parámetros
  *   tcCadena = Cadena a generar el/los dígito/s de verificación
  *   tn = Cantidad de dígito/s de verificación (1 ó 2)
  * Retorno:
  *   Caracter: La cadena mas el/los dígito/s de verificación
  *---

  IF EMPTY(tn) OR NOT INLIST(tn, 1, 2)
    tn = 1
  ENDIF

  tcCadena = ALLTRIM(tcCadena)
  
  LOCAL lnLen, lnI, lnSuma, lcSeq
  lnLen = LEN(tcCadena)
  lcSeq = "1" + REPLICATE("3579", CEILING(lnLen/4))
  lnSuma = 0
  FOR lnI = 1 TO lnLen
    lnSuma = lnSuma + VAL(SUBSTR(tcCadena, lnI, 1)) * VAL(SUBSTR(lcSeq, lnI, 1))
  ENDFOR
  lcRet = tcCadena + TRANSFORM(MOD(INT(lnSuma / 2), 10))
  IF tn = 2
    tcCadena = ALLTRIM(lcRet)
    lnLen = LEN(tcCadena)
    lcSeq = "1" + REPLICATE("3579", CEILING(lnLen/4))
    lnSuma = 0
    FOR lnI = 1 TO lnLen
      lnSuma = lnSuma + VAL(SUBSTR(tcCadena, lnI, 1)) * VAL(SUBSTR(lcSeq, lnI, 1))
    ENDFOR
    lcRet = tcCadena + TRANSFORM(MOD(INT(lnSuma / 2), 10))
  ENDIF
  RETURN lcRet
ENDFUNC



Luis María Guayán
Tucumán, Argentina
_________________________
Nada corre como un zorro
_________________________
Reply all
Reply to author
Forward
0 new messages