定制 deniz/fatura 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

deniz/fatura

Composer 安装命令:

composer require deniz/fatura

包简介

GİB eFatura.gov.tr Fatura Oluşturucu

README 文档

README

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.

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 ve service_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 ve date 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ın imzalanması için kullanılacaktır.

signDraftInvoice

☢️ 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
        )

)

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.

deniz/fatura 适用场景与选型建议

deniz/fatura 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 10 月 26 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「efatura」 「fatura」 「earsiv」 「giv」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 deniz/fatura 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 deniz/fatura 我们能提供哪些服务?
定制开发 / 二次开发

基于 deniz/fatura 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 4
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 12
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 32
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-10-26