达达物流的发单api有人对接过吗?
发布于 7 年前 作者 whw1988 5877 次浏览 来自 问答

image.png

这样的报错,无从下手啊

10 回复

参数传的不对吧,少什么参数或者参数格式不对 这种问题你只能看文档

@im-here 都没有具体 告知哪个参数不对唉,也没有技术支持qq群或者微信群。您对接过达达api吗?

@whw1988 没对接过,但是我刚看了下,有详细的文档呢,你请求的是哪个api? 而且还有一个api测试工具,可以试试 http://newopen.imdada.cn/#/development/file/apiTest?_k=ts7taw

@im-here

var params = dada.gen_common_params();
    params.body = {
        shop_no: "11047059",
        origin_id: "1122334444",
        city_code:"0592",
        cargo_price: 0.01,
        is_prepay: 0,
        receiver_name: "22",
        receiver_address: "厦门市",
        receiver_lat: 24,// (高德坐标系)
        receiver_lng: 118,
        callback: "http://11111",
        receiver_phone: "1344393"
    }

    var signature = dada.gen_signature(params);

    params.signature = signature;

    console.log(params);

    request({
        url: 'http://newopen.qa.imdada.cn/api/order/addOrder',
        method: "POST",
        json: true,
        headers: {
            'Content-Type': 'application/json; charset=UTF-8'
        },
        body: JSON.stringify(params)
    }, function(error, response, body) {
        console.log(error);//请求接口参数异常,请查看开发文档参数设定
        console.log(body);
        if (!error && response.statusCode == 200) {
        }
    });


用到的函数:

var gen_signature=function(paramsJson){
    var sorter=function(paramsJson){
        var sortedJson={};
        var sortedKeys=Object.keys(paramsJson).sort();
        for(var i=0;i<sortedKeys.length;i++){
            sortedJson[sortedKeys[i]] = paramsJson[sortedKeys[i]]
        }
        return sortedJson;
    }
    var sortedParam=sorter(paramsJson);
    var needSignatureStr="";
    for(var key in sortedParam){
        var value=sortedParam[key];
        needSignatureStr=needSignatureStr+key+value;
    }
    needSignatureStr = secretKey + needSignatureStr + secretKey;
    var md5er = crypto.createHash('md5');
    md5er.update(needSignatureStr,"UTF-8");
    return md5er.digest('hex').toUpperCase();
};

var gen_common_params = function(){
    var timestamp = parseInt(new Date().getTime()/1000)+"";
    var format = "json";
    var v = "1.0";
    var source_id = "73753";

    return {
        app_key:app_key,
        timestamp:timestamp,
        format:format,
        v:v,
        source_id:source_id
    }
}

@im-here api测试工具是验证回调的而已

@whw1988 建议你用postman之类第三方工具调用一下api看看返回什么 这种情况也许大多数情况是request请求的格式或者header不对导致的

postman一样的错误

@whw1988 那我也不知道了,官网上好像有demo,你下个下来看看吧

@im-here 可以了 params.body要是字符串

回到顶部