Burak KADILAR | Yazılım Uzmanı

Burak KADILAR | Yazılım Uzmanı

Backend Developer | Bursa Yazılım Uzmanı

Vkn Sorgulama PHP Gib Vergi Kimlik No

Vkn Sorgulama PHP ile API kullanımı

Git hesabımdan kodu indirebilirsiniz :

https://github.com/bkadilar/php-gib-vkn-vd-api

( PHP ) Vergi Kimlik Numarası doğrulama ile ilgili bir ihtiyacım doğdu ve böyle bir servis olmadığını farkettim, oturup baştan yazdık. Sizin de ihtiyacınız olursa diye paylaşıyorum. CodeIgniter & ActiveRecord ‘da yazılmış kodu paylaşacağım, kendinize göre değiştirebilirsiniz.

JSON dosyasını indirmek için tıklayın

Öncelikle vergi dairelerini çekeceğiniz JSON dosyasını indirip dizininize atmanız gerekmektedir.

Not: Vkn Sorgulama PHP, Bu örnekte sadece VKN ile işlem yapılmıştır. Dilerseniz TC Kimlik No ile de sorgulama yapabilirsiniz bu kodlar üzerinden ( Bkz. array içindeki tckn1 )

Edevlet Class (Model) (Edevlet.php)

<?php
class Edevlet extends ActiveRecord\Model
{

    public static function new_token() {

        
            $data_string="assoscmd=cfsession&rtype=json&fskey=intvrg.fix.session&fuserid=INTVRG_FIX&";


            try {

                $ch = curl_init('https://ivd.gib.gov.tr/tvd_server/assos-login');                                           
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
                curl_setopt($ch, CURLOPT_TIMEOUT, 10); //timeout in seconds                                                                      
                curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
                    'Content-Type: application/x-www-form-urlencoded',                                                                                
                    'Content-Length: ' . strlen($data_string))                                                                       
                );
                $result = curl_exec($ch);
                $datas=json_decode($result,false);
                if($result->error!=1 && $result!=null) {
                    return $datas;
                } else {
                    throw new Exception('Hata');
                }

            } catch (Exception $e) {
                $return= array(
                    'status'=>'error',
                    'message'=>$e->getMessage()
                );
                return (object)$return; 
            }
            
    }


    public static function vkn_sorgu($vkn,$vd,$il) {
        $token = Edevlet::new_token();
        if($token->status=='error') {
            $return= array(
                'status'=>'error',
                'message'=>$token->message
            );
            return (object)$return; 
        }
        $jp=json_encode(array(
            "dogrulama"=>array(
                "vkn1"=>$vkn,
                "tckn1"=>"",
                "iller"=>$il,
                "vergidaireleri"=>$vd
            )
        ));
        $data_string="cmd=vergiNoIslemleri_vergiNumarasiSorgulama&callid=ff81dd010b12d-8&pageName=R_INTVRG_INTVD_VERGINO_DOGRULAMA&token=".$token->token."&jp=".$jp;

        try {
            $ch = curl_init('https://ivd.gib.gov.tr/tvd_server/dispatch');                                           
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
            curl_setopt($ch, CURLOPT_TIMEOUT, 10); //timeout in seconds                                                                      
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
                'Content-Type: application/x-www-form-urlencoded',                                                                                
                'Content-Length: ' . strlen($data_string))                                                                       
            );
            $result = curl_exec($ch);
            if($result!='' && $result!=null) {
                $datas=json_decode($result,false);
                return $datas;
            } else {
                throw new Exception('Hata');
            }
            
        } catch (Exception $e) {
            $return= array(
                'status'=>'error',
                'message'=>$e->getMessage()
            );
            return $return; 
        }
        
    }

}

helper.php

