/** * Validate length of the raw number * * Delimiters and spaces are ignored. * * @param AccountNumber $number * @return null * @throws InvalidStructureException If length is invalid */ public function validate(AccountNumber $number) { $len = strlen(str_replace([' ', ',', '-'], '', $number->getRawNumber())); $len -= strlen($number->getClearingCheckDigit()); if ($len > $this->maxLength) { throw new InvalidStructureException("Invalid raw length for {$number->getRawNumber()}, expected: " . $this->maxLength); } }
/** * 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}"); } } }