fatihtuzlu/qnbfinansbankapi

QNB Finansbank E-Fatura ve E-Arşiv PHP Api

dev-master 2022-07-29 10:44 UTC

This package is auto-updated.

Last update: 2024-09-29 06:14:54 UTC


README

E-Fatura / E-Arşiv
QNB Finansbank

QNB Finansbank E-Fatura ve E-Arşiv PHP Api

Latest Stable Version Total Downloads License

使用此库,您可以编写PHP代码来处理E-Arşiv和E-Fatura通知操作。

此包是为了供他人贡献而设计的,您可以fork并修改它。

文档(QNB FinansBank)

要访问文档文件,请点击这里。

安装

 composer require fatihtuzlu/qnbfinansbankapi

在项目中使用

    <?php     
    include('vendor/autoload.php');

支持的方法

- E-Fatura

  • setEFatura() : 可以进行E-Fatura通知操作。
  • getFaturaNo() : 根据门户中最后发送的发票号码生成下一个发票号码。
  • getEfaturaKullanicisi() : 提供有关相关个人是否为E-Fatura纳税人的信息。
  • gidenBelgeDurumSorgula() : 可以查询您的已发送发票的状态。
  • gidenBelgeleriListele() : 可以列出已发送的发票。
  • gelenBelgeleriListele() : 可以列出收到的发票。

- E-Arşiv

  • setEArsiv() : 可以进行E-Arşiv通知操作。
  • getFaturaNo() : 根据门户中最后发送的发票号码生成下一个发票号码。
  • getFaturaSorgula() : 这是显示发票详情的服务。返回发票的PDF/HTML信息和详情。
  • callFaturaIptalEt() : 这是取消发票的服务。

准备通知数据(UBL)

- 准备起始数据

对于E-Fatura和E-Arşiv,需要准备共同的数据。以下代码展示了如何创建起始数据,然后添加信息以获取最终数据输出。然后,您可以将此数据发送到E-Arşiv或E-Fatura。

    <?php     
    
    $data = new \EFINANS\Component\data();
    
     /* otomaik benzersiz UUID oluşturur. */
    $uuid=$data->getUuid();
    
    $veri = array(
        "ID" => "",
        "ProfileID" => "",
        "UUID" => $uuid,
        "IssueDate" => "",
        "IssueTime" => "",
    );
    
    /* hazırlanan başlangıç datasını set ediyoruz */
    $data->setStartData($veri);

参数

- 添加注释信息

我们为每个注释进行设置。请参阅文档了解注释。

    <?php     
    
    $veri = array(
            "ID" => 1, /* not benzersiz id si */
            "Value" => "", /* not tu buraya yazınız */
    );
    $data->setAddNote($veri);

示例

    // e faturada zorunluluk yoktur. e arşiv için zorunlu olduğundan aşağıdaki notu eklemeniz yeterlidir.
    <?php     
    
    $veri = array(
            "ID" => 1,
            "Value" => "Gönderim Şekli: ELEKTRONIK",
    );
    $data->setAddNote($veri);

参数

- 添加卖方和买方信息

您需要在'Customer'内部写下买方信息并执行相同的设置操作,同时将下面的'Supplier'部分进行替换并设置。

    <?php     
    
      $veri = array(
        "Party" => array(
            "WebsiteURI" => "",
            "PartyIdentificationID" => "",
            "PartyName" => "",
            "Telephone" => "",
            "Telefax" => "",
            "ElectronicMail" => "",
            "PartyTaxSchemeName" => "",
        ),
        "PostalAddress" => array(
            "StreetName" => "",
            "BuildingNumber" => "",
            "CitySubdivisionName" => "",
            "CityName" => "",
            "PostalZone" => "",
            "CountryName" => "Türkiye",
        ),
    );    
    $data->setSupplierCustomerParty('Supplier', $veri);

参数

- 添加卖方和买方人员信息

'Customer'必须设置,因为当TC身份证号是必填项时。对于供应商不是必需的,但您可以输入。

    <?php     
    
       $veri = array(
          "FirstName" => "",
          "FamilyName" => "",
       );
              
       $data->setPerson('Customer', $veri);

参数

- 输入支付条件

信息注释不是必需的。

    <?php     
    
        $veri = array(
           "Note" => "Ziraat Bankası",
           "PaymentDueDate" => "2020-07-30",
       );
       $data->setPaymentTerms($veri);

参数

- 输入发票行

