查看文檔:德邦文檔鏈接
【新】下單服務(wù)接口融合了標(biāo)準(zhǔn)類的散客電子面單,快遞電子面單,零擔(dān)電子面單所有的下單接口;
該接口提供的服務(wù):
(1)快遞電子面單,零擔(dān)電子面單和散客電子面單下單,并支持預(yù)埋單號(hào)或者同步獲取運(yùn)單號(hào);
(2)軌跡訂閱
根據(jù)提交數(shù)據(jù)的格式,我們建立對(duì)應(yīng)的類文件,這樣方便轉(zhuǎn)化成對(duì)應(yīng)的json數(shù)據(jù)提交,響應(yīng)的數(shù)據(jù)也是一樣的道理。
這里給出2個(gè)類文件,剩下的根據(jù)json結(jié)構(gòu)對(duì)應(yīng)建立即可。
public class DopOrder {
private String logisticCompanyID = "DEPPON";
private String companyCode = "公司編碼"; //核算第三方接入商的公司編碼(雙方約定,建議公司簡(jiǎn)拼或者代碼,字母大寫)
private String customerCode = "客戶編碼"; //與德邦crm中的客戶編碼保持一致
private String orderSource = "客戶編碼";
private String logisticID; //渠道單號(hào) + 單號(hào)id
private int needTraceInfo = 1; //是否需要訂閱軌跡 1:是(為是時(shí)要對(duì)接軌跡推送接口) 2:否 默認(rèn)否
private int orderType = 2; //下單模式 1、 散客模式(單量較小,平臺(tái)類,異地調(diào)貨,退換貨等發(fā)貨地址不固定-需要通知快遞員或者司機(jī)上門取件打單); 2、 大客戶模式(倉(cāng)庫(kù)發(fā)貨,固定點(diǎn)出貨,單量較大客戶自行打印標(biāo)簽,快遞員直接盲掃走貨)
private DopPackageInfo packageInfo; //包裹信息
private DopAddr receiver; // 收貨人信息
private DopAddr sender; // 發(fā)貨人信息
private DopAddService addServices; //增值服務(wù)
private String transportType; //運(yùn)輸方式/產(chǎn)品類型 快遞運(yùn)輸方式:3.60特惠件 RCP; 精準(zhǔn)汽運(yùn)短途 (常用):JZQY_SHORT ; 精準(zhǔn)城運(yùn)(常用):JZQY_LONG ; 精準(zhǔn)空運(yùn) (一般):JZKY
private String gmtCommit; //訂單提交時(shí)間 2012-11-27 18:44:19 系統(tǒng)當(dāng)前時(shí)間
private int payType; //支付方式 0:發(fā)貨人付款(現(xiàn)付) 1:收貨人付款(到付) 2:發(fā)貨人付款(月結(jié)) (電子運(yùn)單客戶不支持寄付)
private String isOut = "N"; //是否外發(fā) Y:需要 N: 不需要(大客戶模式下運(yùn)輸方式為零擔(dān)時(shí)必填)
private String vistReceive = "Y";
private String remark;
// getter and setter
}
public class DopPackageInfo {
private String cargoName; //貨物名稱
private String deliveryType; //送貨方式 1、自提; 2、送貨進(jìn)倉(cāng); 3、送貨(不含上樓); 4、送貨上樓; 5、大件上樓
private int totalNumber; //總件數(shù)(包裹數(shù))
private double totalWeight = 1; //總重量
private String packageService; //包裝 包裝(直接用中文) : 紙、纖、木箱、木架、托膜、托木(大客戶模式下運(yùn)輸方式為零擔(dān)時(shí)必填)
}
通過表單,生成請(qǐng)求類數(shù)據(jù),很多web框架都支持將各種數(shù)據(jù)整合成類數(shù)據(jù):
JSONObject postJson = JSONObject.fromObject(dopOrder);
String _params = postJson.toString();
提交數(shù)據(jù)并接收響應(yīng)數(shù)據(jù),處理邏輯。
private DopOrderResponse syncOrder(long timestamp, String _params, String url) throws Exception {
String digest = DopUtils.getDigest(_params + DopUtils.appkey + timestamp);
Map map = new LinkedHashMap();
map.put("params", _params);
map.put("digest", digest);
map.put("timestamp", String.valueOf(timestamp));
map.put("companyCode", DopUtils.companyCode);
String response = HttpClientUtils.post(url, map);
System.out.println(response);
JSONObject responseJson = JSONObject.fromObject(response);
DopOrderResponse responseBean = (DopOrderResponse) JSONObject.toBean(responseJson, DopOrderResponse.class);
return responseBean;
}