Page History
A Postai LuhnA Posta-féle Luhn ellenőrző összeggel ellátott érték (HungarianPostLuhnCdvValue) entitás egy értéket és a hozzá tartozó ellenőrző összeget tartalmazza.
Adattag | Típus | Magyarázat | Kötelező | Megszorítások |
---|---|---|---|---|
value | int | Befizetőazonosító | Igen * |
|
cdv | int | A Befizetőazonosító alapján Luhn-képlettel számított ellenőrzőszám. | Igen * | Meg kell egyeznie a value értékéből számított cdv értékével. |
valueWithCdv | int | A Befizetőazonosító, majd az utolsó számjegye a Luhn-képlettel számított ellenőrzőszám. | Igen * | Az utolsó számjegyének meg kell egyeznie az előtte található számsor Luhn-féle ellenőrzőösszeggel számított ellenőrzőszámmal. |
...
Info | ||
---|---|---|
| ||
A value és cdv adattag akkor, és csak akkor hagyható el, ha a valueWithCdv adattag megadásra került. Amennyiben a value és cdv adattag megadásra került, a valueWithCdv adattag kötelezően elhagyandó. |
A CDV készítés algoritmusának szöveges leírása
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
class LuhnCdvChecker { private $value; private $cdv; public function __construct($value, $cdv) { $this->value = $value; $this->cdv = $cdv; } public function isCdvCorrect() { return $this->calculateCdv() == $this->cdv; } public function calculateCdv() { $sum = 0; $j = 1; $valueAsString = (string) $this->value; for ($i = $this->getValueLength() - 1; $i > -1; $i--) { if ($j % 2 != 0) { $result = $valueAsString[$i] * 2; } else { $result = $valueAsString[$i]; } foreach(str_split($result) as $digit) { $sum += $digit; } $j++; } $modulo = $sum % 10; return $sum % 10; } |
Példa
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<payerIdentifier> <value>123</value> <cdv>2</cdv> </payerIdentifier>$modulo == 0 ? 0 : 10 - ($modulo); } public function getValueLength() { return strlen($this->value); } } $checker = new LuhnCdvChecker("9012028684", 5); echo 'CDV: ' . $checker->calculateCdv() . "\n"; // CDV: 5 echo 'Is correct: ' . ($checker->isCdvCorrect() ? 'true' : 'false') . "\n"; // Is correct: true |
Példa
Overview
Content Tools