UNPKG

shipxanh-oalazada

Version:
202 lines (161 loc) 5.9 kB
# Nodejs wrapper for Lazada Open Platform API [![Build Status](https://travis-ci.org/branch8/lazada-open-platform-sdk.svg?branch=master)](https://travis-ci.org/branch8/lazada-open-platform-sdk) | ! WIP project # Usage 1. Install sdk ```shell [~/project/dir] $ npm install lazada-open-platform-sdk ``` 1. Require `LazadaAPI` class ```js import LazadaAPI from "lazada-open-platform-sdk"; // OR const LazadaAPI = require("lazada-open-platform-sdk"); ``` 1. Instantiate a LazadaAPI Object ```js /** * LazadaAPI class constructor * @param {string} appKey * @param {string} appSecret * @param {Venture} countryCode @ref: 'src/LazadaClient/constants.js' * countryCode should be one of the following * | 'SINGAPORE' * | 'THAILAND' * | 'MALAYSIA' * | 'VIETNAM' * | 'PHILIPPINES' * | 'INDONESIA' * @param {string?} accessToken require for some API */ const aLazadaAPI = new LazadaAPI(appKey, appSecret, "SINGAPORE"); // OR const accessToken = "some_access_token"; const aLazadaAPIWithToken = new LazadaAPI( appKey, appSecret, "SINGAPORE", accessToken ); ``` 1. Call API action with proper parameters ```js // all API action return promise aLazadaAPI.generateAccessToken({ code: "auth_code" }).then((response) => { const { access_token } = response; // JSON data from Lazada's API }); // for API action that require authorization, you must set the accessToken first aLazadaAPI.accessToken = "some_access_token"; aLazadaAPI.getShipmentProviders().then((response) => { // JSON data from Lazada's API }); ``` 1. For available API actions, check the [support table](#api-support). For proper API request parameters, check [Lazada's offcial documentation](#lazada-api-doc) and source code located in `src/LazadaClient/<namespace>` # API Support | Order | status | | ------------------------------ | ------------------ | | getDocument | :heavy_check_mark: | | getFailureReasons | :heavy_check_mark: | | getMultipleOrderItems | :heavy_check_mark: | | getOrder | :heavy_check_mark: | | getOrderItems | :heavy_check_mark: | | getOrders | :heavy_check_mark: | | setInvoiceNumber | :heavy_check_mark: | | setStatusToCanceled | :heavy_check_mark: | | setStatusToPackedByMarketplace | :heavy_check_mark: | | setStatusToReadyToShip | :heavy_check_mark: | --- | Product | status | | --------------------- | ------------------ | | createProduct | :heavy_check_mark: | | getBrands | :heavy_check_mark: | | getCategoryAttributes | :heavy_check_mark: | | getCategoryTree | :heavy_check_mark: | | getProductItem | :heavy_check_mark: | | getProducts | :heavy_check_mark: | | getQcStatus | :no_entry_sign: | | getResponse | :heavy_check_mark: | | migrateImage | :heavy_check_mark: | | migrateImages | :heavy_check_mark: | | removeProduct | :heavy_check_mark: | | setImages | :heavy_check_mark: | | updatePriceQuantity | :heavy_check_mark: | | updateProduct | :heavy_check_mark: | | uploadImage | :no_entry_sign: | --- | Media | status | | ------------------- | ------------------ | | initCreateVideo | :heavy_check_mark: | | uploadBlockVideo | :heavy_check_mark: | | completeCreateVideo | :heavy_check_mark: | --- | Finance | status | | --------------------- | --------------- | | getPayoutStatus | :no_entry_sign: | | getTransactionDetails | :no_entry_sign: | --- | Logistics | status | | -------------------- | ------------------ | | getShipmentProviders | :heavy_check_mark: | --- | Seller | status | | ------------ | --------------- | | getSeller | :no_entry_sign: | | updateSeller | :no_entry_sign: | | updateUser | :no_entry_sign: | --- | System | status | | ------------------- | ------------------ | | generateAccessToken | :heavy_check_mark: | | refreshAccessToken | :heavy_check_mark: | --- | DataMoat | status | | ------------------- | --------------- | | dataMoatBatchLog | :no_entry_sign: | | dataMoatComputeRisk | :no_entry_sign: | | dataMoatLogin | :no_entry_sign: | | dataMoatOrder | :no_entry_sign: | # Development ## Tools - node - runtime - babel - js transpiler - flow - type checker - jest - test runner - eslint - linter - vscode - recommended text editor ## Convention 1. sdk variables: `camelCase` 1. api variables: `snake_case` or `PascalCase` ## File structure ``` src/ ├── LazadaAPI // LazadaAPI: top level controller class    └── index.js ├── LazadaClient // LazadaClient: namespace seperated API actions    ├── index.js    ├── logistics.js    ├── order.js    ├── product.js    └── system.js ├── LazadaRequest // LazadaRequest: responsible for network request    ├── index.js    └── signature // logic for signing API request    └── index.js ├── __tests__ // all tests located here └── index.js // a.k.a. main.c ``` # Design ```js const APIRequest = { appKey: ":require", appSecret: ":require", baseURL: ":require" // Protocol (default: https) + Gateway (location specific) HttpAction: "GET OR POST", // API specific apiPath: "action/path", // API specific accessToken: ":optional", // API specific payload: {} // API specific }; ``` # Reference ## Lazada API Doc https://open.lazada.com/doc/api.htm