浦凱捷 趙娜



摘要:電能e購工業(yè)品商城(以下簡稱工業(yè)品商城)采用Spring-MVC框架基于JAVA語言開發(fā),與供貨商平臺集成時需要根據(jù)供貨商接口規(guī)范進行接口調(diào)用的設(shè)計與開發(fā),以實現(xiàn)平臺互操作。論文以供貨商A為例,介紹了訂單類接口接入技術(shù)的設(shè)計與實現(xiàn)。在今后平臺統(tǒng)一標(biāo)準(zhǔn)接口調(diào)用開發(fā)中,具有重要的參考價值。
關(guān)鍵詞:java;API接口;接口調(diào)用
中圖分類號:TP311? ? ?文獻標(biāo)識碼:A? ? 文章編號:1007-9416(2020)10-0000-00
0序言
工業(yè)品商城是基于JAVA語言,采用springMVC+mybatis+springboot+solr+redis+dubbo+zookeeper+sqlserver框架實現(xiàn)的電商平臺。為與供應(yīng)商平臺密切合作,無縫對接,開發(fā)時需將工業(yè)品商城與供應(yīng)商平臺實現(xiàn)互操作。平臺開發(fā)需要提供統(tǒng)一接口規(guī)范以滿足互操作需求。具體需求如下:(1)商品詳細信息等需要由供貨商通用平臺導(dǎo)入;(2)訂單狀態(tài)類型等信息需要與供貨商平臺統(tǒng)一;(3)數(shù)據(jù)類型參數(shù)傳遞等需要與供貨商平臺一致。因此,工業(yè)品商城的開發(fā)強化了API接口的服務(wù)調(diào)用設(shè)計以滿足與供貨商平臺對接需求。
1供貨商平臺接口規(guī)范
1.1接入技術(shù)介紹
工業(yè)品商城是集成供貨商A的MRO產(chǎn)品采購B2B電子商務(wù)平臺獨立開發(fā)。供貨商A電子商務(wù)平臺提供了統(tǒng)一的接口服務(wù)。它支持兩種接入方式:實時接口、文件接口,并提供先關(guān)自服務(wù)功能,向外部業(yè)務(wù)系統(tǒng)提供信息公告、結(jié)算對賬等服務(wù)。
1.2傳輸協(xié)議需求
根據(jù)供貨商A電子商務(wù)平臺的接入規(guī)范,服務(wù)調(diào)用需要采用HTTPS傳輸協(xié)議,并采用RESTFUL風(fēng)格的服務(wù)訪問方式。
為了提供簡單、規(guī)范化的技術(shù)實現(xiàn),使用POST方式發(fā)起API請求;GET請求的數(shù)據(jù)會附在URL之后,以問號(?)分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連。POST把提交的數(shù)據(jù)則放置在HTTP包的包體中。所有參數(shù)值需要轉(zhuǎn)換為UTF-8編碼。
1.3 API調(diào)用方式
1.3.1 調(diào)用機制
API調(diào)用機制分為同步、異步兩種方式,根據(jù)業(yè)務(wù)的不同,選擇不同的交互機制,以業(yè)務(wù)系統(tǒng)到工業(yè)品商城的異步調(diào)用為例,商城發(fā)起HTTPS請求,業(yè)務(wù)系統(tǒng)返回響應(yīng)結(jié)果后開啟獨立的業(yè)務(wù)處理進程,處理完成后由業(yè)務(wù)系統(tǒng)發(fā)起HTTPS請求,返回異步處理結(jié)果。調(diào)用細節(jié)如圖1所示。
1.3.2 API調(diào)用參數(shù)說明
API調(diào)用開發(fā)中,需要使用供貨商A規(guī)范化的參數(shù)格式,其中名稱參數(shù),用于HTTP-POST方式JSON報文中節(jié)點的名稱和HTTP-GET方式鏈接中的節(jié)點名稱,所有節(jié)點名稱都小寫;類型參數(shù)用于標(biāo)識此節(jié)點的參數(shù)類型;必填?參數(shù)標(biāo)識此參數(shù)是否必填,Y為必填,N為選填。具體格式與樣例如表1所示。除獲取token接口之外,其他API接口都需要傳遞公共參數(shù),以保證接口數(shù)據(jù)可查。公共參數(shù)格式說明限于篇幅不再介紹。
2供貨商訂單類平臺接口調(diào)用實現(xiàn)
工業(yè)品商城開發(fā)中,需要實現(xiàn)鑒權(quán)、商品、地址、價格、訂單等不少于十類的接口服務(wù)對接,以訂單類服務(wù)為例,對下單、確認、取消、查詢、發(fā)貨配送、訂單完結(jié)等等接口都有規(guī)范化的接口服務(wù)。
2.1 訂單模塊接口服務(wù)設(shè)計
本模塊包括統(tǒng)一下單、訂單確認、訂單取消、訂單接口反差、查詢訂單信息、發(fā)貨單配送信息、訂單完結(jié)通知等具體服務(wù)接口。API接口請求說明如表2所示。
2.1.1統(tǒng)一下單接口
工業(yè)品將需要購買的商品傳遞給供貨商A,供貨商A進行下單校驗返回下單結(jié)果。統(tǒng)一下單是下的預(yù)訂單,供貨商A只會鎖定價格和庫存,不會執(zhí)行配貨物流工作。統(tǒng)一下單接口需要做冪等性校驗,如果訂單號相同,需要返回訂單號重復(fù),不能重復(fù)下單。下單時需要按照下單價格模式要求做價格校驗,價格不一致不能下單,以免后續(xù)訂單確認失敗。由于工業(yè)品商城采用集中開票模式,統(tǒng)一下單接口中的發(fā)票信息只做參考使用,實際的開票信息需要按照發(fā)票申請接口確定。
2.1.2查詢訂單信息接口
根據(jù)電商的訂單號,查詢訂單詳細信息。如果發(fā)生拆單時,用父訂單號可以查詢所有拆分的子訂單信息。訂單查詢的結(jié)果中的金額信息也需要滿足統(tǒng)一下單接口中的金額信息要求。
2.1.3查詢訂單、發(fā)貨單配送信息接口
根據(jù)訂單號查詢訂單的配送信息,按照時間給配送信息明細。供貨商A支持發(fā)貨單查詢,訂單查詢目前數(shù)據(jù)不完整。
2.2訂單模塊接口調(diào)用實現(xiàn)
在我方平臺訂單付款成功后,系統(tǒng)調(diào)用供應(yīng)商第三方訂單確認預(yù)占庫存接口。此時,調(diào)用成功后,第三方會給我們返回一個訂單號,根據(jù)這個訂單號可以和我方平臺訂單號相互對應(yīng)。獲取信息后,實現(xiàn)數(shù)據(jù)傳遞的具體代碼片段如下:
1. GajReturnData?gajReturnData?=?gajInterfaceService.mall_submitOrder(gajSubmit);
2. if(!StringUtils.isNull(gajReturnData)){
3. boolean?success?=?gajReturnData.isSuccess();
4. String?gajSubmitResult?=?gajReturnData.getResult();
5. System.out.println("接口返回信息=======》"+gajSubmitResult);
6. if(success){
7. orderResult?=?true;
8. JSONObject?fromObject?=?JSONObject.fromObject(gajSubmitResult);
9. String?gajOrderId?=?fromObject.getString("orderId");
10. emallOrderWithBLOBs.setSupplierOrderid("GAJ"+gajOrderId);
11. emallOrderWithBLOBs.setSkuGoodsBody(fromObject.getString("sku"));//訂單詳情??Sku返回信息中type為0普通、1附件、2贈品,oid為主商品skuid,如果本身是主商品,則oid為0。
12. emallOrderWithBLOBs.setOrderPrice(fromObject.getString("orderPrice")?==?null???0.0f?:?fromObject.getDouble("orderPrice"));//訂單總價格(含稅)
數(shù)據(jù)傳遞實現(xiàn)后,更新供貨商A的訂單信息,若更新訂單表成功,則給供應(yīng)商推送信息,供應(yīng)商更新庫存。如果供貨商無庫存等原因?qū)е率。瑒t提示供貨商A下預(yù)占庫存操作失敗。
訂單生成后,供應(yīng)商再推送訂單發(fā)貨,妥投,拒收,取消,售后等消息。我方平臺獲取后,調(diào)用相應(yīng)的訂單詳情等接口。得到所需數(shù)據(jù)來修改我方平臺相應(yīng)數(shù)據(jù)庫信息。以訂單妥投、拒收為例,type=5為訂單妥投、拒收類型。在文件GajMessageTask.java中調(diào)用一個方法
3結(jié)論
通過接口調(diào)用代碼的開發(fā),實現(xiàn)用戶商品下單、供應(yīng)商預(yù)占庫存,平臺互操作。在工業(yè)品商城中,使用API接口的服務(wù)調(diào)用設(shè)計,調(diào)用供應(yīng)商平臺的數(shù)據(jù)和接口,實現(xiàn)雙方平臺間的用戶信息、訂單信息、物流信息等的實時同步,使工業(yè)品商城平臺實現(xiàn)與供應(yīng)商配平臺的接口對接,使工業(yè)品商城實現(xiàn)實現(xiàn)平臺之間得靈活互操作,滿足了開發(fā)需求。
收稿日期:2020-07-22
作者簡介:浦凱捷(1985—),男,北京人,工學(xué)學(xué)士,研究方向:軟件技術(shù),電子商務(wù)。
通訊作者:趙娜(1982—),女,北京人,工學(xué)碩士,講師,研究方向:計算機網(wǎng)絡(luò)技術(shù),網(wǎng)絡(luò)安全。
Design and Implementation of Electrical Power E-shopping
Mall Interface Call Based on Spring-MVC
PU Kai-jie,ZHAO Na
(1. SPIC China Power Complete Equipment co., ltd. Beijing? 100080;
2. Beijing Polytechnic,Beijing? 100176)
Abstract: Electric power E-Shopping Industrial Products Mall (hereinafter referred to as industrial Products mall) adopts Spring-MVC framework based on JAVA language development. When integrating with supplier platform, it needs to design and develop interface calls according to supplier interface specifications to achieve platform interoperability.Taking supplier A as an example, this paper introduces the design and implementation of the order-type interface access technology. It may have a significant reference to the development of platform unified standard interface invocation.
keywords:Java;api interface;api invoking