德邦快遞接口開(kāi)發(fā)-java(工具類)

德邦快遞的接入,關(guān)鍵也是組合數(shù)據(jù),提交并處理響應(yīng)數(shù)據(jù)邢隧,流程和順豐差不多痕慢,工具類比較簡(jiǎn)單,官方文檔都有抑堡,在做之前摆出,先把官方文檔都讀一遍,大概知道要找的內(nèi)容在什么位置首妖,以及了解流程偎漫。

對(duì)接規(guī)范和流程
◆傳輸協(xié)議
暫時(shí)只支持HTTP協(xié)議進(jìn)行通信。
◆數(shù)據(jù)傳輸格式
所有接口暫只支持json消息格式有缆。
◆編碼格式:UTF-8
交互編碼格式統(tǒng)一用UTF-8,避免傳遞中文數(shù)據(jù)出現(xiàn)亂碼象踊。
◆安全驗(yàn)證
在數(shù)據(jù)傳輸過(guò)程中,為避免數(shù)據(jù)被篡改,需要對(duì)數(shù)據(jù)進(jìn)行加密温亲。入?yún)⒂伤膫€(gè)參數(shù)組成:
params(請(qǐng)求參數(shù)),digest(密文摘要), timestamp(時(shí)間戳),companyCode(第三方接入商的公司編碼,雙方約定)
參數(shù)傳遞采用http post請(qǐng)求,請(qǐng)求消息頭設(shè)置("Content-Type","application/x-www-form-urlencoded;charset=utf-8")
在傳輸?shù)膮?shù)中,既要傳遞原始的json字符串params,又要傳輸加密后的摘要digest。
設(shè)置有效的請(qǐng)求時(shí)間戳,當(dāng)接收端收到請(qǐng)求端的時(shí)間差不在有效的時(shí)間戳范圍內(nèi),則認(rèn)為該訂單無(wú)效通危。
德邦開(kāi)放平臺(tái)可以根據(jù)不同的公司設(shè)置不同的時(shí)間戳有效時(shí)長(zhǎng)铸豁。調(diào)用方在重發(fā)消息時(shí)時(shí)間戳應(yīng)重新生成,請(qǐng)求報(bào)文的摘要也需要重新生成。
timestamp:
13位Unix時(shí)間戳 timestamp = System.currentTimeMillis();
digest:
摘要的生成規(guī)則是 String plainText = params + appkey + timestamp,注意傳遞的timestamp要和加密的timestamp值相同菊碟。
加密源碼如下:

private static String getDigest(String plainText) {
    return Base64.encodeBase64String(DigestUtils.md5Hex(plainText).getBytes());
}

Base64引用 : org.apache.commons.codec.binary.Base64
DigestUtils引用 : org.apache.commons.codec.digest.DigestUtils

然后可以測(cè)試一個(gè)流程是否可行节芥,比如【新】下單服務(wù)接口:

