Nexus ERP

Exemplu REST API din PHP


1. Creare utilizator si alocare drepturi limitate la module

    Pentru  a folosi serviciul Nexus ERP Web API avem nevoie de o cheie API, care se creeaza in Nexus ERP in cadrul modulului de Utilizatori, pentru un utilizator anume.

    Pentru utilizatorul respectiv se aloca drepturi specifice fiecarui modul in care are acces pentru citire sau scriere.

    In cazul nostru creem un utilizator webRGPD in care specificam ca are acces de scriere numai la modulul Evidenta acorduri primite.

Creare utilizator pentru Nexus ERP Web API

2. Creare cheie API pentru utilizator Nexus ERP

    Pentru a folosi serviciu Nexus ERP Web API avem nevoie de o cheie API, care se asociaza utilizatorului creat mai sus.

    Pentru a crea cheai API deschidem utilizatorul, generam cheia  si specificam societatea pentru care este activa serviciul Web API.

3. Activare serviciu REST API in Nexus ERP

    Pentru a accesa serviciu din exterior trebuie mai intai sa activam serviciul REST API in Nexus ERP.

    Pentru activare, intram in cadrul modulului Activitati programate la rubrica Conector baze de date:

    • se bifeaza serviciul ca fiind  Activ 
    • specificam portul pentru acces din exterior.

    Pentru a accesa API-ul, se efectuează apeluri cu headere http conținând urmatoarele elemente:
    • Content-Type: text/plain
    • Authorization: Basic CHEIE-API-BASE64

    Unde CHEIE-API-BASE64 reprezintă codificarea în base64 a cheii API, urmată de caracterul “:”.
    Un apel API este reprezentat prin trimiterea unei solicitări la adresa URL a serviciului WEB API. Fiecare cerere constă dintr-un mesaj HTTP POST la o adresă URL, cum ar fi:


    http://{ip}:{port}/api/v1/actiune/resursa
    ex: http://192.168.0.1:5100/v1/import/rgpd_acorduri_primite

Activare serviciu REST API in Nexus ERP

4. Descarcare librarie PHP pentru utilizare Web API Nexus ERP

    Pentru a utiliza serviciul Web API Nexus ERP din PHP descarcam documentatia de aici, si copiem directorul api-nexus-erp din arhiva in cadrul site-ului pentru care vrem sa facem implementarea.

    Arhiva contine structura de directoare si fisiere: 

    /include

    • api-nexuserp-v1.php - surse PHP pentru clasa ApiNexusErp
    • config.php - fisier de configurare serviciu, in care trebuie sa specificam:

          API_NEXUSERP_IP  = IP-ul de exterie al serverului Nexus ERP 

          API_NEXUSERP_PORT  = Portul serviciului REST API (exemplu creat mai sus)

          API_NEXUSERP_KEY =  cheia API pentru conectarea la serviciulWeb API Nexus ERP(exemplu creat mai sus)

    /import

    • parteneri  - exemplu pentru importul de parteneri in Nexus ERP 

    /read

    • parteneri - exemplu de citire parteneri din Nexus ERP.


    In cazul nostru pentru fisierul config.php ar contine:

    define("API_NEXUSERP_IP", "192.168.0.1");

    define("API_NEXUSERP_PORT", "5100");

    define("API_NEXUSERP_KEY", "b1cb527c66a24823b972dbf11fa1332a");

5. Exemplu Import acorduri primite in Nexus ERP

    Procesare informatiilor prin serviciul Web API Nexus ERP  se face prin variabile JSON, atat la trimiterea de date cat si la raspunsul primit.

    In cazul nostrul pentru Importul acordurilor primite documentatia pentru campurile disponibile si modul de completare a variabilei in format JSON se gaseste aici

    De exemplu daca avem un formular de contact pe site si la procesarea formularului de contact, in urma acordului utilizatorului ca este de acord cu procesarea datelor, dorim ca aceste informatii sa ajunga in Nexus ERP, apelam serviciul Web API Nexus ERP, cu completarea campurilor disponibile in documentatie. 


    include("api-nexus-erp/include/api-nexuserp-v1.php");

    include("api-nexus-erp/include/config.php");


    $apiNexusERP = new ApiNexusErp();

    $apiNexusERP->setIp(API_NEXUSERP_IP);

    $apiNexusERP->setPort(API_NEXUSERP_PORT);

    $apiNexusERP->setApiKey(API_NEXUSERP_KEY);

    $data = '{"linii": 

          [

              {

                      "data_inregistrare": "'.$VARIABILA_DATA.'",

                       "locatia": "'.$VARIABILA_LOCATIE.'",

                       "den_operatiune": "'.$VARIABILA_OPERATIUNE.'",

                       "numele": "'.$VARIABILA_NUME_SI_PRENUME.'",

                       "ip": "'.$VARIABILA_IP.'",

                       "email": "'.$VARIABILA_EMAIL.'",

                      "acord": "'.$VARIABILA_TEXT_FORMULAR.'"

               }

            ]

          }';

    $apiNexusERP->Import("rgpd_acorduri_primite", $data);

    $apiResponse = $apiNexusERP->getArrResult();

    if ($apiResponse["isError"]){

            //echo $apiResponse["message"];

    }

6. Exemplu de citire din PHP cu librarie Nexus API

    Citirea informatiilor prin serviciul Web API Nexus ERP se face prin variabile JSON.

    De exemplu daca vrem informatii despre un anumit partener din Nexus ERP, apelam serviciul Web API Nexus ERP, cu completarea campurilor disponibile din documentatie.

    In exemplul nostru apelam serviciul de citire date pentru partenerul cu codul fiscal: 9671891.


    $data =  '{

                      "cod_fiscal": "9671891"

                    }';

    $apiNexusERP->Read("parteneri", $data);

    $response = $apiNexusERP->getArrResult();

    header('Content-Type: application/json');

    echo json_encode($response);

7. Exemplu de citire din PHP din aplicatii proprii fara librarie Nexus API

    Acelasi exemplu de la punctul 6 de citire date pentru un anumit partener apeland direct serviciul Nexus REST API fara libraria Nexus API. 

    $post_array = array("cod_fiscal" => "9671891") ; 

    $data_json = json_encode($post_array);

    $SERVICIU_TIP_CITIRE = "parteneri"; 

    $curl = curl_init(); 

    curl_setopt_array(

               $curl, array( CURLOPT_PORT => $SERVICIU_PORT

                                  CURLOPT_URL => "http://".$SERVICIU_PORT.":".$SERVICIU_PORT."/api/v1/read/".$SERVICIU_TIP_CITIRE

                                  CURLOPT_RETURNTRANSFER => true, 

                                  CURLOPT_ENCODING => "", 

                                  CURLOPT_MAXREDIRS => 10, 

                                  CURLOPT_TIMEOUT => 60, 

                                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 

                                  CURLOPT_CUSTOMREQUEST => "POST", 

                                  CURLOPT_POSTFIELDS => $data_json

                                  CURLOPT_HTTPHEADER => array( 

                                                                                      "Authorization: Basic ".base64_encode($SERVICIU_API_KEY.":") , 

                                                                                      "Cache-Control: no-cache", 

                                                                                       "Content-Type: application/json" ) 

                                ) 

            ); 

    $response = curl_exec($curl); 

    $err = curl_error($curl); 

    $info = curl_getinfo($curl); 

    curl_close($curl);