Ελεγχος Εγκυρότητας Α.Φ.Μ. (PHP Version)

Απλώς για να υπάρχει διαθέσιμο σε όποιον το χρειαστεί, η php version του κώδικα που υπάρχει στο άρθρο Ελεγχος Εγκυρότητας Α.Φ.Μ.

<?php
    function CheckAFM($afm)
    {
        if (!preg_match('/^(EL){0,1}[0-9]{9}$/i', $afm))
            return false;
        if (strlen($afm) > 9)
            $afm = substr($afm, 2);

        $remainder = 0;
        $sum = 0;

        for ($nn = 2, $k = 7, $sum = 0; $k >= 0; $k--, $nn += $nn)
            $sum += $nn * ($afm[$k]);
        $remainder = $sum % 11;

        return ($remainder == 10) ? $afm[8] == '0'
                                  : $afm[8] == $remainder;
    }
?>

Εχει μερικές μικροδιαφορές από τις C, C# Versions, αλλά ήταν απαραίτητο αφού προοριζόταν για χρήση σε ιστοσελίδα…

2 thoughts on “Ελεγχος Εγκυρότητας Α.Φ.Μ. (PHP Version)

  1. dvassil

    Επίσης Θα μπορούσε να χρησιμοποιηθεί κάποιο από τα web services για να ελεγχθεί αν το ΑΦΜ ανήκει σε κάποιο νομικό (ή και φυσκό) πρόσωπο.
    Για παράδειγμα (στα ελληνικά ΑΦΜ)

    function checkVAT($vatNo)
    {
        $client = new SoapClient(
            "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"
        );
        $result = $client->checkVat(array('countryCode'=>'EL','vatNumber'=>$vatNo));
        return $result->valid;
    }
    
    Reply
    1. Ιωαννης Σαραντοπουλος

      Καλησπέρα φίλε μου,

      Μπορείς να βάλεις τον έλεγχο μέσα σε try catch, για να μην πέφτει το σύστημα σε περίπτωση σφάλματος:

      $client = new SoapClient(“http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl”);
      try{
      $params = array(‘countryCode’ => ‘EL’, ‘vatNumber’ => $vatNo);
      $r = $client->checkVat($params);
      } catch(SoapFault $e) {
      echo $e->faultstring;
      exit;
      }

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

4 × = 4