×

home

Esempio client API via POST in php

/*
 * Per richieste di tipo GET:
 * $api->get('?manage=ricerca&sub=findUsers');
 * 
 * Per richieste di tipo POST:
 * $api->post('?manage=ricerca&sub=findUsers', ['term' => 'gerp']);
*/

$api = new GerpApi('', '', '');

class GerpApi
{
    private $username;
    private $password;
    private $host;

    /**
     * Inizializza l'oggetto per l'API con le credenziali e l'host
     * 
     * @param string $username il nome utente.
     * @param string $password la password.
     * @param string $host l'host al quale verranno effettuate le
     * richieste.
     */
    public function __construct($username, $password, $host)
    {
        $this->username = $username;
        $this->password = $password;

        $this->host = rtrim($host, '/') . '/';
    }

    /**
     * Effettua una richiesta di tipo GET
     * 
     * @param string $url l'URL al quale effettuare la richiesta.
     */
    public function get($url)
    {
        echo $this->request('get', $url);
        die;
    }

    /**
     * Effettua una richiesta di tipo POST
     * 
     * @param string $url l'URL al quale effettuare la richiesta.
     * @param array $options i parametri da passare tramite POST.
     */
    public function post($url, $options = [])
    {
        echo $this->request('post', $url, $options);
        die;
    }

    private function request($type, $url, $options = [])
    {
        $type = strtolower($type);

        if ($type !== 'get' && $type !== 'post') {
            throw new Exception('Il tipo di richiesta deve essere o "get" o "post", "' . $type . '" fornito.');
        }

        $params = [];
        $url_components = parse_url($url);

        if (!isset($url_components['query'])) {
            throw new Exception ('I parametri nell\'URL devono iniziare con il punto di domanda ("?"). Es.: "?manage=ricerca".');
        }

        parse_str($url_components['query'], $params);

        if (!isset($params['view']) || $params['view'] !== 'json') {
            $params['view'] = 'json';
        }

        $url = $this->host . 'index.php?' . http_build_query($params);

        $data = [
            'auth_username' => $this->username,
            'auth_secret' => $this->password
        ];

        if (!empty($options)) {
            $data = array_merge($data, $options);
        }

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_TIMEOUT, 30);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

        if ($response = curl_exec($curl)) {
            curl_close ($curl);
            return $response;
        }

        throw new Exception ('Errore nella comunicazione con "' . $url . '".');
    }
}

 

Esempio 1

Recuperare informazioni su un listino di vendita

$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/');

echo $api->post('?manage=web-shopper', [
    'id_listino' => 'codice_listino'
]);

 

Descrizione del tracciato
cod_articolo: codice del prodotto
variante: codice variante del prodotto
des_variante: descrizione variante del prodotto (formato, colore, ecc)
des_articolo: descrizione breve del prodotto (max 255 caratteri)
prz_vendita: prezzo di vendita del prodotto in euro
q_available_now: quantita' disponibile del prodotto
cod_um: unita' di misura

 

 

Esempio 2

Recuperare i dati di un articolo attraverso il codice

$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/');

echo $api->get('?manage=amm_art&cod_articolo=EB1');

Descrizione del tracciato
cod_articolo: codice dell'articolo

 

 

Esempio 3

Aggiornamento collocazione articolo da codice

$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/');

echo $api->post('?manage=amm_art&sub=api_update', [
    'cod_articolo' => 'EB1',
    'collocazione' => 'COL123'
]);

 

Descrizione del tracciato
cod_articolo: codice dell' articolo da aggiornare
collocazione: codice collocazione da aggiornare

 

 

Esempio 4

Recuperare informazioni da un driver 4.0

$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/');

echo $api->post('?manage=produz&sub=call_connector_function', [
    'cod_risorsa' => 'PRINTER1',
    'func' => 'fetchStatus'
]);

 

 

Esempio 5

Invio parametri ad una macchina tramite driver di collegamento 4.0

$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/');

echo $api->post('?manage=produz&sub=call_connector_function', [
    'cod_risorsa' => 'PRINTER1',
    'func' => 'sendJob',
    'job_name' => '21A0001',
    'quantity' => '15000',
    'format' => '10x35',
    'um' => 'mm'
]);

 

Esempio 6

Caricamento ordine di vendita da JSON tramite API.

$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/');

