Bu paket Fatih Kadir Akın'ın hazırlamış olduğu fatura paketinin PHP dili ile yazılmış versiyonudur.
eFatura sistemi üzerinde fatura oluşturmanızı sağlar.
Bu sistem https://earsivportal.efatura.gov.tr/ adresini kullanarak bu sistem üzerinden fatura oluşturmanızı sağlar.
Bu sistem GİB'e tabi şahış şirketi ya da şirket hesapları ile çalışır ve bu kişilikler adına resmi fatura oluşturur. Kesilen faturaları https://earsivportal.efatura.gov.tr/ adresinden görüntüleyebilir ya da bu kütüphane ile indirebilirsiniz.
https://earsivportal.efatura.gov.tr/intragiris.html adresindeki parola ekranında kullanılan kullanıcı kodu ve parola ile bu paketi kullanabilirsiniz. ℹ️ Bu kullanıcı kodu ve parola bilgilerini muhasebecinizden ya da GİB - İnteraktif Vergi Dairesi'nden edinebilirsiniz.
composer require aad/fatura
Service sınıfının constructor ına konfigürasyon bilgilerini vererek kullanabilirsiniz.
Aşağıdaki şekilde fatura detaylarını kullanacağınız metoda parametre olarak verip faturanın bu bilgiler ile oluşmasını sağlayabilirsiniz. Bu bilgiler anlatılan örneklerde kullanılacaktır.
$fatura_detaylari = [
'date' => "08/02/2020",
'time' => "15:03:00",
'taxIDOrTRID' => "11111111111",
'taxOffice' => "Cankaya",
'title' => "ADEM ALI'DEN FKA'YA SELAMLAR",
'name' => "",
'surname' => "",
'fullAddress' => "X Sok. Y Cad. No: 3 Z T",
'items' => [
[
'name' => "Ornek",
'quantity' => 1,
'unitPrice' => 0.01,
'price' => 0.01,
'VATRate' => 18,
'VATAmount' => 0.0
]
],
'totalVAT' => 0.0,
'grandTotal' => 0.01,
'grandTotalInclVAT' => 0.01,
'paymentTotal' => 0.01
];
Aşağıda servis ayarlarına ilişkin olması gereken bilgiler örnek olarak belirtilmiştir.
base_url
veservice_type
bilgileri gönderilmediği durumda e-arşiv portalı test ortam bilgileri baz alınacaktır. Bu bilgiler anlatılan örneklerde kullanılacaktır.
$ayarlar = [
'username' => 'GIB Kullanıcı Adı',
'password' => 'GIB Kullanıcı Parolası',
'base_url' => "https://earsivportal.efatura.gov.tr",
"service_type" => "prod"
];
Bu metod imzalanmış faturayı oluşturur ve indirme adresi döner.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$fatura_url = $service->createInvoiceAndGetDownloadURL(['invoice_details' => $fatura_detaylari]);
Bu metod imzalanmış faturayı oluşturur ve fatura çıktısını HTML formatta döner. Bu HTML'i iframe
içerisinde gösterip yazdırılmasını sağlayabilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$fatura_html = $service->createInvoiceAndGetHTML(['invoice_details' => $fatura_detaylari]);
eFatura Portal'ını kullanabileceğiniz token
'ı döner.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$token = $service->getToken();
eFatura.gov.tr'de fatura direkt oluşmaz. Önce Taslak fatura oluşturmak gerekir. createDraftInvoice size taslak bir fatura oluşturacaktır. $fatura_detaylari
değişkeninde olması gereken bilgiler kullanım
başlığı altında belirtilmiştir.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$taslak = $service->createDraftInvoice($fatura_detaylari);
Taslak olarak oluşturulan her fatura içerisinde uuid
ve date
bilgisi yer alır. Bu metod aracılığı ile belirtilen tarih aralığındaki taslak faturalar aranır. Arama sonuçlarında belirtilen uuid
yi içeren fatura bilgisi var ise detaylarını döner. Şayet belirtilen uuid
ve date
bilgileriyle eşleşen bir taslak fatura bulunamaz ise boş array
döner.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$bulunan_taslak = $service->findDraftInvoice(['date' => 'Taslak durumdaki faturanın tarihi', 'uuid' => 'Taslak durumdaki faturanın uuid bilgisi']);
Belirtilen
uuid
vedate
bilgisi ile eşleşen kayıt sonucu aşağıdaki şekilde dönmektedir.
Array
(
[belgeNumarasi] => GIB2020000000430
[aliciVknTckn] => 11111111111
[aliciUnvanAdSoyad] =>
[belgeTarihi] => 08-02-2020
[belgeTuru] => FATURA
[onayDurumu] => Onaylanmadı
[ettn] => Fatura uuid
)
Dönen bilgiler arasındaki GIB Belge Numarası (
ettn
) bilgisi taslak durumdaki faturanınimzalanması
için kullanılacaktır.
☢️ Fatura imzalama faturanın kesilmesi işlemidir ve vergi sisteminde mali veri oluşturur. Bu nedenle dikkatli kullanınız.
findDraftInvoice()
metodundan dönen bilgi doğrudan signDraftInvoice()
metoduna parametre olarak verilip imzalanması sağlanabilir.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$bulunan_taslak = $service->findDraftInvoice(['date' => 'Fatura tarihi', 'uuid' => 'Fatura uuid']);
$imzalanmis_fatura = $service->signDraftInvoice($bulunan_taslak);
İmzalama işleminin başarılı olması durumunda aşağıdaki şekilde yanıt dönmektedir.
Array
(
[data] => İmzalama işlemi başarı ile tamamlandı.
[metadata] => Array
(
[optime] => 20200208175608+0300
)
)
İmzalanmış faturanın indirme bağlantısını bu metod aracılığı ile oluşturabilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$fatura_url = $service->getDownloadURL('Fatura uuid');
Henüz imzalanmamış bir faturanın indirme bağlantısına erişmek için getDownloadURL
metodunun ikinci parametresine false
değerini gönderebilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$fatura_url = $service->getDownloadURL('Fatura uuid', false);
İmzalanmış faturanın HTML çıktısını bu metod aracılığı ile oluşturabilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$fatura_html = $service->getInvoiceHTML('Fatura uuid');
Henüz imzalanmamış bir faturanın HTML çıktısını oluşturmak için getInvoiceHTML
metodunun ikinci parametresine false
değerini gönderebilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$fatura_html = $service->getInvoiceHTML('Fatura uuid', false);
Taslak durumdaki faturanın iptalini bu metod ile gerçekleştirebilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$fatura_html = $service->getInvoiceHTML('İptal sebebi', $bulunan_taslak);
Fatura işlemlerinde özelleştirilmiş uuid
tanımlamak için bu metodu kullanabilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$service->setUuid('590e1a3e-4aaf-11ea-b085-8434976ef848');
Belirttiğiniz tarih aralığına göre taslak durumdaki faturaları listelemek için bu metodu kullanabilirsiniz.
use AAD\Fatura\Service;
$baslangic_tarihi = "08/02/2020";
$bitis_tarihi = "11/02/2020";
$service = new Service($ayarlar);
$taslak_faturalar = $service->getAllInvoicesByDateRange($baslangic_tarihi, $bitis_tarihi);
T.C. kimlik numarası veya vergi numarası ile ünvan, ad, soyad ve vergi dairesi bilgilerini öğrenmek için aşağıdaki metodu kullanabilirsiniz.
use AAD\Fatura\Service;
$tckn_veya_vkn = "";
$service = new Service($ayarlar);
$bilgiler = $service->getRecipientDataByTaxIDOrTRID($tckn_veya_vkn);
SMS dogrulama işlemini başlatmak için aşağıdaki metodu kullanabilirsiniz.
Bu işlemin sonucunda dönecek olan
oid
bilgisi doğrulama adımında kullanılacaktır.
use AAD\Fatura\Service;
$telefon_numarasi = ""; // SMS doğrulama işleminin yapılacağı telefon numarası
$service = new Service($ayarlar);
$sms = $service->sendSignSMSCode($telefon_numarasi);
SMS dogrulama işlemini başlatmak için aşağıdaki metodu kullanabilirsiniz.
use AAD\Fatura\Service;
$dogrulama_kodu = ""; // Belirttiğiniz numaraya sms olarak gönderilmiş olan kod
$takip_numarasi = ""; // sendSignSMSCode metodu araciligi ile baslatmis oldugunuz islem sonucunda donen `oid` bilgisi
$service = new Service($ayarlar);
$sms = $service->verifySignSMSCode($telefon_numarasi, $takip_numarasi);
Firma bilgilerini getirmek için aşağıdaki metodu kullanabilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$firma_bilgileri = $service->getUserData();
Firma bilgilerini güncellemek için aşağıdaki metodu kullanabilirsiniz.
$firma_bilgileri
array i içerisinde getUserData metodundan dönen bilgiler yer almalıdır. Güncellemek istediğiniz bilgiyi array içerisinden değiştirek updateUserData metoduna parametre olarak verebilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$sonuc = $service->updateUserData($firma_bilgileri);
Kullanım örneklerine examples/index.php dosyasından da erişebilirsiniz.
MIT
☢️ BU PAKET VERGİYE TABİ OLAN MALİ VERİ OLUŞTURUR. BU PAKET NEDENİYLE OLUŞABİLECEK SORUNLARDAN BU PAKET SORUMLU TUTULAMAZ, RİSK KULLANANA AİTTİR. RİSKLİ GÖRÜYORSANIZ KULLANMAYINIZ.