Cambios en la leyes destinadas a los cambios de formato CCC a IBAN

En febrero de 2014 entra en vigor SEPA (Zona Única de Pago en Euros), una apuesta europea para garantizar que todas las transacciones se efectuen en euros.

A nosotros, esto nos supone dejar de trabajar con el formato CCC y comenzar a trabajar con el formato IBAN.

Adjunto funciones necesarias para poder trabajar correctamente:

 

Función para validar un código IBAN

/**
 * @brief Función que recibe un código IBAN y lo valida.
 *
 * @param iban
 *     Código IBAN a validar.
 *
 * @return boolean
 */
function [module]_validate_iban($iban) {
 
  $account = strtoupper(trim($iban));
 
  $charmap = array (
    'A' => 10,
    'B' => 11,
    'C' => 12,
    'D' => 13,
    'E' => 14,
    'F' => 15,
    'G' => 16,
    'H' => 17,
    'I' => 18,
    'J' => 19,
    'K' => 20,
    'L' => 21,
    'M' => 22,
    'N' => 23,
    'O' => 24,
    'P' => 25,
    'Q' => 26,
    'R' => 27,
    'S' => 28,
    'T' => 29,
    'U' => 30,
    'V' => 31,
    'W' => 32,
    'X' => 33,
    'Y' => 34,
    'Z' => 35,
  );
 
  if (strlen($account) != 24) {
    return FALSE;
  }
  else {
    $letra1 = substr($account, 0, 1);
    $letra2 = substr($account, 1, 1);
 
    if (isset($charmap[$letra1]) && isset ($charmap[$letra2])) {
      $num1   = $charmap[$letra1];
      $num2   = $charmap[$letra2];
    }
    else {
      return FALSE;
    }
 
    $final = substr($account, 2, 2);
    $temp  = substr($account, 4, strlen($account)) . $num1 . $num2 . $final;
 
    if (bcmod($temp, 97) == 1) {
      return TRUE;
    }
    else {
      return FALSE;
    }
  }
}

Función para obtener el dígito de control del código IBAN a partir de un código CCC

/**
 * @brief Función que recibe un CCC y devuelve el campo IBAN
 *
 * @param codigo_pais 
 *     Código de país. 2 caracteres en mayúsculas.
 * @param ccc
 *     Código cuenta corriente del que calcular este campo.
 */
function [module]_calculate_iban($codigo_pais, $ccc) {
 
  $charmap = array (
    'A' => 10,
    'B' => 11,
    'C' => 12,
    'D' => 13,
    'E' => 14,
    'F' => 15,
    'G' => 16,
    'H' => 17,
    'I' => 18,
    'J' => 19,
    'K' => 20,
    'L' => 21,
    'M' => 22,
    'N' => 23,
    'O' => 24,
    'P' => 25,
    'Q' => 26,
    'R' => 27,
    'S' => 28,
    'T' => 29,
    'U' => 30,
    'V' => 31,
    'W' => 32,
    'X' => 33,
    'Y' => 34,
    'Z' => 35,
  );
 
  $dividendo = $ccc . $charmap[substr($codigo_pais, 0 , 1)] . $charmap[substr($codigo_pais, 1 , 1)] . '00';
 
  $digito_control =  98 - bcmod($dividendo, 97);
 
  if (strlen($digito_control) == 1) {
    $digito_control = 0 . $digito_control;
  }
 
  return $codigo_pais . $digito_control;
}

 

IBAN

También te puede interesar