Dacă natura plugin-ului dvs. o cere, este posibil să furnizați utilizatorilor o interfață web cu setări detaliate (de exemplu, acces la date pentru un serviciu extern) la o URL specificată.

Identificare și afișare setări pentru utilizatorii magazinului online

În cel mai simplu caz, puteți utiliza plasatorul _ESHOP_CODE_ în parametrul URL-ului. De exemplu, puteți specifica o URL pentru setări în setările adiționale ale addon-ului: https://plugin.tld/store?store=_ESHOP_CODE_.

Cu toate acestea, pentru a crește securitatea și confortul utilizatorului, vă recomandăm să implementați autentificarea prin conturile Eshop Rapid. În Eshop Rapid, un utilizator poate gestiona mai multe magazine online pe care addon-ul dvs. poate fi instalat. În propria interfață, puteți oferi utilizatorilor posibilitatea de a trece rapid la un alt magazin online sau de a lega magazine online și setări în masă!

Procesul de autentificare utilizează protocolul OAuth 2.0 (mai multe aici). Pentru a implementa autentificarea, generați mai întâi credențialele API de autentificare în fila detaliilor addon-ului. ATENȚIE! Aceste date de acces sunt diferite de datele de acces la API-ul Eshop Rapid.

Autentificarea utilizatorului

Utilizatorul este redirecționat mai întâi către pagina de autentificare.

GET https://marketplace.eshop-rapid.ro/user-auth cu parametrii:

  • client_id - ID-ul aplicației
  • redirect_uri - URL-ul pentru redirecționarea utilizatorului înapoi la site-ul plugin-ului. Trebuie să se potrivească cu adresa specificată la crearea accesului la API-ul de autorizare
  • response_type - cu valoarea code
  • scope - cu valoarea USER_INFO
  • state - un parametru opțional care conține un token CSRF personalizat, care permite validarea răspunsului serverului, care va conține și acest token

După o autentificare reușită, utilizatorul este redirecționat înapoi cu următorii parametrii:

  • code - codul de autorizare, care va fi schimbat cu un token de acces. Valabilitatea acestui cod este de 10 minute.
  • state - token CSRF

Exemplu:

 
    header('Location: https://marketplace.eshop-rapid.ro/user-auth?client_id=LGWQrb7CCOLR5qt8zWnTZXP&redirect_uri=https://plugin-url.tld/login&response_type=code&scope=USER_INFO&state');
 

Următorul pas este obținerea token-ului de acces

POST https://marketplace.eshop-rapid.ro/api/token

  • grant_type cu valoarea authorization_code
  • client_id - ID-ul aplicației
  • client_secret - cheia secretă
  • code - codul de autorizare
  • redirect_uri - același URL pentru redirecționarea utilizatorului

Serverul de autorizare răspunde cu un obiect JSON:

 
    {
        "token_type": "Bearer",
        "expires_in": 3600,
        "access_token": "...", // utilizat pentru a obține datele utilizatorului și pentru a efectua solicitări API
        "refresh_token": "..."
    }
 

Exemplu:

 
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => https://marketplace.eshop-rapid.ro/api/token,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_POSTFIELDS => [
            'grant_type' => 'authorization_code',
            'client_id' => 'LGWQrb7CCOLR5qt8zWnTZXP',
            'client_secret' => 'e0976500a9ab1bdeacbe7264856ce88d',
            'code' => $code,
            'redirect_uri' => 'https://plugin-url.tld/login'
        ],
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;
 
Parametrii trebuie să fie scriși ca un array (form-data), nu ca JSON.


Obținerea datelor utilizatorului

Token-ul de acces poate fi acum folosit pentru a interoga API-ul pentru a obține date despre utilizatorul autentificat.

GET https://marketplace.eshop-rapid.ro/api/user/about

 
    {
        "user": "user@email.com",
        "stores": [
            {
                "system": "www.webareal.cz",
                "code": "...",
                "name": "..."
            }
        ]
    }
 

Obiectul conține, de asemenea, o listă a magazinelor online ale utilizatorului pe care plugin-ul este instalat.


Exemplu:

 
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => https://marketplace.eshop-rapid.ro/api/user/about,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'GET',
        CURLOPT_HTTPHEADER => array(
            'Authorization: Bearer ' . $bearer // access token
        ),
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;
 


Reînnoirea token-ului de acces

Token-ul de acces are o valabilitate limitată de 1 oră; după expirarea sa, token-ul de reîmprospătare poate fi schimbat cu un

Token-ul de acces are o valabilitate limitată de 1 oră; după expirarea sa, token-ul de reîmprospătare poate fi schimbat cu un token de acces nou. Valabilitatea token-ului de reîmprospătare este de 1 lună.

POST https://marketplace.eshop-rapid.ro/api/token

  • grant_type cu valoarea refresh_token
  • refresh_token - token-ul de reîmprospătare anterior
  • client_id - ID-ul aplicației
  • client_secret - cheia aplicației

Serviciul de autorizare returnează un token de acces și un token de reîmprospătare nou:

 
    {
        "token_type": "Bearer",
        "expires_in": 3600,
        "access_token": "...",
        "refresh_token": "..."
    }