deniz / fatura
国家税务局 eFatura.gov.tr 发票生成器
Requires
- php: ^7.3|^8
- kwn/number-to-words: ^1.9
- ramsey/uuid: ^2.8
Requires (Dev)
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2024-09-26 20:08:19 UTC
README
本包是 Fatih Kadir Akın 制作的 fatura 包的 PHP 语言版本。
在 eFatura 系统上创建发票。
本系统通过 https://earsivportal.efatura.gov.tr/ 地址创建发票。
本系统与 GİB 相关的 个人公司 或 公司 账户一起工作,并为这些实体创建正式发票。您可以从 https://earsivportal.efatura.gov.tr/ 地址查看或下载生成的发票。
用户名和密码信息
https://earsivportal.efatura.gov.tr/intragiris.html 地址的密码屏幕上使用的用户代码和密码可以用于此包。ℹ️ 您可以从您的会计人员或 GİB - 互动税务局 获取这些 用户代码和密码。
安装
composer require aad/fatura
使用
通过向 Service 类的构造函数提供配置信息来使用。
示例发票信息和服务设置
您可以通过将发票详细信息作为参数传递给使用的方法,并使用这些信息来创建发票。
$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 ];
以下列出的是与服务设置相关的信息示例。如果未发送
base_url
和service_type
信息,则将使用电子档案门户测试环境信息。以下示例中使用这些信息。
$ayarlar = [ 'username' => 'GIB Kullanıcı Adı', 'password' => 'GIB Kullanıcı Parolası', 'base_url' => "https://earsivportal.efatura.gov.tr", "service_type" => "prod" ];
createInvoiceAndGetDownloadURL
此方法创建已签名的发票并返回下载地址。
use AAD\Fatura\Service; $service = new Service($ayarlar); $fatura_url = $service->createInvoiceAndGetDownloadURL(['invoice_details' => $fatura_detaylari]);
createInvoiceAndGetHTML
此方法创建已签名的发票并以 HTML 格式返回发票输出。您可以通过在 iframe
中显示并打印此 HTML 来实现。
use AAD\Fatura\Service; $service = new Service($ayarlar); $fatura_html = $service->createInvoiceAndGetHTML(['invoice_details' => $fatura_detaylari]);
其他使用示例
getToken
返回您可以使用以使用 eFatura Portal 的 token
。
use AAD\Fatura\Service; $service = new Service($ayarlar); $token = $service->getToken();
createDraftInvoice
eFatura.gov.tr 中不会直接创建发票。首先需要创建草稿发票。createDraftInvoice 将为您创建一个草稿发票。在 使用
标题下已指定 $fatura_detaylari
变量中应有的信息。
use AAD\Fatura\Service; $service = new Service($ayarlar); $taslak = $service->createDraftInvoice($fatura_detaylari);
findDraftInvoice
每个作为草稿创建的发票中都会包含 uuid
和 date
信息。此方法通过指定日期范围查找草稿发票。如果搜索结果中包含包含指定 uuid
的发票信息,则返回详细信息。如果没有找到与指定的 uuid
和 date
匹配的草稿发票,则返回空 array
。
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']);
与指定的
uuid
和date
匹配的记录结果如下所示。
Array
(
[belgeNumarasi] => GIB2020000000430
[aliciVknTckn] => 11111111111
[aliciUnvanAdSoyad] =>
[belgeTarihi] => 08-02-2020
[belgeTuru] => FATURA
[onayDurumu] => Onaylanmadı
[ettn] => Fatura uuid
)
返回信息中的 GİB 文件编号 (
ettn
) 将用于草稿发票的imzalanması
。
signDraftInvoice
☢️ 发票签署是开票操作,并在税务系统中创建财务数据。因此,请谨慎使用。
您可以直接将 findDraftInvoice()
方法返回的信息作为参数传递给 signDraftInvoice()
方法以进行签署。
use AAD\Fatura\Service; $service = new Service($ayarlar); $bulunan_taslak = $service->findDraftInvoice(['date' => 'Fatura tarihi', 'uuid' => 'Fatura uuid']); $imzalanmis_fatura = $service->signDraftInvoice($bulunan_taslak);
签署操作成功时,以下方式返回响应。
Array
(
[data] => İmzalama işlemi başarı ile tamamlandı.
[metadata] => Array
(
[optime] => 20200208175608+0300
)
)
getDownloadURL
您可以通过此方法使用来创建已签署发票的下载链接。
use AAD\Fatura\Service; $service = new Service($ayarlar); $fatura_url = $service->getDownloadURL('Fatura uuid');
要访问尚未签署的发票的下载链接,请将 getDownloadURL
方法的第二个参数发送为 false
。
use AAD\Fatura\Service; $service = new Service($ayarlar); $fatura_url = $service->getDownloadURL('Fatura uuid', false);
getInvoiceHTML
您可以通过此方法创建已签署发票的HTML输出。
use AAD\Fatura\Service; $service = new Service($ayarlar); $fatura_html = $service->getInvoiceHTML('Fatura uuid');
要创建尚未签署的发票的HTML输出,请将getInvoiceHTML
方法的第二个参数设置为false
。
use AAD\Fatura\Service; $service = new Service($ayarlar); $fatura_html = $service->getInvoiceHTML('Fatura uuid', false);
cancelDraftInvoice
您可以使用此方法取消处于草稿状态的发票。
use AAD\Fatura\Service; $service = new Service($ayarlar); $fatura_html = $service->getInvoiceHTML('İptal sebebi', $bulunan_taslak);
setUuid
要为发票操作定义自定义的uuid
,可以使用此方法。
use AAD\Fatura\Service; $service = new Service($ayarlar); $service->setUuid('590e1a3e-4aaf-11ea-b085-8434976ef848');
getAllInvoicesByDateRange
要按指定日期范围列出处于草稿状态的发票,可以使用此方法。
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.身份证号码或税务识别号的公司名称、姓名、姓氏和税务机关信息,可以使用以下方法。
use AAD\Fatura\Service; $tckn_veya_vkn = ""; $service = new Service($ayarlar); $bilgiler = $service->getRecipientDataByTaxIDOrTRID($tckn_veya_vkn);
sendSignSMSCode / verifySignSMSCode
要启动SMS验证操作,请使用以下方法。
此操作返回的
oid
信息将在验证步骤中使用。
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验证操作,请使用以下方法。
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
要获取公司信息,请使用以下方法。
use AAD\Fatura\Service; $service = new Service($ayarlar); $firma_bilgileri = $service->getUserData();
updateUserData
要更新公司信息,请使用以下方法。
$firma_bilgileri
数组应包含getUserData
方法返回的信息。您可以通过从数组中更改要更新的信息,然后将更改后的数组作为参数传递给updateUserData
方法。
use AAD\Fatura\Service; $service = new Service($ayarlar); $sonuc = $service->updateUserData($firma_bilgileri);
您还可以从
examples/index.php
文件中获取使用示例。
许可证
MIT
☢️ 本包生成需缴税的财务数据。本包不承担因使用本包而产生的问题责任,风险由使用者承担。如果您认为存在风险,请勿使用。