fatihtuzlu / qnbfinansbankapi
QNB Finansbank E-Fatura ve E-Arşiv PHP Api
Requires
- php: ^8.1
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
使用此库,您可以编写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-Arşiv : https://earsivtest.efinans.com.tr/earsiv/ws/EarsivWebService?wsdl
- E-Fatura : https://erpefaturatest.cs.com.tr:8443/efatura/ws/connectorService?wsdl
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)。有关更多信息,请参阅许可证文件。