Lexware-php-api: Unterschied zwischen den Versionen

Aus Baebeca Solutions GmbH - Wiki
Zur Navigation springen Zur Suche springen
Slutz (Diskussion | Beiträge)
Slutz (Diskussion | Beiträge)
Zeile 41: Zeile 41:
Einstellungen :: Erweiterungen :: lexoffice Public API :: "Schlüssel neu erstellen"
Einstellungen :: Erweiterungen :: lexoffice Public API :: "Schlüssel neu erstellen"


= Technische Dokumentation =
= Klasse einbinden =
 
== Klasse einbinden ==
  // include the class file, check the correct folder
  // include the class file, check the correct folder
  require_once (__DIR__.'/lexoffice-php-api.php');
  require_once (__DIR__.'/lexoffice-php-api.php');
Zeile 50: Zeile 48:
  $lexoffice = new lexoffice_client(array('api_key' => 'xyz'));
  $lexoffice = new lexoffice_client(array('api_key' => 'xyz'));
      
      
=== Start Parameter ===
== Start Parameter ==
;api_key [string]
;api_key [string]
:API Schlüssel
:API Schlüssel
Zeile 58: Zeile 56:
:Soll die SSL verbindung zu Lexoffice validiert werden
:Soll die SSL verbindung zu Lexoffice validiert werden
      
      
== Methoden ==
= Methoden =


=== Rechnungen ===
== Rechnungen ==


==== Rechnung abfragen ====
=== Rechnung abfragen ===
  $lexoffice->get_invoice( string $uuid ) : array
  $lexoffice->get_invoice( string $uuid ) : array
;uuid
;uuid
:Die eindeutige uuid des Eintrages der abgefragt werden soll
:Die eindeutige uuid des Eintrages der abgefragt werden soll


==== Alle Rechnungen abfragen ====
=== Alle Rechnungen abfragen ===
  $lexoffice->get_invoices_all() : array
  $lexoffice->get_invoices_all() : array


==== Rechnung PDF herunterladen ====
=== Rechnung PDF herunterladen ===
  $lexoffice->get_invoice_pdf( string $uuid, string $filename) : bool
  $lexoffice->get_invoice_pdf( string $uuid, string $filename) : bool
;uuid
;uuid
Zeile 77: Zeile 75:
:Der lokale Dateiname an dem das PDF abgelegt werden soll   
:Der lokale Dateiname an dem das PDF abgelegt werden soll   


==== Rechnung anlegen ====
=== Rechnung anlegen ===
  $lexoffice->create_invoice( array $data [, bool $finalized = false ] ) : array
  $lexoffice->create_invoice( array $data [, bool $finalized = false ] ) : array
;data
;data
Zeile 129: Zeile 127:
: Entscheidet ob die Rechnung fertiggestellt werden soll.
: Entscheidet ob die Rechnung fertiggestellt werden soll.


=== Kontakte ===
== Kontakte ==


==== Kontakt abfragen ====
=== Kontakt abfragen ===
  $lexoffice->get_contact( string $uuid ) : array
  $lexoffice->get_contact( string $uuid ) : array
;uuid
;uuid
:Die eindeutige uuid des Eintrages der abgefragt werden soll
:Die eindeutige uuid des Eintrages der abgefragt werden soll
    
    
==== Alle Kontakte abfragen ====
=== Alle Kontakte abfragen ===
  $lexoffice->get_contacts_all() : array
  $lexoffice->get_contacts_all() : array
      
      
==== Kontakt aktualisieren ====
=== Kontakt aktualisieren ===
  $lexoffice->update_contact( string $uuid, array $data) : array
  $lexoffice->update_contact( string $uuid, array $data) : array
