shopee-v2-api
Version:
568 lines (514 loc) • 13.9 kB
JavaScript
/* -------------------------------------------------------------------------- */
/* Imports */
/* -------------------------------------------------------------------------- */
const _ = require('lodash');
/* -------------------------------------------------------------------------- */
/* Constants */
/* -------------------------------------------------------------------------- */
const {
constants
} = require('./constants');
/* -------------------------------------------------------------------------- */
/* Common / Auth */
/* -------------------------------------------------------------------------- */
const {
buildSignKey,
buildUrl,
get,
post,
RefreshToken
} = require('./auth');
/* -------------------------------------------------------------------------- */
/* API */
/* -------------------------------------------------------------------------- */
/* ------------------------------- Bundle deal ------------------------------ */
/**
* bundle deal 목록
* @param {*} userShop
* @param {*} offset
* @param {*} pageSize
* @returns
*/
exports.GetBundleDealList = async (userShop, offset, pageSize) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/get_bundle_deal_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,
time_status: 1,
page_no: offset,
page_size: pageSize
});
// request && response data
const responseData = await get(url);
return responseData;
} catch (err) {
throw err;
}
}
/**
* bundle deal 정보
* @param {*} userShop
* @param {*} bundleDealId
* @returns
*/
exports.GetBundleDeal = async (userShop, bundleDealId) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/get_bundle_deal';
// 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,
bundle_deal_id: bundleDealId
});
// request && response data
const responseData = await get(url);
return responseData;
} catch (err) {
throw err;
}
}
/**
* bundle deal 상품 목록
* @param {*} userShop
* @param {*} bundleDealId
* @returns
*/
exports.GetBundleDealItem = async (userShop, bundleDealId) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/get_bundle_deal';
// 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,
bundle_deal_id: bundleDealId
});
// request && response data
const responseData = await get(url);
return responseData;
} catch (err) {
throw err;
}
}
/**
* bundle deal 생성
* @param {*} userShop
* @param {*} bundleDeal
* @returns {*}
*```json
*{
"error": "",
"message": "",
"request_id": "b41cb9d4eff03a708347d69abcd4c63d",
"response": {
"bundle_deal_id": 11111
}
*}
*```
*/
exports.AddBundleDeal = async (userShop, bundleDeal) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/add_bundle_deal';
// 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(bundleDeal));
return responseData;
} catch (err) {
throw err;
}
}
/**
* bundle deal에 상품 추가
* @param {*} userShop
* @param {number} bundleDealId
* @param {*} itemList
* @returns {*}
*```json
*{
"error": "",
"message": "",
"request_id": "fdsfsdafdasfbgvfdgergd",
"response": {
"failed_list": [
{
"item_id": 1234,
"fail_error": "bundle.bundle_deal_no_shipping_channel",
"fail_message": "This product does not set shipping channel."
}
],
"success_list": [
1111,
2222,
3333
]
}
*}
*```
*/
exports.AddBundleDealItem = async (userShop, bundleDealId, itemList) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/add_bundle_deal_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({
bundle_deal_id: bundleDealId,
item_list: itemList
}));
return responseData;
} catch (err) {
throw err;
}
}
/**
* bundle deal 수정
* @param {*} userShop
* @param {*} bundleDealId
* @param {*} bundleDeal
* @returns {*}
* ```json
* {
"error": "",
"message": "",
"request_id": "2cda1f9c9b44449aedbc11dwer3ced242",
"response": {
"bundle_deal_id": 6833,
"name": "bundle name",
"start_time":1655654412,
"end_time": 1658246412,
"bundle_deal_rule": {
"rule_type": 1,
"discount_value": 11.0,
"fix_price": 11.0,
"discount_percentage": 33,
"min_amount": 123
},
"purchase_limit": 3
}
*}
*```
*/
exports.UpdateBundleDeal = async (userShop, bundleDealId, bundleDeal) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/update_bundle_deal';
// 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(_.assign(bundleDeal, {
bundle_deal_id: bundleDealId
})));
return responseData;
} catch (err) {
throw err;
}
}
/**
* bundle deal 상품 목록 수정
* @param {*} userShop
* @param {*} bundleDealId
* @param {*} itemList
* @returns {*}
* ```json
* {
"error": "",
"message": "",
"request_id": "f4e022015c4ef214bc291257a2156958",
"response": {
"failed_list": [
{
"item_id": 12341213,
"fail_error": "bundle.bundle_deal_no_shipping_channel",
"fail_message": "This product does not set shipping channel."
}
],
"success_list": [
1111,
2222,
3333
]
}
*}
*```
*/
exports.UpdateBundleDealItem = async (userShop, bundleDealId, itemList) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/update_bundle_deal_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({
bundle_deal_id: bundleDealId,
item_list: itemList
}));
return responseData;
} catch (err) {
throw err;
}
}
/**
* bundle deal 삭제
* @param {*} userShop
* @param {*} bundleDealId
* @returns {*}
*```json
*{
"error": "",
"message": "",
"request_id": "fed23116ae34ca00d67f2c7bf57c2d22",
"response": {
"failed_list": [
{
"item_id": 1234,
"fail_error": "bundle.bundle_deal_item_not_exist",
"fail_message": "Please update item of bundel deal"
}
],
"success_list": [
1111,
2222,
3333
]
}
*}
*```
*/
exports.DeleteBundleDeal = async (userShop, bundleDealId) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/delete_bundle_deal';
// 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({
bundle_deal_id: bundleDealId,
}));
return responseData;
} catch (err) {
throw err;
}
}
/**
* bundle deal에서 상품 삭제
* @param {*} userShop
* @param {*} bundleDealId
* @param {*} itemIds
* @returns {*}
* ```json
* {
"bundle_deal_id": 11111324,
"item_list": [
{
"item_id": 12341213,
"status": 1
}
]
*}
* ```
*/
exports.DeleteBundleDealItem = async (userShop, bundleDealId, itemIds) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/delete_bundle_deal_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({
bundle_deal_id: bundleDealId,
item_list: itemIds
}));
return responseData;
} catch (err) {
throw err;
}
}
/**
* bundle deal 종료
* @param {*} userShop
* @param {*} bundleDealId
* @returns {*}
* ```json
* {
"error": "",
"message": "",
"request_id": "401185ecbb1f8dc1fabf4f96bbaa0884",
"response": {
"bundle_deal_id": 11111
}
*}
*```
*/
exports.EndBundleDealItem = async (userShop, bundleDealId) => {
try {
// access token 유효 확인
let {
shop_id,
accessToken
} = await RefreshToken(userShop);
// uri
const uri = '/api/v2/bundle_deal/end_bundle_deal';
// 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({
bundle_deal_id: bundleDealId,
}));
return responseData;
} catch (err) {
throw err;
}
}