UNPKG

@xw-tech/jdtbk-sdk

Version:
63 lines (62 loc) 2.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const axios_1 = __importDefault(require("axios")); const utils_1 = require("./utils"); const qs_1 = require("qs"); // 防止主应用修改axios默认配置 const axiosInstance = axios_1.default.create({}); class TbkService { appKey; secret; endpoint; constructor(appKey, secret, endpoint = 'https://api.jd.com/routerjson') { this.appKey = appKey; this.secret = secret; this.endpoint = endpoint; } async request(apiName, params) { const args = { method: apiName, app_key: this.appKey, timestamp: (0, utils_1.YYYYMMDDHHmmss)(), format: 'json', v: '1.0', sign_method: 'md5', '360buy_param_json': JSON.stringify(params), }; args.sign = (0, utils_1.sign)(args, this.secret); const url = `${this.endpoint}?${(0, qs_1.stringify)(args)}`; try { const res = await axiosInstance({ method: 'post', url: url, }); if (res.status !== 200) { const err = new Error('NetWork-Error'); err.name = 'NetWork-Error'; err.code = 15; err.sub_code = '0'; err.sub_msg = '网络错误'; return Promise.reject(err); } if (res.data.error_response) { const error = res.data.error_response; const errData = { code: parseInt(error.code), message: error.zh_desc, }; return Promise.reject(errData); } const respField = res.data[(0, utils_1.getApiResponseName)(apiName)]; const respData = JSON.parse(respField.getResult || respField.queryResult || respField.result); return respData; } catch (e) { return Promise.reject(e); } } } exports.default = TbkService;