PHP code example of pitwch / rest-api-wrapper-proffix-php

1. Go to this page and download the library: Download pitwch/rest-api-wrapper-proffix-php library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

pitwch / rest-api-wrapper-proffix-php example snippets




use Pitwch\RestAPIWrapperProffix\Client;

// Minimale Initialisierung — options ist optional und kann weggelassen werden
$pxrest = new Client(
    'https://myserver.ch:999', // URL ohne /pxapi/V4/
    'DEMO',                    // Datenbankname
    'USR',                     // Benutzername
    'b62cce2fe18f7a156a9c719c57bebf0478a3d50f0d7bd18d9e8a40be2e663017', // SHA256-Passwort
    'ADR,STU'                  // Benötigte Module (kommagetrennt)
    // options: weggelassen = alle Defaults aktiv
);

// Login passiert automatisch beim ersten Request
$adressen = $pxrest->get('ADR/Adresse', ['limit' => 5]);
print_r($adressen);

new Client(string $url, string $apiDatabase, string $apiUser, string $apiPassword, string|array $apiModules, array $options = [])

// Einzelner Datensatz
$adresse = $pxrest->get('ADR/Adresse/1');
echo $adresse->Name; // DEMO AG

// Mit Filtern und Feldselektion
$adressen = $pxrest->get('ADR/Adresse', [
    'filter' => 'GeaendertAm>d\'2018-05-17 14:54:56\'',
    'depth'  => 1,
    'fields' => 'AdressNr,Name,PLZ,Ort',
    'limit'  => 5,
]);

// Filter: enthält "Max" (PROFFIX @= Operator)
$adressen = $pxrest->get('ADR/Adresse', ['filter' => 'Vorname@="Max"']);
foreach ($adressen as $adresse) {
    echo $adresse->Name . ' ' . $adresse->Vorname . "\n";
}

$data = ['Ort' => 'Zürich', 'PLZ' => 8000, 'EMail' => '[email protected]'];
$neueAdresse = $pxrest->post('ADR/Adresse', $data);

$data = ['AdressNr' => 1, 'Ort' => 'Zürich', 'PLZ' => 8000, 'EMail' => '[email protected]'];
$pxrest->put('ADR/Adresse', $data);

$pxrest->delete('ADR/Adresse/42');

$listeNr = 1029; // ListeNr aus PROFFIX
$pdfResponse = $pxrest->getList($listeNr);

if ($pdfResponse->getCode() === 200) {
    file_put_contents('Adressliste.pdf', $pdfResponse->getBody());
}

// Mit API-Key direkt
$info = $pxrest->info('112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028');

// API-Key aus options['key'] verwenden
$info = $pxrest->info();

$dbInfo = $pxrest->database();

// Artikelnummer mit Leerzeichen → rawurlencode() verwenden
$artikel = 'PC 7';
$bestand = $pxrest->get('LAG/Artikel/' . rawurlencode($artikel) . '/Bestand');

// Beide Varianten sind gleichwertig:
'ADR,STU'           // String mit Komma
['ADR', 'STU']      // Array

// /tmp/ — typisch für Shared-Hosting (Plesk etc.)
$pxrest = new Client('https://myserver.ch:999', 'DEMO', 'USR', 'sha256hash', 'ADR', [
    'cache_dir' => '/tmp/proffix-cache',
]);

// Cross-Platform empfohlen
$pxrest = new Client('https://myserver.ch:999', 'DEMO', 'USR', 'sha256hash', 'ADR', [
    'cache_dir' => sys_get_temp_dir() . '/proffix-cache',
]);

// Innerhalb des Projekts
$pxrest = new Client('https://myserver.ch:999', 'DEMO', 'USR', 'sha256hash', 'ADR', [
    'cache_dir' => __DIR__ . '/cache',
]);

$pxrest = new Client('https://myserver.ch:999', 'DEMO', 'USR', 'sha256hash', 'ADR', [
    'enable_session_caching' => false,
]);

use Pitwch\RestAPIWrapperProffix\HttpClient\HttpClientException;

try {
    $neueAdresse = $pxrest->post('ADR/Adresse', ['Ort' => 'Zürich', 'PLZ' => '', 'Land' => '']);
} catch (HttpClientException $e) {
    echo $e->getMessage();   // "Mindestens ein Feld ist ungültig."
    echo $e->getCode();      // HTTP-Statuscode, z.B. 400

    if ($e->hasFieldErrors()) {
        foreach ($e->getFieldErrors() as $error) {
            echo sprintf("  - %s: %s (Grund: %s)\n", $error['Name'], $error['Message'], $error['Reason']);
        }
        // Oder als formatierte Nachricht:
        echo $e->getDetailedMessage();
    }
}

// Letzter Request
$req = $pxrest->getHttpClient()->getRequest();
$req->getUrl();        // Vollständige URL (string)
$req->getMethod();     // HTTP-Methode (string)
$req->getParameters(); // Query-Parameter (array)
$req->getHeaders();    // HTTP-Header (array)
$req->getBody();       // Request-Body als JSON (string)

// Letzte Response
$res = $pxrest->getHttpClient()->getResponse();
$res->getCode();       // HTTP-Statuscode (int)
$res->getHeaders();    // Response-Header (array)
$res->getBody();       // Response-Body als JSON (string)



use Pitwch\RestAPIWrapperProffix\Client;
use Pitwch\RestAPIWrapperProffix\HttpClient\HttpClientException;

$pxrest = new Client(
    'https://myserver.ch:999',
    'DEMO',
    'USR',
    'b62cce2fe18f7a156a9c719c57bebf0478a3d50f0d7bd18d9e8a40be2e663017',
    'ADR,STU',
    [
        'key'                    => '112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028',
        'verify_ssl'             => true,
        'timeout'                => 15,
        'enable_session_caching' => true,
        'cache_dir'              => sys_get_temp_dir() . '/proffix-cache',
    ]
);

try {
    // GET mit Filter
    $adressen = $pxrest->get('ADR/Adresse', [
        'filter' => 'GeaendertAm>d\'2018-05-17 14:54:56\'',
        'fields' => 'AdressNr,Name,PLZ,Ort',
        'limit'  => 10,
    ]);

    // POST — neue Adresse erstellen
    $neueAdresse = $pxrest->post('ADR/Adresse', [
        'Name' => 'Muster AG',
        'Ort'  => 'Zürich',
        'PLZ'  => 8000,
    ]);

    // PUT — bestehende Adresse aktualisieren
    $pxrest->put('ADR/Adresse', ['AdressNr' => 1, 'Ort' => 'Bern', 'PLZ' => 3000]);

    // DELETE
    $pxrest->delete('ADR/Adresse/42');

    // PDF-Liste generieren
    $pdf = $pxrest->getList(1029);
    file_put_contents('liste.pdf', $pdf->getBody());

} catch (HttpClientException $e) {
    echo $e->getDetailedMessage();
}