echo $api->post(
    '?manage=uff_comm2&sub=insertSaleOrderFromJson', [
        'odv' => '{
            "codice_doc_conferma": "98765",
            "data_doc_conferma": "24/05/2022",
            "id_tipo_doc": "201",
            "cliente": {
                "ragione_sociale": "Pinco Pallino S.r.l.s.",
                "titolo_anagrafica": "Sig.",
                "nome_anagrafica": "Pinco",
                "cognome_anagrafica": "Pallino",
                "indirizzo": "Via Rossi, 12",
                "indirizzo2": "Via Verdi, 34",
                "nazione": "IT",
                "cap": "74015",
                "citta": "Martina Franca",
                "provincia": "TA",
                "telefono": "0801234567",
                "fax": "",
                "cellulare": "3331234567",
                "email": "pinco@pallino.it",
                "email2": "pinco@pec.it",
                "cod_sdi": "PNC1PL2",
                "des_contatto": "",
                "web_cliente": "https://www.gerp.it",
                "note": "Note cliente",
                "partita_iva": "16147050815",
                "cod_esterno": "12345",
                "codice_fiscale": "PNCPLN80A01E986R",
                "condizioni": {
                    "cod_pagamento": "",
                    "cod_iban": "IT08A0300203280189532774237",
                    "cod_iva": "",
                    "frequenza_fatturazione": "biweekly"
                }
            },
            "destinazione": {
                "doc_conferma": "98765",
                "data_doc_conferma": "24/05/2022",
                "des_sede": "Sede di esempio",
                "des_indirizzo": "Via della Sede, 56",
                "des_indirizzo2": "",
                "des_localita": "Bari",
                "sig_prov": "BA",
                "cod_cap": "70121",
                "cod_nazione": "IT",
                "tel_destinazione": "0809876543",
                "Note_Spedizione": "Note della spedizione",
                "pre_note_interne": "Note interne",
                "note_consegna": "Note consegna"
            },
            "righe": {
                "0": {
                    "Cod_Art": "ETI1",
                    "Variante": 1,
                    "Quantita": 10,
                    "Prz_Merce": 10,
                    "tipo_riga": "A",
                    "des_riga": "Esempio riga",
                    "note": "Note riga",
                    "perc_sconto": 20,
                    "UM": "PZ"
                }
            }
        }'
    ]
);

Endpoint: ?manage=uff_comm2&sub=insertSaleOrderFromJson

Il server si aspetta una variabile di tipo POST chiamata odv in formato JSON. Questa variabile JSON deve contenere le seguenti proprietà - i campi contrassegnati da * sono obbligatori:

codice_doc_conferma: il numero del documento dell'ordine di vendita secondo una propria codifica

data_doc_conferma: la data del suddetto ordine di vendita nel formato GG/MM/AAAA o GG/MM/AA

*id_tipo_doc: identificativo del tipo di documento da caricare

cliente: vettore contenente i dati del cliente a cui è destinato l'ordine. Se un cliente con una stessa partita IVA o codice fiscale esiste già, lo usa anziché crearne uno nuovo. Nel dettaglio:
        *ragione_sociale: ragione sociale (almeno 3 caratteri)
        titolo_anagrafica: titolo   
        nome_anagrafica: nome
        cognome_anagrafica: cognome
        indirizzo: indirizzo
        indirizzo2: indirizzo secondario
        nazione: codice ISO 3166-1 alpha-2 della nazione. Se la nazione non viene fornita, il default è IT
        cap: CAP
        citta: città
        provincia: provincia
        telefono: numero di telefono
        fax: fax
        cellulare: numero di cellulare
        email: e-mail
        email2: e-mail PEC
        cod_sdi: codice SDI
        web_cliente: sito web
        note: note
        *partita_iva: partita IVA
        *codice_fiscale: codice fiscale
        condizioni: vettore contenente informazioni aggiuntive sul cliente. Nel dettaglio:
                cod_iban: codice IBAN
                cod_iva: identificativo del codice IVA come configurato su GERP (Sistema / Configurazione / Iva - codici)
                cod_pagamento: identificativo del tipo di pagamento come configurato su GERP (Sistema / Configurazione / Pagamenti)
                frequenza_fatturazione: mensile (monthly), bisettimanale (biweekly), settimanale (weekly) o giornaliera (daily)

destinazione: vettore contenente i dati della destinazione dell'ordine di vendita. Se lasciato vuoto, si useranno i dati del cliente. Nel dettaglio:
        doc_conferma: il numero del documento dell'ordine di vendita secondo una propria codifica
        data_doc_conferma: data del suddetto ordine di vendita nel formato GG/MM/AAAA o GG/MM/AA
        des_sede: descrizione del luogo di destinazione
        des_indirizzo: indirizzo
        des_indirizzo2: indirizzo secondario
        des_localita: città
        sig_prov: provincia
        cod_cap: CAP
        cod_nazione: codice ISO 3166-1 alpha-2 della nazione
        tel_destinazione: numero di telefono
        Note_Spedizione: note della spedizione
        pre_note_interne: note interne
        note_consegna: note della consegna

righe: vettore contenente tutte le righe da caricare nell'ordine di vendita. Ognuna di queste righe deve essere strutturata nel modo seguente:
        Cod_Art: codice dell'articolo su GERP
        Variante: numero della variante. Se la variante non viene fornita, il default è 1
        Quantita: quantità
        Prz_Merce: prezzo
        UM: unità di misura. Se l'unità di misura non viene fornita, il default è l'unità di misura impostata attualmente su GERP per l'articolo fornito.
        tipo_riga: il tipo della riga
        des_riga: descrizione
        perc_sconto: percentuale di sconto da applicare
        note: note

API Tester tool

Questo sito prevede l‘utilizzo di cookie. Continuando a navigare si considera accettato il loro utilizzo. Ulteriori informazioni. Accetto i cookie da questo sito