barnetik / ticketbai
Generate, sign and submit TicketBAI compatible invoices
Installs: 1 384
Dependents: 1
Suggesters: 0
Security: 0
Stars: 31
Watchers: 11
Forks: 14
Open Issues: 0
Requires
- php: >=7.4 || >=8.0
- endroid/qr-code: ^4.4
- lyquidity/xml-signer: ^1.12
- pburggraf/crc: ^0.8.1
Requires (Dev)
- phpunit/phpunit: ^8.0
README
TicketBai sistema erabiltzeko PHP liburutegia Librería para integrarse con el sistema TicketBai
Egungo Funtzionalitateak / Funcionalidades actuales
- Fakturen, fakturen zuzenketen eta hauen baliogabetzeen TicketBai formatudun XML-a sortu
- Fakturak, fakturen zuzenketak eta hauen baliogabetzeak XaDES motako sinadurarekin sinatu
- Fakturak, fakturen zuzenketak eta hauen baliogabetzeak EAEko hiru diputazioetako zerbitzuetara igorri.
- Bizkaiko kasuan (Batuz), pertsona fisikoentzako 140 modeloa ere badabil hiru kasuetarako (igorketa, zuzenketa eta baliogabetzeak)
- Gipuzkoa eta Arabako Zuzendu zerbitzuarekin integrazioa. Igorritako fakturen aldaketa eta zuzenketak baimentzen dituen zerbitzua. @areinaNubeApp-en ekarpenei esker.
- Generar XML en formato TicketBai de facturas, facturas rectificativas y cancelaciones de factura
- Firmar estos documentos con firma XaDES
- Enviar estos documentos a los servicios de las tres haciendas forales de la CAV.
- En el caso de Bizkaia (Batuz), es posible también emitir, rectificar y cancelar facturas para personas físicas utilizando el modelo 140.
- Integración con el servicio Zuzendu de Araba y Gipuzkoa que permite la subsanación y modificación de facturas emitidas. Gracias a las aportaciones de @areinaNubeApp
Instalazioa / Instalación
composer require barnetik/ticketbai
Erabilgarri dauden JSON dokumentuen definizioak / Definición de los documentos JSON disponibles
Hurrengo helbidean, dokumentuak sortzeko erabili daitezkeen JSON dokumentuen definizioak topatu ahal ditzazkezue:
Podéis encontrar las definiciones de los JSON disponibles para la generación de documentos en el siguiente enlace:
https://barnetik.github.io/tbai-php-lib/
Erabilera adibideak / Ejemplos de uso
Fakturaren sinaketa / Firma de una factura
Adibide moduan erabiltzen dugun JSON fitxategia / JSON usado como ejemplo
use Barnetik\Tbai\Fingerprint\Vendor; use Barnetik\Tbai\PrivateKey; use Barnetik\Tbai\TicketBai; $license = 'LICENCIA_DESARROLLO'; $developerCif = 'CIF'; $appName = 'TBAI PHP APP'; $version = '1.0'; $certificatePath = '/path/to/certificate.p12'; $certificatePassword = 'myCertificatePassword'; // Where we want the signed document to be stored $signedXmlPath = './signed.xml'; $ticketbai = TicketBai::createFromJson( new Vendor($license, $developerCif, $appName, $version), json_decode(file_get_contents('tbai-sample.json'), true) ); $ticketbai->sign( PrivateKey::p12($certificatePath), $certificatePassword, $signedXmlPath );
Faktura bidaltzea / Envío de la factura
// We have an endpoint for each province Araba, Bizkaia or Gipuzkoa use Barnetik\Tbai\Api\Bizkaia\Endpoint as BizkaiaEndpoint; /** * BizkaiaEndpoint(bool $dev = false, bool $debug = false) * For production usage $dev param must be false * $bizkaiaEndpoint = new BizkaiaEndpoint(); */ $bizkaiaEndpoint = new BizkaiaEndpoint(true, true); $result = $bizkaiaEndpoint->submitInvoice( $ticketbai, PrivateKey::p12($certificatePath), $certificatePassword, ); if ($result->isDelivered()) { var_dump('SUCCESS!'); } else { var_dump($result->errorDataRegistry()); var_dump($result->headers()); }
Hurrengo faktura kateatzeko behar den sinadura zatia lortu / Obtener el trozo de firma necesaria para encadenar la próxima factura
$shortSignatureValue = $ticketbai->chainSignatureValue();
QR kodea sortzea / Creación del QR
use Barnetik\Tbai\Qr; /** * Qr(TicketBai $ticketBai, bool $dev = false) * For production usage $dev param must be false * $qr = new Qr($ticketbai); */ $qr = new Qr($ticketbai, true); $qr->savePng('/path/to/qr.png'); // Get the code that must be shown over QR on any invoice $tbaiIdentifier = $qr->ticketbaiIdentifier();