Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

A Postai Luhn-féle ellenőrző összeggel ellátott érték (HungarianPostLuhnCdvValue) entitás egy értéket és a hozzá tartozó ellenőrző összeget tartalmazza.

AdattagTípusMagyarázatKö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.

IgenMeg kell egyeznie a value értékéből számított cdv értékével.

 

A cdv készítés algoritmusának szöveges leírása és példakódja

1. lépés: Minden második számjegyet, a jobb első számjeggyel kezdődően 2-vel szorozzuk meg.

2.lépés: az 1. lépésben kapott eredmény minden egyes számjegyét annak az eredeti számjegynek az
összegéhez kell hozzáadni, amely az 1. lépésben nem volt semmilyen művelet tárgya.

3.lépés: a 2. lépésben kapott eredményt az első "0"-val végződő közvetlenül következő nagyobb számból
le kell vonni.
Ha a 2. lépésben kapott szám végén "0" áll, akkor az ellenőrző számjegy "0".

 

Példa: ellenőrző számjegy nélküli ügyfélazonosító = 9012028684

1. lépés9012028684
műveletjel x x x x x
szorzószám 2 2 2 2 2
           
EREDMÉNY 0 4 4 12 8
           
2. lépés9+0+1+4+0+4+8+1+2+8+8
ÖSSZESEN=45         
3. lépés          
EREDMÉNY50-45=5       

ELLENŐRZŐ SZÁMJEGY: 5


CDV kód ellenőrzése
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++;
    }
    return $sum % 10;
}

 

 

forrás: https://www.posta.hu/static/internet/download/PUSZ_16_4_melleklet_20150901.pdf

Példa

<payerIdentifier>
    <value>123</value>
    <cdv>2</cdv>
</payerIdentifier>

 

 

  • No labels