La vida es muy peligrosa. No por las personas que hacen el mal, sino por las que se sientan a ver lo que pasa.

Funciones - Dígito verificador Bancos

2010-08-30 14:06:11-05                  Esta entrada ha sido vista 224 veces.

Ciencia

Nota:

Funciones en PHP, para obtener el dígito verificador  acorde al algoritmo proporcionado por algunos Bancos

(Útil al realizar pagos referenciados)

_________________________________________________________________________________________

function digito_banorte($num_emp)
{
$empresa=62762;
$Sumadigitos=0;
 
$j=2;
for($i=1; $i<=strlen($num_emp);$i++)
{
 
$digito = (int) substr ($num_emp, -$i, 1);
$multiplicacion=  $digito * $j;
 
if($multiplicacion > 9)
{
$decenas=(int)($multiplicacion/10);
$unidades=     ($multiplicacion % 10);
 
$Sumadigitos+= ($decenas + $unidades);
}
else
$Sumadigitos+=$multiplicacion;
 
   $j=($j==2)?($j=1):($j=2);
 
}
 
 
$division = $Sumadigitos/ 10;
$residuo = $Sumadigitos % 10;
 
 
  if($residuo)
  $digito_ver=10-$residuo;
  else
  $digito_ver=0;
 
 
return($digito_ver);
 
}
 
//--------------------------------------------------------------
 
function digito_hsbc($num_ref)
{
 
$num_ref = $num_ref * 1;
 
 
 
 
$num_ref = str_repeat("0",(6-strlen($num_ref) )) . $num_ref;
 
//debug("[".$num_ref."]");
 
$Sumadigitos=0;
 
 
 
for($i=1, $j=7; ($i<7 );$i++, $j--)
{
 
$digito = (int) substr($num_ref, ($i-1), 1);
$Sumadigitos += $digito * $j;
 
}
$division = $Sumadigitos / 7;
$residuo  = $Sumadigitos % 7;
 
  $digito_ver = 7-$residuo;
 
 
 
return($digito_ver);
 
}
//--------------------------------------------------------------
 
