第三方API 順豐API呼叫總結 java

2021-08-18 18:19:51 字數 4551 閱讀 4691

豐橋系統中申請api介面,獲得url(呼叫位址)、clientcode(顧客編碼)、checkword(校驗碼)。

url:

1.請求xml報文:

service 屬性定義「服務名」;head元素定義「顧客編碼」

請求資料xml
2.響應xml報文:

head元素值為「ok」或「err」;ok代表交易成功,err代表發生系統或業務異常,交易失敗;對於批量交易場景,只能為成功/失敗,無部分成功/部分失敗

正常響應資料xml

錯誤詳細資訊

1.下訂單介面(orderservice):

①客戶系統向順豐下發訂單 ②為訂單分配運單號

/**

* 獲取順豐下訂單介面xml

* @param params

* @return

*/private string getorderservicerequestxml(mapparams)

2.訂單結果查詢介面(ordersearchservice):

因internet環境下,網路不是絕對可靠,使用者系統下訂單到順豐後,不一定可以收到順豐系統返回的資料,此介面用於在未收到返回資料時,查詢下訂單(含篩選)介面客戶訂單當前的處理情況。重複下單時可呼叫此介面查詢下單順豐單號

/**

* 獲取順豐訂單結果查詢介面xml

* @param params

* @return

*/private string getordersearchservicerequestxml(mapparams)

3.路由查詢介面(routeservice):

支援兩類查詢方式:①根據順豐運單號查詢 ②根據客戶訂單號查詢 

/**

* 獲取順豐路由查詢介面xml

* @param params

* @return

*/private string getrouteservicerequestxml(mapparams)

①把xml報文與checkword前後連線

②把連線後的字串做md5編碼

③把md5編碼後的資料進行base64編碼,此時編碼後的字串即為校驗碼

//介面url

@value("$")

private string url = ""

/**

* 順豐介面

* @param params

* @param type 1-下訂單介面 2-訂單結果查詢介面 3-路由查詢介面

* @return

*/@override

public sfexpressresponse sfexpressmethod(mapparams, int type) throws exception,type={}", jsonobject.tojsonstring(params),type);

if (type < 1)

string requestxml = "";

string methodname = "";

if (type == 1) else if (type == 2) else if (type == 3)

string verifycode = requestxml + checkword;

加密 + base64編碼

messagedigest md5 = messagedigest.getinstance("md5");

md5.update(verifycode.getbytes("utf8"));

verifycode = base64util.encode(md5.digest());

請求maptohttpparams = new hashmap<>();

logger.info("請求順豐介面"+methodname, tohttpparams.tostring());

logger.info("請求順豐介面"+methodname+",result="+resultstr);

sfexpressresponse response = (sfexpressresponse)

xmlutil.converttoobject(sfexpressresponse.class,resultstr);

return response;

}

綜合三個介面的response xml,將sfexpressresponse定義如下(樹狀結構物件):

/**

* 順豐介面response物件

* author: jing.mn

* date: 2018/4/9 16:17

*/@xmlaccessortype(xmlaccesstype.field)

@xmlrootelement(name = "response")

public class sfexpressresponse implements serializable

public void setcode(string code)

public string gettext()

public void settext(string text)

}@xmlaccessortype(xmlaccesstype.none)

public static class body

public void setorderresponse(sfexpressresponse.orderresponse orderresponse)

public sfexpressresponse.routeresponse getrouteresponse()

public void setrouteresponse(sfexpressresponse.routeresponse routeresponse)

}@xmlrootelement(name="orderresponse")

@xmlaccessortype(xmlaccesstype.none)

public static class orderresponse

public void setorderid(string orderid)

public string getmailno()

public void setmailno(string mailno)

public string getorigincode()

public void setorigincode(string origincode)

public string getdestcode()

public void setdestcode(string destcode)

public string getfilterresult()

public void setfilterresult(string filterresult)

}@xmlrootelement(name="routeresponse")

@xmlaccessortype(xmlaccesstype.none)

public static class routeresponse

public void setmailno(string mailno)

public listgetroute()

public void setroute(listroute)

}@xmlrootelement(name="route")

@xmlaccessortype(xmlaccesstype.none)

public static class route

public void setaccepttime(string accepttime)

public string getremark()

public void setremark(string remark)

public string getopcode()

public void setopcode(string opcode)

}public string gethead()

public void sethead(string head)

public sfexpressresponse.error geterror()

public void seterror(sfexpressresponse.error error)

public sfexpressresponse.body getbody()

public void setbody(sfexpressresponse.body body)

}

第三方平台API呼叫

其實都遵守乙個協議,一直想寫篇總結來著,突然對著螢幕就沒什麼好說的了 就是兩點,第一獲取令牌,第二用令牌去換取資訊 第一次多用key或者key srect,得到的是token 第二次 用token去呼叫令牌 傳送的請求有2中,post get 罷了其實這就是精髓 第一獲取令牌,第二用令牌去換取資訊 ...

PHP程式設計中第三方API如何呼叫

require conn.php header access control allow origin 允許任何訪問 包括 header content type content type text html charset utf 8 編寫使用者手機歸屬地的介面的編寫 通過get方式來獲取手機號,...

Python及第三方庫api檢視

為了方便python及整合的第三方庫便與檢視,python中有個方便的方法,可以讓我們快速簡單的實現這個功能。配置pydoc服務,cmd中輸入如下 python m pydoc p 1234回車後 瀏覽器中執行 http localhost 1234 就可以開啟python及整合的其他庫的api了。...