desta fix for invalid bankaccount numbers; add virtual key object
This commit is contained in:
36
common/models/HuBankAccountValidator.php
Normal file
36
common/models/HuBankAccountValidator.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace common\models;
|
||||
|
||||
class HuBankAccountValidator
|
||||
{
|
||||
|
||||
public function validate($bankAccount){
|
||||
if ( !isset($bankAccount)){
|
||||
return false;
|
||||
}
|
||||
$stripedBankAccount = preg_replace('/\s+/', '', $bankAccount);
|
||||
if ( strlen($stripedBankAccount) != 24){
|
||||
return false;
|
||||
}
|
||||
$arrayOfNumbers = str_split($stripedBankAccount);
|
||||
$multipliers = [9,7,3,1];
|
||||
$groups = [0,0,0];
|
||||
for ( $i = 0; $i < count($arrayOfNumbers); $i++ ) {
|
||||
$number = $arrayOfNumbers[$i];
|
||||
$multiplier = $multipliers[$i % 4];
|
||||
$total = $multiplier * $number;
|
||||
$groups[intval($i / 8)] += $total ;
|
||||
}
|
||||
|
||||
foreach ($groups as $group){
|
||||
$mod = $group % 10;
|
||||
if ( $mod > 0 ){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user