这一步需要对每一行重复此操作或在一个循环中设置所有发票行。

    <?php     
            
    $veri = array(
        "ID" => "", 
        "InvoicedQuantity" => "",
        "LineExtensionAmount" => "",
        "BaseAmount" => 0,
        "TaxAmount" => 0,
        "TaxSubtotal" => array(
            0 => array(
                "TaxableAmount" => 0,
                "TaxAmount" => 0,
                "Percent" => 0,
                "TaxSchemeName" => "KDV",
                "TaxSchemeTaxTypeCode" => "0015",
            ), 
            1 => array(
                "TaxableAmount" => 0,
                "TaxAmount" => 0,
                "Percent" => 0,
                "TaxSchemeName" => "Özel İletişim Vergisi",
                "TaxSchemeTaxTypeCode" => "4080",
            ),
        ),
        "ItemName" => "",
        "PriceAmount" => 0,
    );
    
    $data->setInvoiceLine($veri);

参数

- 获取最终数据

这一步将自动计算发票行中的金额总和和税额总和,并获取要发送到E-Arşiv和E-Fatura的数据的最终状态,即XML之前的数组数据的最终状态,并将其存储在一个变量中,然后我们可以进入通知阶段。

    <?php  
       
    $qnb_data = $data->setTotals()->getData();

服务连接操作

为了连接到Web服务,我们需要定义TEST或LIVE环境的用户名和密码。这些信息由QNB FinansBank提供。您可以发送邮件并获取这些信息。

    <?php  
    
    $config = new \EFINANS\Config\config();
    
    $options=$config->setUsername("CANLI_VEYA_TEST_USERNAME")
    ->setpassword("CANLI_VEYA_TEST_USERNAME")
    ->setvergiTcKimlikNo("CANLI_VEYA_TEST_VERGI_KIMLIKNO")
    ->setUrl("CANLI_VEYA_TEST_URL")
    ->getConfig();

参数

测试URL

E-Fatura 操作

为了进行E-Fatura通知操作,我们调用类并开始设置操作。

    <?php  
    
    $efatura = new \EFINANS\Libraries\efatura();
    
    $belgeNo=uniqid();
    
    $return= $efatura->setConfig($options)
    ->setStart()
    ->setBelgeNo($belgeNo)
    ->setData($qnb_data)
    ->setEFatura();
    
    print $return->belgeOid; /* e faturadan bildirim sonrası dönen key */

请求参数

响应参数

E-Arşiv 操作

为了进行E-Arşiv通知操作,我们调用类并开始设置操作。

    <?php  
    
    $earsiv = new \EFINANS\Libraries\earsiv();
    
    $return= $earsiv->setConfig($options)
    ->setStart()
    ->setSube("DFLT")
    ->setKasa("DFLT")
    ->setData($qnb_data)
    ->setEArsiv();    

    print '<pre>'; /* düzgün çıktı görseli için */
    print_r($return);

请求参数

响应参数

E-Fatura和E-Arşiv附加方法

根据需要,您可以针对E-Fatura或E-Arşiv使用附加方法。

- E-Fatura

  • getFaturaNo() : 根据门户中最后发送的发票号码生成下一个发票号码。

使用getFaturaNo()方法生成E-Fatura号码时,将返回的值存储在$ID变量中,并在将起始数据发送到我们的系统中时,系统将自动接受我们发送的发票号码,而不是系统生成的发票号码。

    <?php      
    
     $efatura = new \EFINANS\Libraries\efatura();
                
     $ID= $efatura->setConfig($options)
     ->setStart()
     ->getFaturaNo("BASLANGIC_SERI_NO") ; 

参数

  • getEfaturaKullanicisi() : 提供有关相关个人是否为E-Fatura纳税人的信息。

我们使用getEfaturaKullanicisi()方法来检测准备的数据是应该发送到E-Fatura还是E-Arşiv。如果返回值是(true或1),则表示是e发票纳税人,我们准备的数据将被发送到E-Fatura。否则,可以发送到E-Arşiv。

    <?php      
    
     $efatura = new \EFINANS\Libraries\efatura();
                
     $return= $efatura->setConfig($options)
     ->setStart()
     ->getEfaturaKullanicisi("VERGI_VEYA_TC_KIMLIK_NO") ; 

参数

- E-Arşiv

  • getFaturaNo():每次调用时,自动产生的最新e档案发票号码会自动增加计数器。

为了生成E-Arşiv编号,我们将getFaturaNo()方法返回的值存储在$ID变量中,并在发送给起始数据时,它不会自动接受我们发送的发票号码。由于是E-Arşiv,每次执行都会生成一个新的号码。

    <?php      
    
    $earsiv = new \EFINANS\Libraries\earsiv();
                
     $ID= $earsiv->setConfig($options)
     ->setStart()
     ->setUuid($data->getUuid())
     ->getFaturaNo("BASLANGIC_SERI_NO");

参数

自动通知处理(正在准备中..)

如果您希望自动检测E-Fatura或E-Arşiv发送并将其通过单个类发送,可以使用以下方法。

支持

如果您认为找到了一个错误,请使用GitHub问题跟踪器进行报告,或者更好的方法是,分叉库并发送拉取请求。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件