cs278 / bank-modulus
英国银行模数检查库
Requires
- php: ^5.6 || ^7.2 || ^8.0
- webmozart/assert: ^1.2.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.4
- phpunit/phpunit: ^5.4.3 || ^8.5 || ^9
- sebastian/comparator: ^1.2.3 || ^2 || ^3 || ^4
- symfony/polyfill-php70: ^1.3.0
Suggests
- michaelc/intdiv-compat: Provides intdiv() which is needed if you use the modulus algorithms yourself.
- symfony/polyfill-php70: Provides intdiv() which is needed if you use the modulus algorithms yourself.
- v1.15.0
- v1.14.0
- v1.13.0
- v1.12.0
- v1.11.0
- v1.10.0
- v1.9.0
- v1.8.0
- v1.7.0
- v1.6.0
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.0
- dev-master / 1.0.x-dev
- v1.0.0
- v1.0.0-beta3
- v1.0.0-beta2
- v1.0.0-beta1
- dev-dependabot/composer/vendor-bin/phpstan/phpstan/phpstan-1.11.10
- dev-dependabot/composer/vendor-bin/cs/friendsofphp/php-cs-fixer-3.61.1
- dev-php7
This package is auto-updated.
Last update: 2024-09-08 15:11:12 UTC
README
此PHP库允许您检查英国银行账户信息的有效性。为此,它使用公开信息和VocaLink发布的规范。
请注意,此库不能告诉您账户号码和银行代码是否与活动账户相关联,它只能告诉您它们可能分配给账户。它也不涵盖所有银行代码,其中一些超出规范,除非已知,否则您应假定这些详情是有效的。
用法
基础知识
此库提供了一个简单的类,通过BankModulus类执行银行账户验证和规范化。
默认情况下,BankModulus类将使用VocaLink发布的当前模数规范,默认规范工厂将根据日期选择正确的规范。
-
normalize(string &$sortCode, string &$accountNumber)此功能根据某些银行发布的规则对银行代码和账户号码进行规范化。例如,6位账户号码将填充两个零。
规范化结果将赋值回输入参数。
-
check(string $sortCode, string $accountNumber) : boolean这是确定提供的详细信息是否无效的主要方法,如果银行代码和账户号码无效,则返回
false,否则返回true。如果提供的详细信息在语法上有效但超出规范,则此方法认为它们是有效的。 -
lookup(string $sortCode, string $accountNumber) : Result使用此方法获取关于银行代码和账户号码的更多详细信息。有关更多信息,请参阅
Result类的文档。 -
__construct(SpecFactoryInterface $specFactory, NormalizerInterface $normalizer)您可以在构造时更改要使用的规范工厂和规范化器,否则将使用默认值。
-
示例
<?php use Cs278\BankModulus\BankModulus; $modulus = new BankModulus(); $modulus->check('08-16-32', '12481632'); $sortCode = '12-24-48'; $accountNumber = '123456'; $modulus->normalize($sortCode, $accountNumber); var_dump($sortCode, $accountNumber); // string(6) "122448" // string(8) "00123456"
Result类
Result类提供了关于验证和规范化结果的详细信息。
-
getSortCode() : SortCode返回一个表示规范化银行代码的
SortCode对象。 -
getAccountNumber() : string返回规范化账户号码的字符串。
-
isValidated() : boolean返回一个布尔值,如果银行代码和账户号码可以使用规范进行验证,则为真。
-
isValid($assume = true) : boolean返回一个布尔值,表示模数验证的结果。如果银行代码和账户号码无法验证,则返回
$assume参数的值。
规范工厂
默认规范工厂(Spec\DefaultSpecFactory)选择当前时间最合适的规范。
如果您需要检查特定时间点的银行代码和账户号码的有效性,可以使用withDate(\DateTimeInterface|string $date): self方法来重载当前使用的时间参考。如果您为此方法提供一个对象,它将将其转换为Europe/London的日期,字符串日期将按原样使用。
异常
如果发生意外情况,此库将抛出实现Exception\Exception的异常。
-
Exception\AccountNumberInvalidException提供的账户号码不是一个由8个数字组成的字符串。
-
Exception\CannotValidateException当
Spec\SpecInterface的实例无法确定详细信息是否正确,因为它们超出规范时,会抛出此异常。 -
异常\SortCodeInvalidException提供的排序码不是由6个数字组成的字符串。
模算法
目前,该库实现了3种类似的算法来执行模运算,这些算法在VocaLink规范中定义。
-
标准模运算(
Mod10/Mod11)将排序码和账户号码中的每个数字与相应的权重值相乘,将结果相加,然后根据所使用的算法除以
10或11。余数为0表示输入有效。 -
双重交替(
DblAl)将排序码和账户号码中的每个数字与相应的权重值相乘,然后将每个结果分成数字并相加(例如,
24变为2+4)。然后将结果相加并除以10,余数为0再次表明成功。