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
Recuperare storico 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' => 'fetchLogs',
'date_from' => '2020-01-01',
'date_to' => '2020-01-31'
]);
Esempio 6
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 7
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