본문 바로가기
해외 오픈마켓 - API/Lazada

[API] Lazada - Register an application, Authorization

by Johnny's 2023. 4. 14.

Register an application

Create App

App Management → Create App 클릭한다.

Seller In-house APP 선택한다.

APP에 대한 정보를 작성한다. (APP 이름, Callback URL, 설명 등)

TESTAPP이 잘 생성된 것을 확인 할 수 있다.

APP 상세 페이지에서 필요한 정보들을 확인한다.

토큰을 발급받기 위해서는 App Key, App Secret 정보를 알아야 한다. (따로 잘 저장해둔다.)

 

상세 페이지 맨아래 부분에 보면 Whitelist를 추가하는 곳이 있다.

code 값을 받으려면 최소 1개 이상 Whitelist를 추가해야한다. 최대 5개까지 추가가 가능하고, CB(통합) 일 경우, 1개만 추가해도 된다.

Seller ID에는 Short Code를 넣어주고, Seller Email에는 어드민 계정 정보를 넣는다.

 

라자다 Cross Border 어드민 계정 로그인 페이지 - CrossBorder 탭

My Account → Account Settings으로 이동한다. 각 국가별 Short Code 정보를 알 수 있다.

 

Authorization

Access token을 발급받기 위해서는 총 4단계를 진행해야한다.

1. Concatenate authorization URL

https://auth.lazada.com/oauth/authorize?response_type=code&force_auth=true&redirect_uri=${app call back url}&client_id=${appkey}

Sample link를 참고해서 URL을 만들어본다. client_id, redirect_uri 만 넣어주면 된다. 

 

 

2. Guide sellers to authorize

URL로 이동하면 아래와 같은 화면이 나오는데 어드민 계정으로 로그인해서 권한을 승인한다.

3. Retrieve authorization code

설정했던 Redirect uri로 code 값을 받을 수 있다. (code 값은 유효기간이 존재하므로 빠르게 access token을 발급받아 보자)

 

4. Get the access_token

access token을 발급 받기 위해서는 sign 값이 필요하다.  sign 값 받는 방법에 대해선 다음 글에서 자세히 설명하겠다.

 

Request

const crypto = require('crypto');
const axios = require('axios');
require("dotenv").config();

const getAccesstoken = () => {

    const app_key = process.env.APP_KEY;
    const timestamp = new Date().getTime().toString();
    const sign_method = "sha256";
    const code = process.env.CODE;
    const app_secret = process.env.APP_SECRET;
    const path = '/auth/token/create';

    let sign_format = `${path}app_key${app_key}code${code}sign_method${sign_method}timestamp${timestamp}`;
    sign_format = sign_format.toString();

    const sign = crypto.createHmac('sha256', app_secret).update(sign_format).digest('hex').toUpperCase();
    
    return axios({
        method: 'GET',
        url : 'https://api.lazada.com.my/rest/auth/token/create',
        params: {
            app_key: app_key,
            timestamp: timestamp,
            sign_method: sign_method,
            sign: sign,
            code :code
        }
    }).then((response) => {
        console.log(response.data)
    }).catch((err) => {
        closing();
        console.log(err)            
    })
}

getAccesstoken();

 

Response

country가 cb 즉, Cross Border이기 때문에 access token과 refresh token을 통합으로 1개만 발급 받는다. 해당 access token으로 각 국가별로 API를 호출할 수 있다.

5. RefreshAccess token

request

const crypto = require('crypto');
const axios = require('axios');
require("dotenv").config();

const getAccesstoken = () => {

    const app_key = process.env.APP_KEY;
    const timestamp = new Date().getTime().toString();
    const sign_method = 'sha256';
    const app_secret = process.env.APP_SECRET;
    const path = '/auth/token/refresh'

    let sign_format = `${path}app_key${app_key}refresh_token${process.env.REFRESH_TOKEN}sign_method${sign_method}timestamp${timestamp}`;
    sign_format = sign_format.toString();

    const sign = crypto.createHmac('sha256', app_secret).update(sign_format).digest('hex').toUpperCase();
    
    return axios({
        method: 'GET',
        url : `https://api.lazada.com.my/rest${path}`,
        params: {
            app_key: app_key,
            timestamp: timestamp,
            sign_method: sign_method,
            sign: sign,
            refresh_token:process.env.REFRESH_TOKEN
        }
    }).then((response) => {
        console.log(response.data)
    }).catch((err) => {
        closing();
        console.log(err)            
    })
}

getAccesstoken();

 

Response

Refresh token을 가지고 Access token 및 Refresh Token을 재발급 받는다. 토큰값은 잘 저장해두고, 만료되기전에 자동으로 갱신해주는 코드를 작성하도록 한다.

 

* 참고

- Lazada API 공식문서 - Guide

- Lazada API 공식문서 - GenerateAccessToken

 

'해외 오픈마켓 - API > Lazada' 카테고리의 다른 글

[API] Lazada - API 호출 예시  (0) 2023.04.27
[API] Lazada - Signature algorithm  (0) 2023.04.17

댓글