function getSehirler($kod=false) {
//Şehirleri çekeceğimiz fonksiyon ( Select için kullanabilirsiniz )
    $sehir = array(
        '1' =>'Adana',
        '2' =>'Adıyaman',
        '3' =>'Afyonkarahisar',
        '4' =>'Ağrı',
        '5' =>'Amasya',
        '6' =>'Ankara',
        '7' =>'Antalya',
        '8' =>'Artvin',
        '9' =>'Aydın',
        '10' =>'Balıkesir',
        '11' =>'Bilecik',
        '12' =>'Bingöl',
        '13' =>'Bitlis',
        '14' =>'Bolu',
        '15' =>'Burdur',
        '16' =>'Bursa',
        '17' =>'Çanakkale',
        '18' =>'Çankırı',
        '19' =>'Çorum',
        '20' =>'Denizli',
        '21' =>'Diyarbakır',
        '22' =>'Edirne',
        '23' =>'Elâzığ',
        '24' =>'Erzincan',
        '25' =>'Erzurum',
        '26' =>'Eskişehir',
        '27' =>'Gaziantep',
        '28' =>'Giresun',
        '29' =>'Gümüşhane',
        '30' =>'Hakkari',
        '31' =>'Hatay',
        '32' =>'Isparta',
        '33' =>'Mersin',
        '34' =>'İstanbul',
        '35' =>'İzmir',
        '36' =>'Kars',
        '37' =>'Kastamonu',
        '38' =>'Kayseri',
        '39' =>'Kırklareli',
        '40' =>'Kırşehir',
        '41' =>'Kocaeli',
        '42' =>'Konya',
        '43' =>'Kütahya',
        '44' =>'Malatya',
        '45' =>'Manisa',
        '46' =>'Kahramanmaraş',
        '47' =>'Mardin',
        '48' =>'Muğla',
        '49' =>'Muş',
        '50' =>'Nevşehir',
        '51' =>'Niğde',
        '52' =>'Ordu',
        '53' =>'Rize',
        '54' =>'Sakarya',
        '55' =>'Samsun',
        '56' =>'Siirt',
        '57' =>'Sinop',
        '58' =>'Sivas',
        '59' =>'Tekirdağ',
        '60' =>'Tokat',
        '61' =>'Trabzon',
        '62' =>'Tunceli',
        '63' =>'Şanlıurfa',
        '64' =>'Uşak',
        '65' =>'Van',
        '66' =>'Yozgat',
        '67' =>'Zonguldak',
        '68' =>'Aksaray',
        '69' =>'Bayburt',
        '70' =>'Karaman',
        '71' =>'Kırıkkale',
        '72' =>'Batman',
        '73' =>'Şırnak',
        '74' =>'Bartın',
        '75' =>'Ardahan',
        '76' =>'Iğdır',
        '77' =>'Yalova',
        '78' =>'Karabük',
        '79' =>'Kilis',
        '80' =>'Osmaniye',
        '81' =>'Düzce',
        );

    if($kod!=false) {
        return $sehir[sprintf("%03s", $kod)];
    } else {
        return $sehir;
    }
}




function getVergiDaireleri($kod=false,$inKod=false) {
    
//Verdiğim json içinden arama yapıyoruz.
$vd=json_decode(file_get_contents(base_url("files/vergidaireleri.json")),TRUE);
    if($kod!=false) {
        if($inKod!=false) {
            foreach($vd[$kod] as $vdz) {
                if($vdz['kod']==$inKod) {
                    return $vdz['vdadi'];
                }
            }
        } else {
            return $vd[sprintf("%03s", $kod)];
        }
    } else {

    }
}

//Edevlet model ine gidip api ye çıkacağımız fonksiyon olarak kullanabilirsiniz.
function getVergiDetail($vkn,$vd,$il) {
    $vknSorgu=Edevlet::vkn_sorgu($vkn,$vd,$il);
    return $vknSorgu;
}


/* 
Örnek :
$vergiSorgula = getVergiDetail('1231231231','002260','042');
var_dump($vergi);
*/

8 Comments

  1. Cihan

    Selamlar, öncelikle çok teşekkürler. Tam ihtiyacım olan şeydi fakat ne denediysem “servis parametreleri hatalı” uyarısı alıyorum. Neden olabilir acaba ? :/

    Reply
    1. Burak KADILAR

      Merhaba,
      buradan kodunuzun doğruluğunu teyit edebilirsiniz. Sistem sorunsuz çalışıyor. Git hesabımda curl yerine file_get_content olarak da paylaşıldı.

      Muhtemelen token i alamıyorsunuz. Bu yüzden parametre hatası alıyorsunuz

      Reply
  2. Suleyman A.

    Merhaba, güzel bir çalışma olmuş, emeğinize sağlık. Bu sorgulamayı yaparken GİB üzerinde bir token bağlantı veya üyelik vs. açmak gerekiyor mu? Direk web sayfasından mı sorguluyor? Tam anlamadım.

    Reply
  3. Koray YILDIRIM

    Selam değerli Burak kardeşim.
    Yazılım ile uğraşıyorum fakat PHP bilgim hiç yok. C# ile uygulama yapıyorum. Bu göstermiş olduğun örneğin C# ile örneği varmı veya nasıl yapmalıyım bu konuda yardımcı olursan çok sevinirim. Teşekkür ederim. Sağlıklı günler dilerim

    Reply

DROP A COMMENT

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir