DOCUMENTAZIONE PER INTEGRAZIONE API DAPSIDES EUROLOGISTICA
La presente documentazione permette l'integrazione al nostro webservice in modo da potervi interfacciare al nostro cloud ed al WMS DapSides. Tramite chiamate API REST è possibile creare, gestire ed interrogare gli ordini, i leads ed il vostro inventario.
Login
Viene usata una chiamata GET fornendo utente e password ($user,$pass). Il risultato è in formato json con una variabile token che dovrà essere passata a ogni successiva chiamata. Il token ha una durata di 1 settimana e viene tenuto attivo dalle successive chiamate. In caso di cambio IP il token non avrà più validità.
$user = "vostro utente";
$pass = "vostra password";
$url = "http://62.97.45.44:443/webapp/api/v3/createToken.php/process/".$user."/".$pass;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
$status = array("status" => "error", "msg" => "Errore di Login");
return false;
}else{
$result = curl_exec($ch);
$response = json_decode($result);
curl_close($ch);
$token = $response->csrf_value;
}
Risposta
{
"csrf_name": "XXXXXXXX", (Descrizione)
"csrf_value": "XXXXXXXXXXXXXXXXXXXXXXXXXXX" (token)
}
Crea Ordine
I dati vengono passati all’interno della variabile $data con formato Json.
Campo | Richiesto | Descrizione | Val. |
---|---|---|---|
orderID | * | Numero univoco identificativo dell’ordine | VARCHAR(12) |
customerName | * | Nome destinatario ordine | VARCHAR(30) |
destAddress | * | Indirizzo di destinazione | VARCHAR(50) |
destCity | * | Città di destinazione | VARCHAR(30) |
destAreaCode | * | Provincia di destinazione | VARCHAR(30) |
destPostalCode | * | CAP di destinazione | VARCHAR(10) |
destCountryCode | * | Paese di destinazione | VARCHAR(2) |
destEmail | Indirizzo email destinatario | VARCHAR(30) | |
fl_sms | Flag per utilizzare servizio SMS (0 / 1) | BOOLEAN | |
orderDate | * | Data effettuazione ordine | DATE(Y-m-d) |
deliveryInfo | Commenti utili al corriere per la spedizione | VARCHAR(30) | |
cod | * | (Cash on Delivery) inserire 0 se non viene gestito il contrasseggo (pre-paid o ordine reso), Inserire 1 se l’ordine viene gestito con contrassegno | BOOLEAN |
totalAmount | * | Importo totale ordine (XX.XX) | DECIMAL(10,2) |
orderRowID | * | Indice utilizzato per raggruppare più prodotti in un ordine. Se un ordine comprende più prodotti all’interno di un record json aumentare progressivamente il dato per il numero dei record presenti.
Nelle prime 2 righe abbiamo lo stesso orderID, lo stesso totalAmount ma orderRowID diverso, questo permette al sistema di inserire un ordine con più di un prodotto associato, se l’ordine prevede un ulteriore prodotto allora la riga successiva avrà stesso orderID, stesso total Amount ma orderRowID sarà 3.Nella terza riga abbiamo un ordine con un singolo prodotto.
|
VARCHAR(12) |
productID | * | Codice dentificativo prodotto presente sul cloud | VARCHAR(20) |
productName | * | Nome del prodotto presente sul cloud | VARCHAR(30) |
productQty | * | Quantità del prodotto ordinata | INT(10) |
num_vet | Codice del vettore (stabilito con DAP) | INT(10) |
$url="http://62.97.45.44:443/webapp/api/index.php/insertorder";
$token = "token letto nella procedura di login";
$data = '{"1":{"orderID":"XXXXX","customerName":"XXXXXX","destAddress":"XXXXX","destPostalCode":"XXXXX","destCity":"XXXXXX","destAreaCode":"XX","destCountryCode":"XX","destPhone":"XXXXXXXX", "destEmail":"XXXXXXX","orderDate":"YYYY-MM-DD","deliveryInfo":"Lorem ipsum","cod":XX,"totalAmount":XX.XX,"orderRowID":"X","productID":"XXXX","productName":"XXXXX","productQty":X}}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
}else{
$result = curl_exec($ch);
$response = json_decode( $result );
echo $result;
curl_close($ch);
}
Risposta
{
"status": "success", (Stato inserimento. Possibili valori: success o error)
"message": "Order added successfully.", (Descrizione inserimento. Se errore verrà mostrato il tipo di errore.)
"data": "XXXXX" (Riferimento interno Dap solo se stato = success)
}
Es. Errore
{
"status": "error",
"message": "Duplicate orderID"
}
Modifica Ordine
È possibile modificare un ordine inviato inviando tramite chiamata POST un json contenente le spefiche della testata di un ordine. Se la modifica richiede il cambio anche della riga d'ordine, quindi, anche i prodotti e necessario cancellare l'ordine inviato ed inserire il nuovo ordine corretto. Sono valide tutte le regole definite nella sezione di Inserimento ordine.
N.B. Anche se si desidera cambiare 1 solo campo è necessario inviare tutte le informazioni dell'ordine.
LA FUNZIONE È ABILITATA SOLO ENTRO GLI ORARI STABILITI SECONDO I CUT-OFF
$url="http://62.97.45.44:443/webapp/api/index.php/editOrder";
$token = "Token letto durante la procedura di autenticazione";
$data = '{"1":{"orderID":"XXXXX","customerName":"XXXX","destAddress":"XXXXX","destPostalCode":"XXXXX","destCity":"XXXXX","destAreaCode":"XX","destCountryCode":"XX","destPhone":"XXXXXXXX","destEmail":"XXXXXX","orderDate":"XXXX-XX-XX","deliveryInfo":"XXXXXXXXXXX","cod":X,"totalAmount":"XX.XX","dateOfDelivery":"XXXX-XX-XX"}}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
} else {
$result = curl_exec($ch);
$response = json_decode( $result );
echo $result;
curl_close($ch);
}
Risposta
{
"status": "success",
"message": "Order Edit successfully."
}
Es. Errore
SE FUORI CUT-OFF:
{
"status": "warning",
"message": "This order cannot be modified"
}
OPPURE:
{
"status": "error",
"message": "Edit Failed: missing destAreaCode"
}
Cancella Ordine
L’unico campo significativo è orderID al quale passare l’ID dell’ordine da voler cancellare.
LA FUNZIONE È ABILITATA SOLO ENTRO GLI ORARI STABILITI SECONDO I CUT-OFF
$url= "http://62.97.45.44:443/webapp/api/index.php/deleteorder";
$data = '{"orderID":"NUMERO_ORDINE"}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'delete' );
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
$status = array("status" => "error", "msg" => "Cancellazione ordine fallita");
} else {
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode( $result );
echo $result;
}
Risposta
{
"status": "success",
"message": "Order removed successfully."
}
SE FUORI CUT-OFF:
{
"status": "warning",
"message": "This order cannot be deleted."
}
Get Ultimo Stato
L’unico campo significativo è orderID al quale passare l’ID dell’ordine da voler interrogare.
$url="http://62.97.45.44:443/webapp/api/index.php/getlaststatus";
$token = "token letto nella procedura di login";
$data = '{"orderID":"ID_ORDINE"}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)){
echo curl_errno($ch);
echo curl_error($ch);
$status = array("status" => "error", "msg" => "Spedizione non trovata");
}else{
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode( $result );
echo $result;
}
Elenco stati normalizzati DAP
Status | Descrizione |
---|---|
ABROAD FORWARDED | INOLTRATA ALL'ESTERO |
ABSENT 2 ATTEMPT | ASSENTE AL SECONDO TENTATIVO |
ACCEPTED | SPEDIZIONE INVIATA AL MAGAZZINO ED IN PREPARAZIONE |
DELETED | SPEDIZIONE CANCELLATA |
DELIVERED | SPEDIZIONE CONSEGNATA |
DESTROYED | SPEDIZIONE DISTRUTTA |
ERROR | DATI IN ERRORE |
LOST | SPEDIZIONE PERSA |
ON DELIVERY | SPEDIZIONE IN CONSEGNA |
REFUSED | SPEDIZIONE RIFIUTATA DAL DESTINATARIO |
RETURNED | SPEDIZIONE RESA O IN RESTITUZIONE |
STOLEN | SPEDIZIONE FURTATA |
RECEIVED | SPEDIZIONE RICEVUTA DAI NOSTRI SISTEMI MA NON ANCORA INVIATA IN MAGAZZINO |
OUT OF STOCK | SPEDIZIONE CON MANCANZA DI STOCK IN MAGAZZINO |
Risposta
{
"status": "success",
"message": "Data selected from database",
"data":
[
{
"status": "XXXXXXX", (Stato normalizzato DAP)
"statusDate": "XXXX-XX-XX XX:XX:XX", (Data aggiornamento stato)
"deliveryNote": "XXXXXXXX", (Numero DDT)
"tracking":"https://xxx.XXXX.xx", (Link Tracking)
"ldv": "XXXXXXXXXXXXXXXX", (Lettera di Vettura)
"Courier Status": "XXXXXXXXXXXXXXXXXXXXX", (Stato diretto del corriere)
"giac_code": "X", (Se presente giacenza codice identificativo, altrimenti = 0)
"desc_giac": XXXXXXXXXXXXXXX (Se presente giacenza Descrizione, altrimenti = null)
}
]
}
Crea ordine da confermare
I dati vengono passati all’interno della variabile $data con formato Json secondo gli stessi requisiti evedenziati nella funzione insert order.
$url="http://62.97.45.44:443/webapp/api/index.php/insertorderConfirmation";
$token = "Token letto durante la procedura di autenticazione";
$data = '{"1":{"orderID":"XXXX","customerName":"XXXX","destAddress":"XXXX","destPostalCode":"XXXX","destCity":"XXXX""destCountryCode":"XX""destAreaCode":"XX","destPhone":"XXXXXX","destEmail":"XXXXx@XXXX.it","orderDate":"YYYY-MM-DD""deliveryInfo":"XXXX",","cod":1,"totalAmount":XX.XX"orderRowID":X,"productID":"XXXXX","productName":"XXXXX","productQty":X}}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
} else {
$result = curl_exec($ch);
$response = json_decode( $result );
echo $result;
curl_close($ch);
}
Riposta
Uguale a Inserimento ordine.
Get stato conferma ordine
L’unico campo significativo è orderID al quale passare l’ID dell’ordine da voler interrogare.
$url="http://62.97.45.44:443/webapp/api/index.php/getConfirmedStatus";
$token = "Token letto durante la procedura di autenticazione";
$data = '{"orderID":"XXXXX"}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
$status = array("status" => "error", "msg" => "Ordine non trovato");
} else {
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode( $result );
echo $result;
}
Elenco stati normalizzati DAP
Status | Descrizione |
---|---|
CONFIRMED | ORDINE CONFERMATO |
NEW | ORDINE INSERITO, NON ANCORA LAVORATO |
REFUSED | ORDINE RIFIUTATO |
PENDING | ORDINE IN LAVORAZIONE |
FAKE | ORDINE NON VALIDO |
Risposta
{
"status": "success",
"message": "Data selected from database",
"data": [{
"status": "XXX"
}]
}
Get lista resi
$url="http://62.97.45.44:443/webapp/api/index.php/getloadedreturned";
$token = "Token letto durante la procedura di autenticazione";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
$status = array("status" => "error", "msg" => "Nessun reso trovato");
} else {
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode( $result );
echo $result;
}
Risposta
{
"status":"success",
"message":"Data selected from database",
"data":[
{
"deliveryNote":"DDT00001",
"returndate":"YYYY-MM-DD HH:MM:SS",
"productId":"XXX",
"productId":"XXX",
"expireDate":"XXX",
"batchID:"XXXXXXXXXX",
"productQty":"X",
"status":"OK" // SE OK PRODOTTO RIUTILIZZABILE
},
{
"deliveryNote":"DDT00001",
"returndate":"YYYY-MM-DD HH:MM:SS",
"productId":"XXX",
"expireDate":"XXX",
"batchID:"XXXXXXXXXX",
"productName":"XXXXXXXXXX",
"productQty":"X",
"status":"KO" // SE KO PRODOTTO NON UTILIZZABILE
}
]
}
Get Storico GLS
$token = "token letto nella procedura di login";
$data = '{"deliveryNote":"DDT LETTA CON INTERROGAZIONE ULTIMO STATUS","codvet":"GLS"}';
$url = "http://62.97.45.44:443/webapp/api/index.php/getGLSstorico";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
if (curl_errno($ch)) {
$status = array("status" => "error", "msg" => "Spedizione Non Trovata ".curl_error($ch));
echo json_encode($status);
} else {
$result = curl_exec($ch);
$response = json_decode( $result, true );
curl_close($ch);
}
Risposta
{
"status": "success",
"message": "Status got it successfully.",
"data": {
"ELENCO": [{
"SPEDIZIONE": [{
"NumSped": [{ "_": "XXXXXXXX" }],
"Bda": [{ "_": "XXXXXX" (DDT) }],
"DataPartenza": [{ "_": "XX/XX/XXXX" }],
"SedePartenza": [{ "_": "XX" }],
"LocalitaSedePartenza": [{ "_": "XXX" }],
"Destinatario": [{ "_": "XXXXXXXXXXXXX" }],
"IndirizzoDestinazione": [{ "_": "XXXXXXXXXXXXXXX" }],
"CapDestinatario": [{ "_": "XXXXXX" }],
"CittaDestinazione": [{ "_": "XXXXXXXX" }],
"SedeDestinazione": [{ "_": "XXXXX" }],
"LocalitaSedeDestinazione": [{ "_": "XXXXXXXXX" }],
"ProvinciaSedeDestinazione": [{ "_": "XX" }],
"CapSedeDestinazione": [{ "_": "XXXXX" }],
"IndirizzoSedeDestinazione": [{ "_": "XXXXXXXXXXX" }],
"TelefonoSedeDestinazione": [{ "_": "+XXXXXXXXXXX" }],
"FaxSedeDestinazione": [{ "_": "+XXXXXXXXXX" }],
"StatoSpedizione": [{ "_": "XXXXXX" }],
"DataConsegna": [{ "_": "XX/XX/XXXXX" }],
"Note": [{ "_": "XXXXXXXXXXX" }],
"NumeroColli": [{ "_": "X" }],
"Peso": [{ "_": "XX" }],
"Contrassegno": [{ "_": "XXXX" }],
"TRACKING": [{
"Data": [{ "_": "XX/XX/XX" }, { "_": "XX/XX/XX" }, { "_": "XX/XX/XX" }],
"Ora": [{ "_": "XX:XX" }, { "_": "XX:XX" }, [] ],
"Luogo": [{ "_": "XXXX" }, { "_": "XXXX" }, { "_": "XXX" }],
"Stato": [{ "_": "XXXXXXXX" }, { "_": "XXXXXXXXXXX" }, { "_": "XXXXXXXXXXXXXXXX" }],
"Note": [ [], [], [] ],
"Codice": [{ "_": "XX" }, { "_": "XXX" }, { "_": "XXX" }]
}]
}]
}]
}
}
Svincolo giacenza TIPSA
Per lo svincolo della giacenza in Spagna tramite il corriere TIPSA è possibile utilizzare la seguente funzione. I campi da compilare sono:
deliveryNote -> La bolla univoca identificativa della spedizione (obbligatoria)
solveCode -> Codice da inviare che identifica l'azione da applicare alla spedizione (obbligatoria)
Code | Action | Val |
---|---|---|
9999 | Testo libero. È possibile associare un'azione custom, il testo sarà visibile al corriere che eseguirà quell'azione (es. modifica indirizzo, numero telefonico ecc...) N.B. TESTO LIBERO IN LINGUA SPAGNOLA | |
5 | Ritorno al magazzino. Si indica al corriere di non effettuare più tentativi di consegna e la merce verrà stoccata nuovamente a magazzino. | |
13 | Distruzione della merce. | |
1 | Riconsegna |
solveText -> Testo libero con azione da eseguire per la spedizione. (obbligatorio se solveCode = 9999) N.B. TESTO LIBERO IN LINGUA SPAGNOLA
$token = "token letto nella procedura di login";
$data = '{"deliveryNote":"XXXXXX","solveCode":"XXX","solveText":"XXXXX"}';
$url="XXXXXXXXXXX"; // l'url verrà fornito successivamente
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
}else{
$result = curl_exec($ch);
$response = json_decode( $result );
echo $result;
curl_close($ch);
}
Svincolo giacenza GLS
Per lo svincolo della giacenza tramite il corriere GLS è possibile utilizzare la seguente funzione. I campi da compilare sono:
ldv -> lettera di vettura. È visibile sia nel tracking del corriere o è possibile ottenerla tramite la funzione "getlaststatus" (obbligatoria)
user -> Username GLS fornita da DapSides (obbligatoria)
pwd -> Password GLS fornita da DapSides (obbligatoria)
customerName -> Nome del destinatario (obbligatorio se solveCode = 2)
destAddress -> Indirizzo del destinatario (obbligatorio se solveCode = 2)
destPostalCode -> CAP del destinatario (obbligatorio se solveCode = 2)
destCity -> Città del destinatario (obbligatorio se solveCode = 2)
destAreaCode -> Provincia del destinatario (obbligatorio se solveCode = 2)
destPhone -> Cellulare destinatario
deliveryInfo -> Note spedizione
dateOfDelivery -> Data di riconsegna in formato gg/mm/aaaa
solveCode -> Codice da inviare che identifica l'azione da applicare alla spedizione (obbligatoria)
Codice | Azione |
---|---|
1 | Riconsegnare allo stesso indirizzo |
2 | Consegnare ad altro indirizzo |
3 | Restituire al mittente |
4 | Distruggere |
7 | Il destinatario ritira la merce in sede |
$token = "token letto nella procedura di login";
$data = '{"ldv":"XXXXXX","user":"XXXXXX","pwd":"XXXXX","customerName":"XXXXXXX","destAddress":"XXXXXX","destPostalCode":"XXXX","destCity":"XXXX","destAreaCode":"XX", "destPhone":"XXXXXXX","deliveryInfo":"XXXXX","dateOfDelivery":"XX-XX-XXXX","solveCode":X}';
$url="XXXXXXXXXXX"; // l'url verrà fornito successivamente
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
}else{
$result = curl_exec($ch);
$response = json_decode( $result );
echo $result;
curl_close($ch);
}
Svincolo giacenza GLS Spagna
Per lo svincolo della giacenza tramite il corriere GLS Spagna è possibile utilizzare la seguente funzione. I campi da compilare sono:
orderID -> Numero identificativo dell'ordine fornito da voi a DapSides (obbligatoria)
solveText -> Testo libero con azione in lingua Spagnola (es: cambio numero telefonico, indirizzo, ecc...) (obbligatorio se solveCode = 31)
solveCode -> Codice da inviare che identifica l'azione da applicare alla spedizione (obbligatoria)
Codice | Azione |
---|---|
39 | Restituire al mittente |
46 | Distruggere |
31 | Testo Libero |
$token = "token letto nella procedura di login";
$data = '{"orderID":"XXXXXX","solveCode":"XX","solveText":"XXXXX"}';
$url="XXXXXXXXXXX"; // l'url verrà fornito successivamente
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
}else{
$result = curl_exec($ch);
$response = json_decode( $result );
echo $result;
curl_close($ch);
}
Svincolo giacenza SDA
Per lo svincolo della giacenza tramite il corriere SDA è possibile utilizzare la seguente funzione. I campi da compilare sono:
ldv -> Lettera di Vettura, identificativo della spedizione ricevuto tramite chiamata Get Ultimo Stato (obbligatorio)
deliveryInfo -> Testo libero con informazioni utili per la consegna
dateOfDelivery -> Giorno riconsegna (yyyy-mm-dd) (obbligatorio)
redeliveryHourFrom -> Orario riconsegna DA (hh:mm) (obbligatorio)
redeliveryHourTO -> Orario riconsegna A (hh:mm) (obbligatorio)
destPhone -> Telefono destinatario (se diverso da dato iniziale)
destAddress -> Indirizzo destinatario (se diverso da dato iniziale)
destPostalCode -> CAP destinatario (se diverso da dato iniziale)
destCity -> Città destinatario (se diverso da dato iniziale)
destAreaCode -> Provincia destinatario (se diverso da dato iniziale)
solveCode -> Codice da inviare che identifica l'azione da applicare alla spedizione (obbligatorio)
Codice | Azione |
---|---|
GGG | Torna in consegna |
RRR | Ritorna al mittente |
FDP | Fermo deposito |
$token = "token letto nella procedura di login";
$data = '{"ldv":"XXX","solveCode":"XXX","deliveryInfo":"XXXX","redeliveryDate":"XXXX-XX-XX","redeliveryHourFrom":"XX:XX","redeliveryHourTO":"XX:XX"}';
$url="XXXXXXXXXXX"; // l'url verrà fornito successivamente
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
}else{
$result = curl_exec($ch);
$response = json_decode( $result );
echo $result;
curl_close($ch);
}
Svincolo giacenza BRT
Per lo svincolo della giacenza tramite il corriere BRT è possibile utilizzare la seguente funzione. I campi da compilare sono:
deliveryNote -> Numero DDT, identificativo della spedizione ricevuto tramite chiamata Get Ultimo Stato (obbligatorio)
solveText -> Testo libero che identifica l'azione da applicare alla spedizione (obbligatorio)
$token = "token letto nella procedura di login";
$data = '{"deliveryNote":"XXXXXX","solveText":"XXXXXX"}';
$url="XXXXXXXXXXX"; // l'url verrà fornito successivamente
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
}else{
$result = curl_exec($ch);
$response = json_decode( $result );
echo $result;
curl_close($ch);
}
Crea Lead
Popolare la variabile $data secondo i valori da inserire nel cloud
Campo | Descrizione | Richiesto | Val. |
---|---|---|---|
customerFirstName | Nome | * | VARCHAR(30) |
customerLastName | Cognome | * | VARCHAR(30) |
destMobile | Cellulare (+XXXXXXXXXXXX) | * | VARCHAR(10) |
destPhone | Telefono (+XXXXXXXXXXXX) | VARCHAR(10) | |
leadSource | Provenienza lead (form, campagna fb, ecc..) | VARCHAR(30) | |
leadID | Codice identificativo del Lead, se non inviato verrà inviato un codice DAP | VARCHAR(12) | |
orderRowID | Indice utilizzato per raggruppare più prodotti in un ordine. Se un ordine comprende più prodotti all’interno di un record json aumentare progressivamente il dato per il numero dei record presenti. | VARCHAR(12) | |
destEmail | VARCHAR(30) | ||
destAddress | Indirizzo | VARCHAR(50) | |
destCity | Città | VARCHAR(30) | |
destAreaCode | Provincia | VARCHAR(30) | |
destPostalCode | CAP | VARCHAR(30) | |
destCountryCode | Paese (IT, ES ...) | VARCHAR(2) | |
deliveryInfo | Note | VARCHAR(30) | |
offerta | Nome offerta | VARCHAR(30) | |
urlPromo | Link promozione | VARCHAR(30) | |
networkAffiliazioni | Network provenienza | VARCHAR(20) | |
checkPrivacy | Flag 0|1 se accettato privacy | * | BOOLEAN |
cod | Cash on Delivery (0 = ordine prepagato | 1 = pagamento in contrassegno) | * | BOOLEAN |
productID | Identificativo prodotto | * | VARCHAR(20) |
productName | Nome prodotto | * | VARCHAR(20) |
productQty | Quantità ordinata | * | VARCHAR(10) |
totalAmount | Prezzo totale (XX.XX) | * | DECIMAL(10,2) |
num_vet | Codice del vettore (stabilito con DAP) | * | INT(10) |
$token = "token letto nella procedura di login";
$url="http://62.97.45.44:443/webapp/api/index.php/insertLead";
$data = '{"1":{"leadID":"XXXX","customerFirstName":"XXX","customerLastName":"XXX", "destMobile":"XXXXX", "cod":"X", "productID":"XXXXXX", "productQty":"XXXXXX", "checkPrivacy":"X", "totalAmount": "XX.XX", "orderRowID": "XX.XX","num_vet":"1"}}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
} else {
$result = curl_exec($ch);
$response = json_decode($result);
echo $result.PHP_EOL;
curl_close($ch);
}
Riposta
Uguale a Inserimento ordine.
Get stato lead
L’unico campo significativo è orderID al quale passare l’ID del lead da voler interrogare.
$url="http://62.97.45.44:443/webapp/api/index.php/getLeadStatus";
$token = "token letto nella procedura di login";
$data = '{"leadID":"ID_LEAD"}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)){
echo curl_errno($ch);
echo curl_error($ch);
$status = array("status" => "error", "msg" => "Spedizione non trovata");
}else{
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode( $result );
echo $result;
}
Risposta
{
"status": "success",
"message": "Data selected from database",
"data": [{
"status": "XXXXX"
}]
}
Elenco stati normalizzati DAP
Status | Descrizione |
---|---|
NEW | LEAD INSERITO, NON ANCORA LAVORATO |
IN LAVORAZIONE | LEAD IN LAVORAZIONE |
DA RICONTATTARE | LEAD DA RICONTATTARE SUCCESSIVAMENTE |
CONFERMATO | LEAD CONFERMATO |
FAKE | LEAD NON VALIDO |
RIFIUTATO | LEAD RIFIUTATO |
Get stock prodotti
Inserendo nella variabile data un codice articolo, la procedura restituirà solamente lo stock di quell’articolo. Altrimenti se la variabile data sarà vuota ( $data = '{"item":""}'; ) la procedura restituirà la giacenza di tutti i prodotti in anagrafica
$token = "token letto nella procedura di login";
$data = '{"item":"codice_articolo"}';
$url="http://62.97.45.44:443/webapp/api/index.php/getqtyproduct";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
$status = array("status" => "error", "msg" => "Prodotto non trovato");
} else {
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode( $result );
$tt = array();
$i=1;
echo $result;
}
Risposta
{
"status": "success",
"message": "Data selected from database",
"data": [
{
"country": "XX",
"lotto": "XXXXXXXXXX",
"name": "XXXXXXXXXX",
"qty": "XXXX"
},
{
"country": "XX",
"lotto": "XXXXXXXXXX",
"name": "XXXXXXXXXX",
"qty": "XXXX"
},
}
]
}
Crea ricevimento Merce
I dati vengono passati all’interno della variabile $data con formato Json.
Campo | Richiesto | Descrizione | Val. |
---|---|---|---|
orderID | * | Numero univoco identificativo dell’ordine | VARCHAR(12) |
country | * | Paese Magazzino di destinazione | VARCHAR(2) |
orderDate | Data effettuazione ordine | DATE(Y-m-d) | |
arrivalDate | Data di arrivo previsto | DATE(Y-m-d) | |
deliveryInfo | Commenti utili per il magazzino | VARCHAR(50) | |
orderRowID | * | Indice utilizzato per raggruppare più prodotti in un ordine. Se un ordine comprende più prodotti all’interno di un record json aumentare progressivamente il dato per il numero dei record presenti.
Nelle prime 2 righe abbiamo lo stesso orderID, lo stesso totalAmount ma orderRowID diverso, questo permette al sistema
di inserire un ordine con più di un prodotto associato, se l’ordine prevede un ulteriore prodotto allora la riga
successiva avrà stesso orderID, stesso total Amount ma orderRowID sarà 3.Nella terza riga abbiamo un ordine con un
singolo prodotto.
|
VARCHAR(12) |
productID | * | Codice dentificativo prodotto presente sul cloud | VARCHAR(20) |
batchID | Lotto di produzione | VARCHAR(20) | |
expireDate | Data di scadenza | DATE(Y-m-d) | |
productName | * | Nome del prodotto presente sul cloud | VARCHAR(30) |
productQty | * | Quantità merce prevista in arrivo | INT(10) |
cod_vettore | Codice Corriere | VARCHAR(5) | |
deliveryNote | Numero Documento di trasporto | VARCHAR(20) | |
ldv | Lettera di vettura | VARCHAR(20) | |
codForn | Identificativo univoco fornitore | VARCHAR(12) | |
descrForn | Descrizione Fornitore | VARCHAR(20) |
$url="http://62.97.45.44:443/webapp/api/index.php/insertIncomingGoods";
$token = "token letto nella procedura di login";
$data = '{"1":{"orderDate":"YYYY-MM-DD","orderID":"TEST1234","deliveryNote":"022593","ldv":"123465798","cod_vettore":"GLS","arrivalDate":"YYYY-MM-DD","productID":"TT1",
"productName":"TEST PRODUCT","productQty":100,"country":"IT","batchID":"11223344","expireDate":"YYYY-MM-DD","deliveryInfo":"Additional Info","codForn":"XXX",
"descrForn":TEST FORN,"orderRowID":1}}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)) {
echo curl_errno($ch);
echo curl_error($ch);
}else{
$result = curl_exec($ch);
$response = json_decode( $result );
echo $result;
curl_close($ch);
}
Response
{
"status": "success", (Stato inserimento. Possibili valori: success o error)
"message": "Order added successfully.", (Descrizione inserimento. Se errore verrà mostrato il tipo di errore.)
"data": "XXXXX" (Riferimento interno Dap solo se stato = success)
}
Es. Errore
{
"status": "error",
"message": "Duplicate orderID"
}
Get stato ricevimento Merce
L’unico campo significativo è orderID al quale passare l’ID dell’ordine da voler interrogare ed il paese del magazzino di riferimento.
$url="http://62.97.45.44:443/webapp/api/index.php/getIncomingGoodsStatus";
$token = "token letto nella procedura di login";
$data = '{"orderID":"ORDER_NUMBER","country":"PAESE MAGAZZINO"}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: '.$token));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if (curl_errno($ch)){
echo curl_errno($ch);
echo curl_error($ch);
$status = array("status" => "error", "msg" => "Shipment not found");
}else{
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode( $result );
echo $result;
}
Elenco stati normalizzati DAP
Stato | Descrizione |
---|---|
ACCEPTED | MERCE CARICATA |
RECEIVED | DATI INSERITI MA MERCE NON ANCORA CARICATA |
LOADED | MERCE CARICATA A SISTEMA |
Response
{
"status": "success",
"message": "Data selected from database",
"data": [{
"status": "ACCEPTED",
"orderID": "TT123528",
"cod_vettore": "DHL",
"deliveryNote": "",
"ldv": "",
"codForn": null,
"productID": "777",
"batchID": null,
"expireDate": null,
"orderRowID": "1",
"productQty": "50",
"productQtyChecked": "48" //NUMERO DEI PEZZI LETTI
}]
}