;uuid
;uuid
Zeile 145: Zeile 143:
;data
;data
:Ein Array der Rechnungsdaten nach der nötigen [https://developers.lexoffice.io/docs/#contact-properties Lexoffice Formatierung]   
:Ein Array der Rechnungsdaten nach der nötigen [https://developers.lexoffice.io/docs/#contact-properties Lexoffice Formatierung]   
   
 
=== Events / Webhooks ===
== Events / Webhooks ==
      
      
==== Event anlegen ====
=== Event anlegen ===
  $lexoffice->create_event( string $event [, bool $callback = false ] ) : array|bool
  $lexoffice->create_event( string $event [, bool $callback = false ] ) : array|bool
;event
;event
Zeile 155: Zeile 153:
:Die Callback URL für diesen Aufruf. Wenn keine angegeben wird, wird die Standard URL aus der initialisierung genutzt.   
:Die Callback URL für diesen Aufruf. Wenn keine angegeben wird, wird die Standard URL aus der initialisierung genutzt.   
    
    
==== Aktives Event abfragen ====
=== Aktives Event abfragen ===
  $lexoffice->get_event( string $uuid ) : array
  $lexoffice->get_event( string $uuid ) : array
;uuid
;uuid
:Die eindeutige uuid des Eintrages der abgefragt werden soll
:Die eindeutige uuid des Eintrages der abgefragt werden soll


==== Alle aktiven Events abfragen ====
=== Alle aktiven Events abfragen ===
  $lexoffice->get_events_all() : array
  $lexoffice->get_events_all() : array


== Error Handling ==
= Error Handling =
Alle Methoden sollten stets in einem try/catch Block verwendet werden.<br>
Alle Methoden sollten stets in einem try/catch Block verwendet werden.<br>
Unser Client bietet eine erweiterte Execption Klasse, die via "$e->get_error()" sofern vorhanden weitere Details zur Anfrage und dem API Response zurück gibt.
Unser Client bietet eine erweiterte Execption Klasse, die via "$e->get_error()" sofern vorhanden weitere Details zur Anfrage und dem API Response zurück gibt.

Version vom 20. November 2019, 21:30 Uhr

Übersicht & Informationen

PHP Client für Lexoffice REST API

Wir lieben Automatisierung und die nahtlose Verzahnung von Systemen!

Lexoffice stellt seinen Kunden eine öffentliche API-Schnittstelle zur Verfügung über die bestehende Systeme integriert oder Prozesse automatisiert werden können. Für diesen Ansatz haben wir einen PHP-Client entwickelt und stellen diesen kostenfrei zur Verfügung.

Alle weiteren Informationen finden Sie auf unserer Projektseite.

Baebeca Solutions bei lexoffice.de

Die offizielle Lexoffice API-Dokumentation finden Sie unter https://developers.lexoffice.io/docs/.

Lizenz

Unsere Software wurde unter der "GNU Affero General Public License v3.0" Lizenz veröffentlicht. Dies bedeutet, dass Sie unsere Software gerne in Ihren Projekten und Produkten nutzen dürfen, solange Sie Ihr Projekt dann ebenso Quelloffen unter den in der Lizenz genannten Rahmenbedingungen zur Verfügung stellen.

Wenn Sie Ihre Lösung nicht veröffentlichen möchten, Support benötigen, individuelle Erweiterungen benötigen oder dieses Projekt einfach Unterstützen möchten, können Sie für einmalig 99,- netto eine Lizenz zur Nutzung erhalten. Setzten Sie sich diesbezüglich einfach mit uns in Verbindung.

Support

An wen kann ich mich wenden, wenn ich Probleme oder Fragen habe? Für diese Frage ist entscheiden ob Sie eine Nutzungslizenz für unsere lexoffice API erworben haben oder die kostenlose Variante nutzen.

  • Nutzungslizenz vorhanden
    • Sie können sich jederzeit per Mail an support@baebeca.de wenden und erhalten vorrangigen Support.
  • Kostenlose Version
    • Auf Github einen issue erstellen.

Lexoffice API Account erstellen

Erstellen Sie in Ihrem Lexoffice Account einen API Key.

Einstellungen :: Erweiterungen :: lexoffice Public API :: "Schlüssel neu erstellen"

Klasse einbinden

// include the class file, check the correct folder
require_once (__DIR__.'/lexoffice-php-api.php');
   
// initiate client with your settings
$lexoffice = new lexoffice_client(array('api_key' => 'xyz'));
   

Start Parameter

api_key [string]
API Schlüssel
callback [string]
Ihre Standard Callback URL für Webhooks von Lexoffice
ssl_verify [bool] (default true)
Soll die SSL verbindung zu Lexoffice validiert werden

Methoden

Rechnungen

Rechnung abfragen

$lexoffice->get_invoice( string $uuid ) : array
uuid
Die eindeutige uuid des Eintrages der abgefragt werden soll

Alle Rechnungen abfragen

$lexoffice->get_invoices_all() : array

Rechnung PDF herunterladen

$lexoffice->get_invoice_pdf( string $uuid, string $filename) : bool
uuid
Die eindeutige uuid des Eintrages der abgefragt werden soll
filename
Der lokale Dateiname an dem das PDF abgelegt werden soll

Rechnung anlegen

$lexoffice->create_invoice( array $data [, bool $finalized = false ] ) : array
data
Ein Array der Rechnungsdaten nach der nötigen [Lexoffice Formatierung](https://developers.lexoffice.io/docs/#invoices-properties)
Beispiel
array(
    'voucherDate' => substr(date('c'), 0, 19).'.000'.substr(date('c'), 19),
    'introduction' => 'Einleitungstext',
    'remark' => "Fußzeile\r\nMehrzeilig",
    'address' => array(
    	#'contactId' => '<id>',
    	'name' => 'Frau Jane Doe',
    	'street' => 'Str. 1',
    	'zip' => '12345',
    	'city' => 'Stadt',
    	'countryCode' => 'DE',
     ),
     'lineItems' => array(
     	array(
      		'type' => 'custom',
      		'name' => 'Produktname',
      		'description' => 'Beschreibung',
      		'quantity' => 1,
      		'unitName' => 'Stück',
      		'unitPrice' => array(
      			'currency' => 'EUR',
      			'netAmount' => 10.99,
          		'taxRatePercentage' => 19,
      		),
      		#'discountPercentage' => 0,
      	),
     ),
     'totalPrice' => array(
      	'currency' => 'EUR',
      	#'totalDiscountAbsolute' => 0,
      	#'totalDiscountPercentage' => 0,
     ),
     'taxConditions' => array(
     	'taxType' => 'net',
     ),
     'shippingConditions' => array(
     	'shippingDate' => date('Y-m-d').'T00:00:01.000+02:00',
     	'shippingType' => 'delivery',
     ),
     'paymentConditions' => array(
     	'paymentTermLabel' => 'Vorkasse',
     	'paymentTermDuration' => 1,
     ),
   )
finalized
Entscheidet ob die Rechnung fertiggestellt werden soll.

Kontakte

Kontakt abfragen

$lexoffice->get_contact( string $uuid ) : array
uuid
Die eindeutige uuid des Eintrages der abgefragt werden soll

Alle Kontakte abfragen

$lexoffice->get_contacts_all() : array
   

Kontakt aktualisieren

$lexoffice->update_contact( string $uuid, array $data) : array
uuid
Die eindeutige uuid des Eintrages der abgefragt werden soll
data
Ein Array der Rechnungsdaten nach der nötigen Lexoffice Formatierung

Events / Webhooks

Event anlegen

$lexoffice->create_event( string $event [, bool $callback = false ] ) : array|bool
event
Mögliche sind alle von Lexoffice angebotenen Events.
callback
Die Callback URL für diesen Aufruf. Wenn keine angegeben wird, wird die Standard URL aus der initialisierung genutzt.

Aktives Event abfragen

$lexoffice->get_event( string $uuid ) : array
uuid
Die eindeutige uuid des Eintrages der abgefragt werden soll

Alle aktiven Events abfragen

$lexoffice->get_events_all() : array

Error Handling

Alle Methoden sollten stets in einem try/catch Block verwendet werden.
Unser Client bietet eine erweiterte Execption Klasse, die via "$e->get_error()" sofern vorhanden weitere Details zur Anfrage und dem API Response zurück gibt.

Beispiel: Versuch eines PDF Downloads von einer nicht fertig gestellten Rechnung

try {
   $lexoffice->get_invoice_pdf('7f0f0f7f-dd61-4bf7-a9f7-a67b0530c7e9', 'test.pdf');
} catch (lexoffice_exception $e) {
   echo $e->getMessage();
   // lexoffice-php-api: error in api request - check details via $e->get_error()

   print_r($e->get_error());
   /*
   Array (
       [HTTP Status] => 500
       [Requested URI] => https://api.lexoffice.io/v1/invoices/7f0f0f7f-dd61-4bf7-a9f7-a67b0530c7e9/document
       [Requested Payload] => 
       [Response] => stdClass Object
          (
               [timestamp] => 2019-11-20T17:34:53.360+01:00
               [status] => 500
               [error] => Internal Server Error
               [path] => /v1/invoices/7f0f0f7f-dd61-4bf7-a9f7-a67b0530c7e9/document
               [traceId] => f9f241666675
               [message] => A technical error has occurred that is not specified in more detail.
           )
   )
   */
}