function digito_bancomer($num_ref)
{
 
$sumadigitos=0;
 
    $mul=0;
 
for($i=1;  ($i<=strlen($num_ref));$i++ )
{
 
 
$mul = ($mul != 2)?(2):(1);
 
$d =(int) substr($num_ref, ($i-1), 1);
 
$digito = $d * $mul;
 
 
 
if($digito >= 10)
{
$decenas = floor($digito/10);
 
$unidades = $digito - $decenas*10 ;
 
$digito = $unidades+$decenas;
 
}
 
 
$sumadigitos += $digito ;
 
}
 
 
$decena_mas_cercana = (ceil($sumadigitos/10) * 10);
 
 
$digito_ver = $decena_mas_cercana -$sumadigitos;
 
 
return($digito_ver);
 
}
//--------------------------------------------------------------
function digito_banamex_mod97($suc, $cta, $ref)
{
 
 
if(strlen($suc)<4)
$suc = str_repeat("0",(4-strlen($suc))).$suc;
 
 
if(strlen($cta)<7)
$cta = str_repeat("0",(7-strlen($cta))).$cta;
 
 
if(strlen($suc)<8)
$ref = str_repeat("0",(8-strlen($ref))).$ref;
 
 
 
$_suc=array(23,29,31,37);
$_cta=array(13,17,19,23,29,31,37);
$_ref=array(11,13,17,19,23,29,31,37);
 
 
$Sumadigitos1=0;
 
for($i=0; $i<4; $i++)
{
 
$digito = (int) substr($suc, ($i  ), 1);
$Sumadigitos1 += $digito * $_suc[$i];
 
}
 
$Sumadigitos2=0;
 
for($i=0; $i<7; $i++)
{
 
$digito = (int) substr($cta, ($i  ), 1);
$Sumadigitos2 += $digito * $_cta[$i];
 
}
 
 
 
 
$Sumadigitos3=0;
 
for($i=0; $i<8; $i++)
{
 
$digito =(int) substr($ref, ($i  ), 1);
$Sumadigitos3 += $digito * $_ref[$i];
 
}
 
 
$sumatoria = $Sumadigitos1+$Sumadigitos2+$Sumadigitos3;
$residuo = $sumatoria % 97;
 
 
$DD = 99 - $residuo ;
 
$DD =($DD <=9)?("0".$DD):($DD);
return($DD);
 
 
//--------------------------------------------------------------
}
 
 
function digito_banamex_mod97_reload($suc, $cta, $ref)
{
 
        $ref=strtoupper($ref);
 
if(strlen($suc)<4)
$suc = str_repeat("0",(4-strlen($suc))).$suc;
 
 
if(strlen($cta)<7)
$cta = str_repeat("0",(7-strlen($cta))).$cta;
 
 
if(strlen($ref)<18)
$ref = str_repeat("0",(18-strlen($ref))).$ref;
 
 
 
$_suc=array(23,29,31,37);
$_cta=array(13,17,19,23,29,31,37);
$_ref=array(19,23,29,31,37,1,2,3,5,7,11,13,17,19,23,29,31,37);
 
 
$Sumadigitos1=0;
 
for($i=0; $i<4; $i++)
{
 
$digito = (int) substr($suc, ($i  ), 1);
$Sumadigitos1 += $digito * $_suc[$i];
 
}
 
$Sumadigitos2=0;
 
for($i=0; $i<7; $i++)
{
 
$digito = (int) substr($cta, ($i  ), 1);
$Sumadigitos2 += $digito * $_cta[$i];
 
}
 
 
 
        $alfa_replace   =array ("A","B","C","D","E","F","G","H","I","J","K","L","M","Ñ","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
        $digit_repalce  =array ("2","2","2","3","3","3","4","4","4","5","5","5","6","0","6","6","7","7","7","8","8","8","9","9","9","0","0");
 
        $ref=str_replace($alfa_replace, $digit_repalce, $ref);
 
$Sumadigitos3=0;
 
for($i=0; $i<18; $i++)
{
 
$digito =(int) substr($ref, ($i  ), 1);
$Sumadigitos3 += $digito * $_ref[$i];
 
}
 
 
$sumatoria = $Sumadigitos1+$Sumadigitos2+$Sumadigitos3;
$residuo = $sumatoria % 97;
 
 
$DD = 99 - $residuo ;
 
$DD =($DD <=9)?("0".$DD):($DD);
 
return($DD);
 
 
//--------------------------------------------------------------
}

Permalink: http://www.mononeurona.org/entries/view/tonathiu/2353


Comments Commentblogs:
New Commentblog
CAPTCHA Image




Join us!
Forgot your password?
This blog has been visited
5,524 times
tonathiu
El hombre por siglos ha estado atado a los más atroces dogmas e intereses personales de las oligarquías, ellas han perfeccionado los métodos de domino, fabricandonos una realidad virtual. El dominio de la técnica nos ayuda a comprender nuestro entorno pero sobre todo a transformarlo en estructuras donde el individualismo, la apatía y el placer por los bienes materiales, nunca estén por encima de valores como la igualdad, la soberanía y el desarrollo comunitario.

Este es mi pensamiento y mis intereses.
Powered by
Despabilando la MonoNeurona.org
Livechat
<-Nombre

humusanito wrote:
estoy interesado en lo de php. Mándame los detalles a roberto.bernabe at gmail.com grax
on 24/7/09

vendaval wrote:
de donde eres Maestro. yo de San Agustin Ecatepec
on 29/2/08

tafus wrote:
Donde las puedo conseguir ????
on 4/1/08

tafus wrote:
las vi en un post de mononeurona
on 4/1/08

tafus wrote:
hola me interesa eso de las playeras
on 4/1/08


Tengo un madral de hambre.
on 11/4/11
Conocí la MN, Por un maestro de la Uniersidad. Por el artículo de "Rompiendo clave WEP"
on 20/12/10
@xhman- Una duda, que no acabo de resolver y disculpa mi ignorancia. Jesuitas = EZLN
on 8/12/10
@vendaval : Bastante buena no se arrepentiran
on 19/9/10
Ojalá puedan ver la película "El infierno"
on 15/9/10
Grax..
on 9/9/10
@saidjose, cuentanos un poco tus experiencias al respecto, por favor
on 7/9/10
@Thot: Pronta resignación compañero....
on 31/7/10
Es a las 12:00 en el walmart ?????
on 21/8/09
Doblando el díptico, SI coincide y me parece muy bueno
on 19/8/09
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2011.