UNPKG

shopee-v2-api

Version:

568 lines (514 loc) 13.9 kB
/* -------------------------------------------------------------------------- */ /* 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; } }