shopee-v2-api
Version:
1,360 lines (1,216 loc) • 37 kB
JavaScript
/* -------------------------------------------------------------------------- */
/* Imports */
/* -------------------------------------------------------------------------- */
const _ = require('lodash');
/* -------------------------------------------------------------------------- */
/* Constants */
/* -------------------------------------------------------------------------- */
const {
constants
} = require('./constants');
/* -------------------------------------------------------------------------- */
/* Common / Auth */
/* -------------------------------------------------------------------------- */
const {
buildSignKey,
buildUrl,
get,
post,
RefreshToken
} = require('./auth');
/* -------------------------------------------------------------------------- */
/* API */
/* -------------------------------------------------------------------------- */
exports.ItemLimit = async (userShop) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_item_limit';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
});
// request && response data
const responseData = await get(url);
if (responseData.response) {
return responseData.response;
} else {
return null;
}
} catch (err) {
throw err;
}
}
/**
* 상품 카테고리 목록 조회
* @param {*} userShop
* @returns
*/
exports.GetCategories = async (userShop) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_category';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
});
// request && response data
const responseData = await get(url);
if (responseData.response && responseData.response.category_list) {
return responseData.response.category_list.map((category) => ({
category_id: category.category_id,
parent_id: category.parent_category_id,
category_name: category.original_category_name,
has_children: category.has_children,
country: userShop.country,
marketPlace: userShop.marketPlace
}));
} else {
return [];
}
} catch (err) {
throw err;
}
}
/**
* 속성 정보 조회
* @param {*} userShop
* @param {*} queries
* @returns
*/
exports.GetAttributes = async (userShop, queries) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_attributes';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, _.assign({
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
}, queries));
// request && response data
const responseData = await get(url);
if (responseData.response && responseData.response.attribute_list) {
return responseData.response.attribute_list;
} else {
return [];
}
} catch (err) {
throw err;
}
}
/**
* 브랜드 목록
* @param {*} userShop
* @param {*} queries
* @returns
*/
exports.GetBrandList = async (userShop, queries) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_brand_list';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
let brandAttribute = {};
let hasMore = true;
let offset = 0;
while (hasMore) {
// url
const url = buildUrl(uri, _.assign({
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
}, _.assign(
queries, {
page_size: 100,
status: 1,
offset: offset
}
)));
// request && response data
const responseData = await get(url);
if (responseData.response && responseData.response.brand_list) {
// 브랜드 추가
if (!brandAttribute.brand_list) {
brandAttribute.brand_list = [];
}
brandAttribute.brand_list = brandAttribute.brand_list.concat(responseData.response.brand_list);
brandAttribute = _.assign(brandAttribute, {
is_mandatory: responseData.response.is_mandatory,
input_type: responseData.response.input_type,
});
hasMore = responseData.response.has_next_page;
offset = responseData.response.next_offset;
} else {
hasMore = false;
}
}
return brandAttribute;
} catch (err) {
throw err;
}
}
/**
* 추천 카테고리
* @param {*} userShop
* @param {*} itemName
* @returns
*/
exports.GetRecommendCats = async (userShop, itemName) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/category_recommend';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
item_name: encodeURIComponent(itemName)
});
// request && response data
const responseData = await get(url);
// 데이터 형식 변경
if (responseData.response && responseData.response.category_id) {
return responseData.response.category_id;
} else {
return [];
}
} catch (err) {
throw err;
}
}
/**
* 속성 추천
* @param {*} userShop
* @param {*} itemName
* @param {*} categoryId
* @returns
*/
exports.GetRecommendAttribute = async (userShop, itemName, categoryId) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_recommend_attribute';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
item_name: encodeURIComponent(itemName),
category_id: categoryId
});
// request && response data
const responseData = await get(url);
// 데이터 형식 변경
return responseData.response;
} catch (err) {
throw err;
}
}
/**
* DTS 조회
* @param {*} userShop
* @param {*} category_id
* @returns
*/
exports.GetDTSLimit = async (userShop, category_id) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_dts_limit';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
category_id: category_id
});
// request && response data
const responseData = await get(url);
// 데이터 형식 변경
if (responseData.response && responseData.response.days_to_ship_limit) {
return responseData.response;
} else {
return null;
}
} catch (err) {
throw err;
}
}
/**
* 사이즈 차트 지원 유무
* @param {*} userShop
* @param {*} category_id
* @returns
*/
exports.GetSupportSizeChart = async (userShop, category_id) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/support_size_chart';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
category_id: category_id
});
// request && response data
const responseData = await get(url);
// 데이터 형식 변경
if (responseData.response) {
return responseData.response;
} else {
return null;
}
} catch (err) {
throw err;
}
}
/**
* 사이즈 차트 업데이트
* @param {*} userShop
* @param {*} item_id
* @param {*} size_chart
* @returns
*/
exports.UpdateSizeChart = async (userShop, item_id, size_chart) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/support_size_chart';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
});
// request && response data
const responseData = await post(url, JSON.stringify({
item_id: item_id,
size_chart: size_chart
}));
// 데이터 형식 변경
if (responseData.request_id) {
return true;
} else {
return null;
}
} catch (err) {
throw err;
}
}
/**
* 상품 등록
* @param {*} userShop
* @param {*} item
* @returns
*/
exports.AddItem = async (userShop, item) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/add_item';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
});
// request && response data
const responseData = await post(url, JSON.stringify(item));
// 데이터 형식 변경
if (responseData.response) {
return responseData.response;
} else {
return responseData;
}
} catch (err) {
throw err;
}
}
/**
* 상품 수정
* @param {*} userShop
* @param {*} item
* @returns
*/
exports.UpdateItem = async (userShop, item) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/update_item';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
});
// request && response data
const responseData = await post(url, JSON.stringify(item));
return responseData.response;
} catch (err) {
throw err;
}
}
/**
* 상품 삭제
* @param {*} userShop
* @param {*} item_id
* @returns
*/
exports.DeleteItem = async (userShop, itemId) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/delete_item';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
});
// request && response data
const responseData = await post(url, JSON.stringify({
item_id: itemId
}));
// 데이터 형식 변경
if (responseData.request_id) {
return true;
} else {
return null;
}
} catch (err) {
throw err;
}
}
/**
* 가격 수정
* @param {*} userShop
* @param {*} itemId
* @param {*} priceList
* @returns
*/
exports.UpdatePrice = async (userShop, itemId, priceList) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/update_price';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
});
// request && response data
const responseData = await post(url, JSON.stringify({
item_id: itemId,
price_list: priceList // model_id, original_price
}));
// 데이터 형식 변경
return responseData.response
} catch (err) {
throw err;
}
}
/**
* 재고 수정
* @param {*} userShop
* @param {*} itemId
* @param {*} stockList
* @returns
*/
exports.UpdateStock = async (userShop, itemId, stockList) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/update_stock';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
});
const responseData = await post(url, JSON.stringify({
item_id: itemId,
stock_list: stockList // model_id, normal_stock
}));
return responseData.response
} catch (err) {
throw err;
}
}
/**
* 상품 목록
* @param {*} userShop
* @param {*} offset
* @param {*} itemPerPage
* @returns
*/
exports.GetItemList = async (userShop, offset, itemPerPage) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_item_list';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
offset: offset,
page_size: itemPerPage,
item_status: ['NORMAL']
});
// requests && response data
const responseData = await get(url);
if (responseData.response) {
return responseData.response;
} else {
return null;
}
} catch (err) {
throw err;
}
}
/**
* 상품 상세 정보
* @param {*} userShop
* @returns
*/
exports.GetItemDetail = async (userShop, itemId) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_item_base_info';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
item_id_list: [itemId]
});
// requests && response data
const responseData = await get(url);
// 데이터 형식 변경
if (responseData.response && responseData.response.item_list) {
return responseData.response.item_list.map((item) => {
// attributes
let attributes = [];
attributes.push({
attributes_id: 0,
attribute_name: 'Brand',
value_id: item.brand.brand_id,
value: item.brand.original_brand_name
});
if (item.attribute_list) {
item.attribute_list.map((attribute) => {
attributes.push({
attribute_id: attribute.attribute_id,
attribute_name: attribute.original_attribute_name,
value_list: attribute.attribute_value_list.map((value) => ({
value_id: value.value_id,
value: value.original_value_name,
value_unit: value.value_unit
}))
});
});
}
// item
return {
item_id: item.item_id,
category_id: item.category_id,
name: item.item_name,
description: item.description,
item_sku: item.item_sku,
status: item.item_status,
create_time: item.create_time,
update_time: item.update_time,
price: item.price_info && item.price_info.length > 0 ?
item.price_info[0].current_price : 0,
stock: item.stock_info_v2 && item.stock_info_v2.seller_stock.length > 0 ?
item.stock_info_v2.seller_stock[0].stock : 0,
images: item.image.image_url_list,
has_variation: item.has_model,
promotion_id: item.promotion_id,
attributes: attributes,
weight: Number(item.weight),
logistics: item.logistic_info,
item_status: item.item_status
}
})[0];
} else {
return null;
}
} catch (err) {
throw err;
}
}
/**
* 상품들 상세 정보
* @param {*} userShop
* @returns
*/
exports.GetItemDetails = async (userShop, itemIds) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_item_base_info';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
item_id_list: itemIds
});
// requests && response data
const responseData = await get(url);
// 데이터 형식 변경
if (responseData.response && responseData.response.item_list) {
return responseData.response.item_list.map((item) => {
// attributes
let attributes = [];
attributes.push({
attributes_id: 0,
attribute_name: 'Brand',
value_id: item.brand.brand_id,
value: item.brand.original_brand_name
});
if (item.attribute_list) {
item.attribute_list.map((attribute) => {
attributes.push({
attribute_id: attribute.attribute_id,
attribute_name: attribute.original_attribute_name,
value_list: attribute.attribute_value_list.map((value) => ({
value_id: value.value_id,
value: value.original_value_name,
value_unit: value.value_unit
}))
});
});
}
// item
return {
item_id: item.item_id,
category_id: item.category_id,
name: item.item_name,
description: item.description,
item_sku: item.item_sku,
status: item.item_status,
create_time: item.create_time,
update_time: item.update_time,
price: item.price_info && item.price_info.length > 0 ?
item.price_info[0].current_price : 0,
stock: item.stock_info && item.stock_info.length > 0 ?
item.stock_info[0].current_stock : 0,
images: item.image.image_url_list,
has_variation: item.has_model,
promotion_id: item.promotion_id,
attributes: attributes,
weight: Number(item.weight)
}
});
} else {
return null;
}
} catch (err) {
throw err;
}
}
/* -------------------------------- Variation ------------------------------- */
/**
* 옵션 조회
* @param {*} userShop
* @param {*} itemId
* @returns
*/
exports.GetVariations = async (userShop, itemId) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_model_list';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
item_id: itemId
});
// requests && response data
const responseData = await get(url);
if (responseData.response && responseData.response.model) {
return {
tier_variation: responseData.response.tier_variation.map((tier) => ({
name: tier.name,
options: tier.option_list.map((optionData) => optionData.option),
images_url: tier.option_list.map((optionData) => {
if (optionData.image && optionData.image.image_url) {
return optionData.image.image_url;
} else {
return null;
}
})
})),
variations: responseData.response.model.map((model) => ({
variation_id: model.model_id,
tier_index: model.tier_index,
sku: model.model_sku,
stock: model.stock_info_v2.summary_info.total_available_stock,
price: model.price_info[0].original_price,
price_info: model.price_info,
discount_id: model.promotion_id
}))
};
} else {
return null;
}
} catch (err) {
throw err;
}
}
/**
* 옵션 삭제
* @param {*} userShop
* @param {*} itemId
* @param {*} modelId
* @returns
*/
exports.DeleteVariation = async (userShop, itemId, modelId) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/delete_model';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
});
// request && response data
const responseData = await post(url, JSON.stringify({
item_id: itemId,
model_id: modelId
}));
return responseData;
} catch (err) {
throw err;
}
}
/**
* 옵션 초기화
* @param {*} userShop
* @param {*} itemId
* @param {*} tierVariation
* @param {*} model
* @returns
*/
exports.InitTierVariation = async (userShop, itemId, tierVariation, model) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/init_tier_variation';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
});
// request && response data
const responseData = await post(url, JSON.stringify({
item_id: itemId,
tier_variation: tierVariation,
model: model
}));
return {
item_id: responseData.response.item_id,
tier_variation: responseData.response.tier_variation.map((tier) => ({
name: tier.name,
options: tier.option_list.map((optionData) => optionData.option),
images_url: tier.option_list.map((optionData) => optionData.image_url)
})),
variations: responseData.response.model.map((model) => ({
variation_id: model.model_id,
tier_index: model.tier_index,
variation_sku: model.model_sku,
stock: model.seller_stock[0].stock,
price: model.price_info[0].original_price,
promotion_id: model.promotion_id
}))
};
} catch (err) {
throw err;
}
}
/**
* 옵션(tier_variation) 정렬 - 추가, 삭제, 수정
* @param {*} userShop
* @param {*} itemId
* @param {*} tierVariation
* @returns
*/
exports.UpdateTierVariation = async (userShop, itemId, tierVariation) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/update_tier_variation';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
});
// request && response data
const responseData = await post(url, JSON.stringify({
item_id: itemId,
tier_variation: tierVariation
}));
return responseData;
} catch (err) {
throw err;
}
}
/**
* 옵션 sku 수정
* @param {*} userShop
* @param {*} itemId
* @param {*} model
* @returns
*/
exports.UpdateVariation = async (userShop, itemId, model) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/update_model';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
});
// request && response data
const responseData = await post(url, JSON.stringify({
item_id: itemId,
model: model
}));
return responseData;
} catch (err) {
throw err;
}
}
/**
* 옵션 추가
* @param {*} userShop
* @param {*} itemId
* @param {*} model
* @returns
*/
exports.AddVariation = async (userShop, itemId, model) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/add_model';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
});
// request && response data
const responseData = await post(url, JSON.stringify({
item_id: itemId,
model_list: model
}));
return {
variations: responseData.response.model.map((model) => ({
variation_id: model.model_id,
tier_index: model.tier_index,
variation_sku: model.model_sku,
stock: model.seller_stock[0].stock,
price: model.price_info[0].original_price,
promotion_id: model.promotion_id
}))
};
} catch (err) {
throw err;
}
}
/**
* 상품에 대한 프로모션 정보 조회
* @param {*} userShop
* @param {*} itemIdList
* @returns
*/
exports.GetItemPromotion = async (userShop, itemIdList) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_item_promotion';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
item_id_list: itemIdList
});
// request && response data
const responseData = await get(url);
return responseData;
} catch (err) {
throw err;
}
}
exports.GetComment = async (userShop, cursor = '', pageSize = 100, itemId = null, commentId = null) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_comment';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
cursor: cursor,
page_size: pageSize
});
// request && response data
const responseData = await get(url);
return responseData.response;
} catch (err) {
throw err;
}
}
exports.ReplyComment = async (userShop, commentList) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/reply_comment';
// sign key
const {
signKey,
currentTimeStamp
} = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id
});
// request && response data
const responseData = await post(url, JSON.stringify({
comment_list: commentList
}));
return responseData;
} catch (err) {
throw err;
}
}
exports.GetModelList = async (userShop, itemId) => {
try {
// access token 유효 확인
let { shop_id, accessToken } = await RefreshToken(userShop);
// uri
const uri = '/api/v2/product/get_model_list';
// sign key
const { signKey, currentTimeStamp } = buildSignKey(uri, accessToken, shop_id);
// url
const url = buildUrl(uri, {
partner_id: constants.partnerId,
timestamp: currentTimeStamp,
sign: signKey,
access_token: accessToken,
shop_id: shop_id,
item_id: itemId
});
// request && response data
const responseData = await get(url);
return responseData.response;
} catch (err) {
throw err;
}
}