Ελεγχος Εγκυρότητας Α.Φ.Μ. (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, αλλά ήταν απαραίτητο αφού προοριζόταν για χρήση σε ιστοσελίδα…

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

  1. Δημοσθένης

    Δοκίμασα το 000000000 και περνάει τον έλεγχο που δίνεις σε μια σελίδα php.
    Πως γίνεται αυτό;

    1. dvassil Συντάκτης

      To 000000000 έχει την απαιτούμενη μορφή και το checksum ταιριάζει, άρα είναι «τυπικά» έγκυρο.
      Αν αυτό που σε ενδιαφέρει είναι να σου απαντάει εάν είναι κάποιο αφμ που έχει αποδοθεί σε κάποιο φυσικό ή νομικό πρόσωπο, αυτό δεν το κάνει.

  2. 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;
    }
    
    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;
      }

Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s