muhittingulap/qnbfinansbank

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

v1.2.0 2020-07-08 11:03 UTC

This package is auto-updated.

Last update: 2024-09-16 09:04:25 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编写的,专门为QNB Finansbank的web服务,可进行E-Arşiv和E-Fatura的通告操作。

文档(QNB FinansBank)

要访问文档文件,请点击此处。

安装

$ composer require muhittingulap/qnbfinansbank

在项目中使用

    <?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身份证号码是必须的。对于'Supplier'不是必须的,但您可以输入。

    <?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之前的array数据,并将它们存储在一个变量中,然后我们可以进入通告阶段。

    <?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() 方法返回的值赋给 $ID 变量,并将其发送到起始数据时,不会自动接受我们发送的发票号,而是接受我们发送的发票号。

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

参数

  • getEfaturaKullanicisi() : 获取相关信息人员是否为E-Fatura纳税人。

为了确定准备的数据是发送给 E-Fatura 还是 E-Arşiv,我们使用 getEfaturaKullanicisi() 方法进行检查。如果返回值为 (true 或 1),则表示是 e-fatura 纳税人,这意味着准备的数据将被发送到 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-档案发票号。

使用 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 issue tracker 进行报告,或者更好的方法是,分支库并提交拉取请求。

许可证

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