🧾 Fatura
Fatih Kadir Akın'ın hazırlamış olduğu fatura paketinin PHP dili ile yazılmış versiyonudur.
Bu paketeFatura 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.
Kullanıcı Adı ve Parola Bilgileri
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.
Kurulum
composer require aad/fatura
Kullanım
Service sınıfının constructor ına konfigürasyon bilgilerini vererek kullanabilirsiniz.
Örnek fatura bilgileri ve servis ayarları
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"
];
createInvoiceAndGetDownloadURL
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]);
createInvoiceAndGetHTML
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]);
Diğer Kullanım Örnekleri
getToken
eFatura Portal'ını kullanabileceğiniz token
'ı döner.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$token = $service->getToken();
createDraftInvoice
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);
findDraftInvoice
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.
signDraftInvoice
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
)
)
getDownloadURL
İ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);
getInvoiceHTML
İ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);
cancelDraftInvoice
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);
setUuid
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');
getAllInvoicesByDateRange
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);
getRecipientDataByTaxIDOrTRID
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);
sendSignSMSCode / verifySignSMSCode
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);
getUserData
Firma bilgilerini getirmek için aşağıdaki metodu kullanabilirsiniz.
use AAD\Fatura\Service;
$service = new Service($ayarlar);
$firma_bilgileri = $service->getUserData();
updateUserData
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.
Lisans
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.