aad / fatura
GİB eFatura.gov.tr 发票生成器
Requires
- php: ^7.3|^8
- kwn/number-to-words: ^1.9
- ramsey/uuid: ~3.8.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2023-04-26 19:42:29 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 - Interactive Tax Office 获取这些 用户代码和密码。
安装
composer require aad/fatura
使用
通过向服务类的构造函数提供配置信息来使用它。
示例发票信息和服务设置
以下示例说明了如何将发票详细信息作为方法参数传递,以使用这些信息创建发票。以下示例中将使用这些信息。
$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
信息,则将使用 e-archiving portal 测试环境信息。以下示例中将使用这些信息。
$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
)
返回的信息中包含的 GIB 文件编号 (
ettn
) 信息将用于草稿发票的签名
。
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
☢️ 此软件包创建应纳税的财务数据。 因此,由此软件包引起的问题,本软件包不承担责任,风险由使用者承担。如果您认为有风险,请不要使用。