官方文档没有NodeJs的demo,
var request = require('request');
var crypto = require("crypto");
var qs = require('querystring');
var log = require('./logger.js');
function md5(str) {
var crypto_md5 = crypto.createHash('md5');
crypto_md5.update(str, 'utf8'); // 加入编码
return crypto_md5.digest('hex');
}
function LogisticsQuery (ShipperCode, LogisticCode, CustomerName) {
return new Promise((resolve, reject) => { //异步调用
var EBusinessID = "0000000"; //快递鸟用户ID
var AppKey = "***-*****-***-****-******"; //快递鸟商家秘钥
var ReqURL = "http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx"; //请求地址
var requestData = {
ShipperCode: ShipperCode,
LogisticCode: LogisticCode
};
if (CustomerName) requestData.CustomerName = CustomerName //顺丰需要填收件或者发件人手机后四位,京东需要填商品订单号,其他物流不需要这个参数
var str = JSON.stringify(requestData);
var data = encodeURIComponent(str).replace(/%22/gi, '%27');
var ss = str.replace(/"/gi, "'");
sign = md5(ss + AppKey);
var s = new Buffer.from(sign).toString('base64');
sign = encodeURIComponent(s);
var json = {
"EBusinessID": EBusinessID,
"RequestType": "1002", //在途监控(企业版无限制):8001 即时查询(免费版500次/日,只能查中圆申通):1002
"RequestData": data,
"DataSign": sign
};
var postData = qs.stringify(json);
//console.log(postData);
request({
url: ReqURL,
method: 'POST',
headers: {
"content-type": "application/x-www-form-urlencoded"
},
body: postData
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
var result = {
"status": 200,
"message": "success",
"data": JSON.parse(body)
}
resolve(result)
} else {
var result = {
"status": 400,
"message": "error",
"data": ""
}
resolve(result)
}
});
});
}
module.exports = LogisticsQuery;
postman调用结果