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.
                                        
Esempio: 
{
"1" : { "orderID": "AA001", "productID": "PROD1" ,"productName":"Pippo", "orderRowID": "1", "totalAmount": 20.00 },
"2" : { "orderID": "AA001", "productID": "PROD2" ,"productName":"Pippo2", "orderRowID": "2", "totalAmount": 20.00 },
"3" : { "orderID": "AA002", "productID": "PROD1" ,"productName":"Pippo", "orderRowID": "1", "totalAmount": 30.00 }
}
                                        
                                    
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

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 Email 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

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.
                                                                      
                              Example: 
                              {  
                                       "1" : { "orderID": "AA001", "productID": "PROD1" ,"productName":"Pippo", "orderRowID": "1" ....}, 
                                       "2" : { "orderID": "AA001", "productID": "PROD2" ,"productName":"Pippo2", "orderRowID": "2" ....},
                                       "3" : { "orderID": "AA002", "productID": "PROD1" ,"productName":"Pippo", "orderRowID": "1" ....}
                              }
                                                                      
                                                                  
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
                      }]
                    }