/** * Validate clearing number check digit * * If no clearing check digit exists number is considered valid. * * @param AccountNumber $number * @return null * @throws InvalidCheckDigitException If check digit is not valid */ public function validate(AccountNumber $number) { if ($checkDigit = $number->getClearingCheckDigit()) { if (!$this->checksum->isValid($number->getClearingNumber() . $checkDigit)) { throw new InvalidCheckDigitException("Invalid clearing number check digit in {$number}"); } } }
/** * Validate clearing number * * Clearing must be in one of the specified ranges to be considered valid. * * @param AccountNumber $number * @return null * @throws InvalidClearingNumberException If clearing number is not valid */ public function validate(AccountNumber $number) { $clearing = intval($number->getClearingNumber()); foreach ($this->clearingRanges as $clearingRange) { if ($clearing >= $clearingRange[0] && $clearing <= $clearingRange[1]) { return; } } throw new InvalidClearingNumberException("Invalid clearing number {$clearing} in {$number}"); }
protected function processNumber(AccountNumber $number) { return substr($number->getClearingNumber(), 1) . $number->getSerialNumber() . $number->getCheckDigit(); }