deniz/fatura

国家税务局 eFatura.gov.tr 发票生成器

v0.0.1 2021-06-01 16:20 UTC

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_urlservice_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

每个作为草稿创建的发票中都会包含 uuiddate 信息。此方法通过指定日期范围查找草稿发票。如果搜索结果中包含包含指定 uuid 的发票信息,则返回详细信息。如果没有找到与指定的 uuiddate 匹配的草稿发票,则返回空 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']);

与指定的 uuiddate 匹配的记录结果如下所示。

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

☢️ 本包生成需缴税的财务数据。本包不承担因使用本包而产生的问题责任,风险由使用者承担。如果您认为存在风险,请勿使用。