@xw-tech/jdtbk-sdk
Version:
封装京东开放平台sdk
63 lines (62 loc) • 2.19 kB
JavaScript
;
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;