static String params = "{\n" + 
        "    \"companyCode\":\"EWB111\",\n" + 
        "    \"custOrderNo\":\"123456\",\n" + 
        "    \"customerCode\":\"12345678\",\n" + 
        "    \"logisticID\":\"LPEXP33343111111113445\",\n" + 
        "    \"needTraceInfo\":1,\n" + 
        "    \"orderType\":\"1\",\n" + 
        "    \"packageInfo\":{\n" + 
        "        \"cargoName\":\"貨物名\",\n" + 
        "        \"deliveryType\":\"9\",\n" + 
        "        \"totalNumber\":2,\n" + 
        "        \"totalVolume\":0.01,\n" + 
        "        \"totalWeight\":1,\n" + 
        "               \"packageService\":\"紙\"\n" + 
        "    },\n" + 
        "    \"receiver\":{\n" + 
        "        \"address\":\"詳細(xì)地址\",\n" + 
        "        \"city\":\"上海市\(zhòng)",\n" + 
        "        \"companyName\":\"德邦\",\n" + 
        "        \"county\":\"青浦區(qū)\",\n" + 
        "        \"mobile\":\"180****2531\",\n" + 
        "        \"name\":\"AAA\",\n" + 
        "        \"province\":\"上海\",\n" + 
        "        \"town\":\"徐涇鎮(zhèn)\"\n" + 
        "    },\n" + 
        "\n" + 
        "    \"sender\":{\n" + 
        "        \"address\":\"詳細(xì)地址\",\n" + 
        "        \"city\":\"上海市\(zhòng)",\n" + 
        "        \"companyName\":\"德邦\",\n" + 
        "        \"county\":\"青浦區(qū)\",\n" + 
        "        \"mobile\":\"180****3451\",\n" + 
        "        \"name\":\"AAA\",\n" + 
        "        \"province\":\"上海\",\n" + 
        "        \"town\":\"徐涇鎮(zhèn)\"\n" + 
        "    },\n" + 
        "    \"transportType\":\"PACKAGE\",\n" + 
        "       \"gmtCommit\":\"@time\",\n" + 
        "       \"payType\":\"1\",\n" + 
        "       \"isOut\":\"N\"\n" + 
        "}";

public static void main(String[] args) throws JSONException, Exception {
    long timestamp = System.currentTimeMillis();
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(timestamp);
    
    String _params = params.replaceAll("@time", DateUtils.dateToString(cal, "yyyy-MM-dd HH:mm:ss"));
    String digest = getDigest(_params + 你的appkey + timestamp);
    String companyCode = "你的company code";
    
    Map map = new LinkedHashMap();
    map.put("params", _params);
    map.put("digest", digest);
    map.put("timestamp", String.valueOf(timestamp));
    map.put("companyCode", companyCode);
    
    String response = HttpClientUtils.post(NEW_ORDER_URL, map);
    System.out.println(response);
}

如無(wú)意外,應(yīng)該會(huì)收到成功的響應(yīng)數(shù)據(jù)逆害,然后你就可以一次性地把你需要的接口都測(cè)試一遍头镊,只需要修改一下傳入的參數(shù),看到一片綠還是挺爽的魄幕。測(cè)試完相艇,再慢慢逐個(gè)完善業(yè)務(wù)邏輯吧。


測(cè)試通過(guò)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纯陨,一起剝皮案震驚了整個(gè)濱河市坛芽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翼抠,老刑警劉巖咙轩,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異阴颖,居然都是意外死亡活喊,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門量愧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)钾菊,“玉大人,你說(shuō)我怎么就攤上這事偎肃∩诽蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵软棺,是天一觀的道長(zhǎng)红竭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)喘落,這世上最難降的妖魔是什么茵宪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮瘦棋,結(jié)果婚禮上稀火,老公的妹妹穿的比我還像新娘。我一直安慰自己赌朋,他們只是感情好凰狞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布篇裁。 她就那樣靜靜地躺著,像睡著了一般赡若。 火紅的嫁衣襯著肌膚如雪达布。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天逾冬,我揣著相機(jī)與錄音黍聂,去河邊找鬼。 笑死身腻,一個(gè)胖子當(dāng)著我的面吹牛产还,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嘀趟,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼脐区,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了她按?” 一聲冷哼從身側(cè)響起牛隅,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酌泰,沒(méi)想到半個(gè)月后倔叼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宫莱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哩罪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片授霸。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖际插,靈堂內(nèi)的尸體忽然破棺而出碘耳,到底是詐尸還是另有隱情,我是刑警寧澤框弛,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布辛辨,位于F島的核電站,受9級(jí)特大地震影響瑟枫,放射性物質(zhì)發(fā)生泄漏斗搞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一慷妙、第九天 我趴在偏房一處隱蔽的房頂上張望僻焚。 院中可真熱鬧,春花似錦膝擂、人聲如沸虑啤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)狞山。三九已至全闷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萍启,已是汗流浹背总珠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伊约,地道東北人姚淆。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像屡律,于是被迫代替她去往敵國(guó)和親腌逢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容