aad/fatura

此包已 弃用 且不再维护。未建议替代包。

GİB eFatura.gov.tr 发票生成器

v0.0.2 2021-10-26 16:21 UTC

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

每个作为草稿创建的发票中都会包含 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
)

返回的信息中包含的 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

☢️ 此软件包创建应纳税的财务数据。 因此,由此软件包引起的问题,本软件包不承担责任,风险由使用者承担。如果您认为有风险,请不要使用。