107 changed files with 4012 additions and 189 deletions
@ -1,54 +0,0 @@
|
||||
/** |
||||
* Copyright (C) 2018-2022 |
||||
* All rights reserved, Designed By www.yixiang.co |
||||
* 注意: |
||||
* 本软件为www.yixiang.co开发研制,未经购买不得使用 |
||||
* 购买后可获得全部源代码(禁止转卖、分享、上传到码云、github等开源平台) |
||||
* 一经发现盗用、分享等行为,将追究法律责任,后果自负 |
||||
*/ |
||||
package co.yixiang.tools.express.config; |
||||
|
||||
|
||||
import co.yixiang.constant.ShopConstants; |
||||
import co.yixiang.enums.ShopCommonEnum; |
||||
import co.yixiang.tools.express.ExpressService; |
||||
import co.yixiang.utils.RedisUtils; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.context.annotation.Configuration; |
||||
|
||||
@Configuration(proxyBeanMethods = false) |
||||
public class ExpressAutoConfiguration { |
||||
|
||||
|
||||
private static RedisUtils redisUtil; |
||||
|
||||
@Autowired |
||||
public ExpressAutoConfiguration(RedisUtils redisUtil) { |
||||
ExpressAutoConfiguration.redisUtil = redisUtil; |
||||
} |
||||
|
||||
public static ExpressService expressService() { |
||||
ExpressService expressService = (ExpressService)redisUtil.get(ShopConstants.ZSW_EXPRESS_SERVICE); |
||||
if(expressService != null) { |
||||
return expressService; |
||||
} |
||||
|
||||
ExpressProperties properties = new ExpressProperties(); |
||||
String enable = redisUtil.getY("exp_enable"); |
||||
String appId = redisUtil.getY("exp_appId"); |
||||
String appKey = redisUtil.getY("exp_appKey"); |
||||
properties.setAppId(appId); |
||||
properties.setAppKey(appKey); |
||||
|
||||
if(ShopCommonEnum.ENABLE_2.getValue().toString().equals(enable)){ |
||||
properties.setEnable(false); |
||||
}else{ |
||||
properties.setEnable(true); |
||||
} |
||||
ExpressService service = new ExpressService(); |
||||
service.setProperties(properties); |
||||
redisUtil.set(ShopConstants.ZSW_EXPRESS_SERVICE,service); |
||||
return service; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.express.config; |
||||
|
||||
import lombok.Data; |
||||
import org.springframework.boot.context.properties.ConfigurationProperties; |
||||
|
||||
@ConfigurationProperties(prefix = "kuaidi100") |
||||
@Data |
||||
public class Kuaidi100Properties { |
||||
|
||||
private String key; |
||||
|
||||
private String customer; |
||||
|
||||
private String secret; |
||||
|
||||
private String userid; |
||||
|
||||
private Boolean enable; |
||||
} |
@ -0,0 +1,54 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.AutoNumReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.AutoNumResp; |
||||
import com.google.gson.Gson; |
||||
import com.google.gson.reflect.TypeToken; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 快递100智能判断接口(只提供给正式用户使用) |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 9:59 |
||||
*/ |
||||
public class AutoNum extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
AutoNumReq autoNumReq = (AutoNumReq) request; |
||||
return String.format(ApiInfoConstant.AUTO_NUM_URL,autoNumReq.getNum(),autoNumReq.getKey()); |
||||
} |
||||
|
||||
/** |
||||
* 根据单号获取快递公司列表 |
||||
* |
||||
* @return |
||||
*/ |
||||
public List<AutoNumResp> getComByNumList(BaseRequest request) throws Exception{ |
||||
HttpResult httpResult = this.execute(request); |
||||
if ( httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),new TypeToken<List<AutoNumResp>>(){}.getType()); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 根据单号获取第一个快递公司 |
||||
* |
||||
* @return |
||||
*/ |
||||
public String getFirstComByNum(BaseRequest request) throws Exception{ |
||||
List<AutoNumResp> comByNumList = this.getComByNumList(request); |
||||
if (comByNumList != null && comByNumList.size()>0){ |
||||
return comByNumList.get(0).getComCode(); |
||||
} |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,63 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.BOrderQueryData; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.BOrderResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp; |
||||
import com.google.gson.Gson; |
||||
import com.google.gson.reflect.TypeToken; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* 商家寄件(优选寄件) |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-09-17 11:14 |
||||
*/ |
||||
public class BOrder extends BaseClient { |
||||
|
||||
@Override |
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.B_ORDER_URL; |
||||
} |
||||
|
||||
public PrintBaseResp transportCapacity(PrintReq param) throws Exception{ |
||||
HttpResult httpResult = execute(param); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<BOrderQueryData>>(){}.getType()); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public PrintBaseResp order(PrintReq param) throws Exception{ |
||||
HttpResult httpResult = execute(param); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<BOrderResp>>(){}.getType()); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public PrintBaseResp getCode(PrintReq param) throws Exception{ |
||||
HttpResult httpResult = execute(param); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<Map<String,String>>>(){}.getType()); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public PrintBaseResp cancel(PrintReq param) throws Exception{ |
||||
HttpResult httpResult = execute(param); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp>(){}.getType()); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
|
||||
/** |
||||
* 商家寄件(官方快递) |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-01-21 15:55 |
||||
*/ |
||||
public class BOrderOfficial extends BaseClient { |
||||
|
||||
@Override |
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.B_ORDER_OFFICIAL_URL; |
||||
} |
||||
} |
@ -0,0 +1,52 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.CloudAttachmentReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.utils.HttpUtils; |
||||
import com.google.gson.Gson; |
||||
import com.google.gson.reflect.TypeToken; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
import java.net.URLEncoder; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* 附件云打印 |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 9:26 |
||||
*/ |
||||
public class CloudPrintAttachment extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public HttpResult execute(BaseRequest request) throws Exception{ |
||||
if (request instanceof CloudAttachmentReq){ |
||||
CloudAttachmentReq cloudPrintAttachmentReq = (CloudAttachmentReq)request; |
||||
String url = String.format(ApiInfoConstant.CLOUD_PRINT_URL, |
||||
cloudPrintAttachmentReq.getMethod(), |
||||
cloudPrintAttachmentReq.getT(), |
||||
cloudPrintAttachmentReq.getKey(), |
||||
cloudPrintAttachmentReq.getSign(), |
||||
URLEncoder.encode(cloudPrintAttachmentReq.getParam(), "UTF-8")); |
||||
return HttpUtils.doPostFile(url,cloudPrintAttachmentReq.getFile(),super.getConnectTimeout(),super.getSocketTimeout()); |
||||
} |
||||
throw new ClassCastException(); |
||||
} |
||||
|
||||
public PrintBaseResp print(CloudAttachmentReq cloudPrintAttachmentReq) throws Exception{ |
||||
HttpResult httpResult = this.execute(cloudPrintAttachmentReq); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<Map<String,String>>>(){}.getType()); |
||||
} |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,54 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.utils.HttpUtils; |
||||
import com.google.gson.Gson; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
import java.net.URLEncoder; |
||||
|
||||
/** |
||||
* 自定义云打印 |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 9:22 |
||||
*/ |
||||
public class CloudPrintCustom extends BaseClient { |
||||
private int connectTimeout = 3000; |
||||
|
||||
private int socketTimeout = 3000; |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public HttpResult execute(BaseRequest request) throws Exception{ |
||||
if (request instanceof PrintReq){ |
||||
PrintReq printReq = (PrintReq)request; |
||||
String url = String.format(ApiInfoConstant.CLOUD_PRINT_URL, |
||||
printReq.getMethod(), |
||||
printReq.getT(), |
||||
printReq.getKey(), |
||||
printReq.getSign(), |
||||
URLEncoder.encode(printReq.getParam(), "UTF-8")); |
||||
return HttpUtils.doPost(url,printReq,super.getConnectTimeout(),super.getSocketTimeout()); |
||||
} |
||||
throw new ClassCastException(); |
||||
} |
||||
|
||||
public PrintBaseResp print(PrintReq printReq) throws Exception { |
||||
HttpResult httpResult = execute(printReq); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())) { |
||||
return new Gson().fromJson(httpResult.getBody(), PrintBaseResp.class); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,52 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.utils.HttpUtils; |
||||
import com.google.gson.Gson; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
import java.net.URLEncoder; |
||||
|
||||
/** |
||||
* 复打 |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 9:26 |
||||
*/ |
||||
public class CloudPrintOld extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public HttpResult execute(BaseRequest request) throws Exception{ |
||||
if (request instanceof PrintReq){ |
||||
PrintReq printReq = (PrintReq)request; |
||||
String url = String.format(ApiInfoConstant.CLOUD_PRINT_URL, |
||||
printReq.getMethod(), |
||||
printReq.getT(), |
||||
printReq.getKey(), |
||||
printReq.getSign(), |
||||
URLEncoder.encode(printReq.getParam(), "UTF-8")); |
||||
return HttpUtils.doPost(url,printReq,super.getConnectTimeout(),super.getSocketTimeout()); |
||||
} |
||||
throw new ClassCastException(); |
||||
} |
||||
|
||||
public PrintBaseResp print(PrintReq request) throws Exception{ |
||||
HttpResult httpResult = this.execute(request); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
|
||||
return new Gson().fromJson(httpResult.getBody(),PrintBaseResp.class); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,39 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintCloudData; |
||||
import com.google.gson.Gson; |
||||
import com.google.gson.reflect.TypeToken; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 15:46 |
||||
*/ |
||||
public class PrintCloud extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.ELECTRONIC_ORDER_PRINT_URL; |
||||
} |
||||
|
||||
/** |
||||
* 电子面单打印 |
||||
* |
||||
* @param printReq |
||||
* @author: api.kuaidi100.com |
||||
* @time: 2020/7/17 17:15 |
||||
*/ |
||||
public PrintBaseResp<PrintCloudData> print(PrintReq printReq) throws Exception{ |
||||
HttpResult httpResult = execute(printReq); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<PrintCloudData>>(){}.getType()); |
||||
} |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,39 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintHtmlResp; |
||||
import com.google.gson.Gson; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 17:20 |
||||
*/ |
||||
public class PrintHtml extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.ELECTRONIC_ORDER_HTML_URL; |
||||
} |
||||
|
||||
/** |
||||
* 电子面单打印 |
||||
* |
||||
* @param printReq |
||||
* @return: java.lang.String |
||||
* @author: api.kuaidi100.com |
||||
* @time: 2020/7/17 17:15 |
||||
*/ |
||||
public PrintHtmlResp print(PrintReq printReq) throws Exception{ |
||||
HttpResult httpResult = execute(printReq); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
|
||||
return new Gson().fromJson(httpResult.getBody(),PrintHtmlResp.class); |
||||
} |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,61 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintImgData; |
||||
import com.google.gson.Gson; |
||||
import com.google.gson.reflect.TypeToken; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 15:46 |
||||
*/ |
||||
public class PrintImg extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.ELECTRONIC_ORDER_PIC_URL; |
||||
} |
||||
|
||||
/** |
||||
* 获取电子面单图片(BASE64) |
||||
* |
||||
* @param printReq |
||||
* @return: java.lang.String |
||||
* @author: api.kuaidi100.com |
||||
* @time: 2020/7/17 17:15 |
||||
*/ |
||||
public PrintBaseResp<PrintImgData> printImG(PrintReq printReq) throws Exception{ |
||||
HttpResult httpResult = execute(printReq); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<PrintImgData>>(){}.getType()); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 处理返回的base64字符串(返回的是一个字符串json数组,多个子单时会有多个) |
||||
* |
||||
* @param imgBase64 base64 json字符串数组 |
||||
* @return |
||||
*/ |
||||
public List<String> getBase64Img(String imgBase64){ |
||||
List<String> stringList= new Gson().fromJson(imgBase64, new TypeToken<List<String>>() {}.getType()); |
||||
List<String> base64Img = new ArrayList<String>(); |
||||
if (stringList != null && stringList.size()>0){ |
||||
for (String s : stringList) { |
||||
s = "data:image/png;base64,"+s.replace("\\\\n",""); |
||||
base64Img.add(s); |
||||
} |
||||
} |
||||
return base64Img; |
||||
} |
||||
} |
@ -0,0 +1,33 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.QueryTrackReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.QueryTrackResp; |
||||
import com.google.gson.Gson; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
/** |
||||
* 实时查询 |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-14 16:27 |
||||
*/ |
||||
public class QueryTrack extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.QUERY_URL; |
||||
} |
||||
|
||||
public QueryTrackResp queryTrack(QueryTrackReq queryTrackReq) throws Exception{ |
||||
HttpResult httpResult = execute(queryTrackReq); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),QueryTrackResp.class); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
|
||||
/** |
||||
* 快递信息地图轨迹 |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-14 16:27 |
||||
*/ |
||||
public class QueryTrackMap extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.QUERY_MAP_VIEW_URL; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
|
||||
/** |
||||
* 同城配送 |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-03-22 16:37 |
||||
*/ |
||||
public class SameCityOrder extends BaseClient { |
||||
|
||||
@Override |
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.SAME_CITY_ORDER_URL; |
||||
} |
||||
} |
@ -0,0 +1,59 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.SendSmsReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.SendSmsResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.SmsCallbackResp; |
||||
import com.google.gson.Gson; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 19:00 |
||||
*/ |
||||
public class SendSms extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.SEND_SMS_URL; |
||||
} |
||||
|
||||
/** |
||||
* 发送短信 |
||||
* |
||||
* @param sendSmsReq |
||||
* @return |
||||
*/ |
||||
public SendSmsResp sendSms(SendSmsReq sendSmsReq) throws Exception{ |
||||
HttpResult httpResult = execute(sendSmsReq); |
||||
if (StringUtils.isNotBlank(httpResult.getBody()) && httpResult.getStatus() == HttpStatus.SC_OK){ |
||||
return new Gson().fromJson(httpResult.getBody(),SendSmsResp.class); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 短信回调接口 例子 |
||||
* @param |
||||
* @return: java.util.Map<java.lang.String, java.lang.Boolean> |
||||
* @author: api.kuaidi100.com |
||||
* @time: 2020/7/21 10:11 |
||||
*/ |
||||
public Map<String,Boolean> callback(SmsCallbackResp smsCallbackResp){ |
||||
//建议记录一下这个回调的内容,方便出问题后双方排查问题
|
||||
//log.debug("快递100短信回调结果|{}",new Gson().toJson(smsCallbackResp));
|
||||
Map<String,Boolean> result = new HashMap<String, Boolean>(); |
||||
if (smsCallbackResp == null){ |
||||
return result; |
||||
} |
||||
|
||||
result.put("status",Boolean.TRUE); |
||||
return result; |
||||
} |
||||
} |
@ -0,0 +1,79 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.SubscribeReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.SubscribePushParamResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.SubscribeResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.utils.SignUtils; |
||||
import com.google.gson.Gson; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
|
||||
/** |
||||
* 订阅 |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-16 14:38 |
||||
*/ |
||||
public class Subscribe extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.SUBSCRIBE_URL; |
||||
} |
||||
|
||||
/** |
||||
* 订阅接口 |
||||
* |
||||
* @param subscribeReq |
||||
* @return |
||||
*/ |
||||
public SubscribeResp subscribe(SubscribeReq subscribeReq) throws Exception{ |
||||
HttpResult httpResult = execute(subscribeReq); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(), SubscribeResp.class); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 订阅推送处理(参照) |
||||
* 订阅成功后,如果该快递单号有轨迹(包括已经签收的单),快递100将会在15分钟-4个小时推送;后面将会4个小时跟踪一次,跟踪到有轨迹变化则推送; |
||||
* 如果订阅成功后,3天查无结果(录错单/快递公司错了/揽收比较晚),快递100将会推送3天查无结果,可以继续重新订阅。 |
||||
* |
||||
* 回调接口支持自定义参数,比如订阅时回调地址填写的是 http://www.xxx.com?orderId=1233333
|
||||
* 可以通过下面这种方式获取到orderId: String orderId = request.getParameter("orderId"); |
||||
* |
||||
* 返回值必须是下面这样的格式,否则快递100将认为该推送失败,快递100将会重试3次该推送,时间间隔35分钟; |
||||
* 成功结果返回例子: {"result":true,"returnCode":"200","message":"提交成功"} |
||||
* |
||||
* @param request |
||||
* @return: com.zsw.tools.utils.kuaidi100.sdk.response.SubscribeResp |
||||
* @author: api.kuaidi100.com |
||||
* @time: 2020/7/16 19:48 |
||||
*/ |
||||
public SubscribeResp callBackUrl(HttpServletRequest request){ |
||||
String param = request.getParameter("param"); |
||||
String sign = request.getParameter("sign"); |
||||
//建议记录一下这个回调的内容,方便出问题后双方排查问题
|
||||
//log.debug("快递100订阅推送回调结果|{}|{}",param,sign);
|
||||
//订阅时传的salt,没有可以忽略
|
||||
String salt = ""; |
||||
String ourSign = SignUtils.sign(param + salt); |
||||
SubscribeResp subscribeResp = new SubscribeResp(); |
||||
subscribeResp.setResult(Boolean.TRUE); |
||||
subscribeResp.setReturnCode("200"); |
||||
subscribeResp.setMessage("成功"); |
||||
//加密如果相等,属于快递100推送;否则可以忽略掉当前请求
|
||||
if (ourSign.equals(sign)){ |
||||
//TODO 业务处理
|
||||
SubscribePushParamResp subscribePushParamResp = new Gson().fromJson(param, SubscribePushParamResp.class); |
||||
return subscribeResp; |
||||
} |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,79 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.SubscribeReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.SubscribeResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.SubscribeWithMapPushParamResp; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.utils.SignUtils; |
||||
import com.google.gson.Gson; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
|
||||
/** |
||||
* 订阅(地图) |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-16 14:38 |
||||
*/ |
||||
public class SubscribeWithMap extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.SUBSCRIBE_WITH_MAP_URL; |
||||
} |
||||
|
||||
/** |
||||
* 订阅接口 |
||||
* |
||||
* @param subscribeReq |
||||
* @return |
||||
*/ |
||||
public SubscribeResp subscribe(SubscribeReq subscribeReq) throws Exception{ |
||||
HttpResult httpResult = execute(subscribeReq); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(), SubscribeResp.class); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
/** |
||||
* 订阅推送处理(参照) |
||||
* 订阅成功后,如果该快递单号有轨迹(包括已经签收的单),快递100将会在15分钟-4个小时推送;后面将会4个小时跟踪一次,跟踪到有轨迹变化则推送; |
||||
* 如果订阅成功后,3天查无结果(录错单/快递公司错了/揽收比较晚),快递100将会推送3天查无结果,可以继续重新订阅。 |
||||
* |
||||
* 回调接口支持自定义参数,比如订阅时回调地址填写的是 http://www.xxx.com?orderId=1233333
|
||||
* 可以通过下面这种方式获取到orderId: String orderId = request.getParameter("orderId"); |
||||
* |
||||
* 返回值必须是下面这样的格式,否则快递100将认为该推送失败,快递100将会重试3次该推送,时间间隔35分钟; |
||||
* 成功结果返回例子: {"result":true,"returnCode":"200","message":"提交成功"} |
||||
* |
||||
* @param request |
||||
* @return: com.zsw.tools.utils.kuaidi100.sdk.response.SubscribeResp |
||||
* @author: api.kuaidi100.com |
||||
* @time: 2020/7/16 19:48 |
||||
*/ |
||||
public SubscribeResp callBackUrl(HttpServletRequest request){ |
||||
String param = request.getParameter("param"); |
||||
String sign = request.getParameter("sign"); |
||||
//建议记录一下这个回调的内容,方便出问题后双方排查问题
|
||||
//log.debug("快递100订阅推送回调结果|{}|{}",param,sign);
|
||||
//订阅时传的salt,没有可以忽略
|
||||
String salt = ""; |
||||
String ourSign = SignUtils.sign(param + salt); |
||||
SubscribeResp subscribeResp = new SubscribeResp(); |
||||
subscribeResp.setResult(Boolean.TRUE); |
||||
subscribeResp.setReturnCode("200"); |
||||
subscribeResp.setMessage("成功"); |
||||
//加密如果相等,属于快递100推送;否则可以忽略掉当前请求
|
||||
if (ourSign.equals(sign)){ |
||||
//TODO 业务处理
|
||||
SubscribeWithMapPushParamResp mapPushParamResp = new Gson().fromJson(param, SubscribeWithMapPushParamResp.class); |
||||
return subscribeResp; |
||||
} |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.api; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
|
||||
/** |
||||
* 第三方平台账号授权 |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-01-06 14:12 |
||||
*/ |
||||
public class ThirdAuth extends BaseClient { |
||||
|
||||
@Override |
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.THIRD_AUTH_URL; |
||||
} |
||||
} |
@ -0,0 +1,31 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.cloud; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.cloud.CloudBaseReq; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.cloud.CloudBaseResp; |
||||
import com.google.gson.Gson; |
||||
import com.google.gson.reflect.TypeToken; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.apache.http.HttpStatus; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-11-20 10:36 |
||||
*/ |
||||
public class CloudBase<T> extends BaseClient { |
||||
|
||||
public String getApiUrl(BaseRequest request) { |
||||
return ApiInfoConstant.CLOUD_NORMAL_URL; |
||||
} |
||||
|
||||
public CloudBaseResp<T> executeToObject(CloudBaseReq param) throws Exception{ |
||||
HttpResult httpResult = execute(param); |
||||
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){ |
||||
return new Gson().fromJson(httpResult.getBody(),new TypeToken<CloudBaseResp<T>>(){}.getType()); |
||||
} |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,144 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.contant; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-15 17:43 |
||||
*/ |
||||
public class ApiInfoConstant { |
||||
/** |
||||
* 查询url |
||||
*/ |
||||
public static final String QUERY_URL = "https://poll.kuaidi100.com/poll/query.do"; |
||||
/** |
||||
* 快递查询地图轨迹url |
||||
*/ |
||||
public static final String QUERY_MAP_VIEW_URL = "https://poll.kuaidi100.com/poll/maptrack.do"; |
||||
/** |
||||
* 订阅url |
||||
*/ |
||||
public static final String SUBSCRIBE_URL = "https://poll.kuaidi100.com/poll"; |
||||
/** |
||||
* 订阅带地图url |
||||
*/ |
||||
public static final String SUBSCRIBE_WITH_MAP_URL = "http://poll.kuaidi100.com/pollmap"; |
||||
/** |
||||
* 订阅SCHEMA |
||||
*/ |
||||
public static final String SUBSCRIBE_SCHEMA = "json"; |
||||
/** |
||||
* 智能单号识别url |
||||
*/ |
||||
public static final String AUTO_NUM_URL = "http://www.kuaidi100.com/autonumber/auto?num=%s&key=%s"; |
||||
/** |
||||
* 电子面单html url |
||||
*/ |
||||
public static final String ELECTRONIC_ORDER_HTML_URL = "http://poll.kuaidi100.com/eorderapi.do"; |
||||
/** |
||||
* 电子面单html方法 |
||||
*/ |
||||
public static final String ELECTRONIC_ORDER_HTML_METHOD = "getElecOrder"; |
||||
/** |
||||
* 电子面单获取图片 url |
||||
*/ |
||||
public static final String ELECTRONIC_ORDER_PIC_URL = "https://poll.kuaidi100.com/printapi/printtask.do"; |
||||
/** |
||||
* 电子面单获取图片 |
||||
*/ |
||||
public static final String ELECTRONIC_ORDER_PIC_METHOD = "getPrintImg"; |
||||
/** |
||||
* 电子面单打印 url |
||||
*/ |
||||
public static final String ELECTRONIC_ORDER_PRINT_URL = "https://poll.kuaidi100.com/printapi/printtask.do"; |
||||
/** |
||||
* 电子面单打印方法 |
||||
*/ |
||||
public static final String ELECTRONIC_ORDER_PRINT_METHOD = "eOrder"; |
||||
/** |
||||
* 菜鸟淘宝账号授权 |
||||
*/ |
||||
public static final String AUTH_THIRD_URL = "https://poll.kuaidi100.com/printapi/authThird.do"; |
||||
/** |
||||
* 云打印url |
||||
*/ |
||||
public static final String CLOUD_PRINT_URL = "http://poll.kuaidi100.com/printapi/printtask.do?method=%s&t=%s&key=%s&sign=%s¶m=%s"; |
||||
/** |
||||
* 自定义打印方法 |
||||
*/ |
||||
public static final String CLOUD_PRINT_CUSTOM_METHOD = "printOrder"; |
||||
/** |
||||
* 附件打印方法 |
||||
*/ |
||||
public static final String CLOUD_PRINT_ATTACHMENT_METHOD = "imgOrder"; |
||||
/** |
||||
* 复打方法 |
||||
*/ |
||||
public static final String CLOUD_PRINT_OLD_METHOD = "printOld"; |
||||
/** |
||||
* 复打方法 |
||||
*/ |
||||
public static final String SEND_SMS_URL = "http://apisms.kuaidi100.com:9502/sms/send.do"; |
||||
/** |
||||
* 商家寄件 |
||||
*/ |
||||
public static final String B_ORDER_URL = "https://order.kuaidi100.com/order/borderbestapi.do"; |
||||
/** |
||||
* 商家寄件查询运力 |
||||
*/ |
||||
public static final String B_ORDER_QUERY_TRANSPORT_CAPACITY_METHOD = "querymkt"; |
||||
/** |
||||
* 商家寄件下单 |
||||
*/ |
||||
public static final String B_ORDER_SEND_METHOD = "bOrderBest"; |
||||
/** |
||||
* 商家寄件获取验证码 |
||||
*/ |
||||
public static final String B_ORDER_CODE_METHOD = "getCode"; |
||||
/** |
||||
* 商家寄件取消 |
||||
*/ |
||||
public static final String B_ORDER_CANCEL_METHOD = "cancelBest"; |
||||
/** |
||||
* 云平台通用请求url |
||||
*/ |
||||
public static final String CLOUD_NORMAL_URL = "http://cloud.kuaidi100.com/api"; |
||||
/** |
||||
* 第三方电商平台账号授权请求url |
||||
*/ |
||||
public static final String THIRD_AUTH_URL = "https://poll.kuaidi100.com/printapi/authThird.do"; |
||||
/** |
||||
* 商家寄件(官方寄件)请求url |
||||
*/ |
||||
public static final String B_ORDER_OFFICIAL_URL = "https://poll.kuaidi100.com/order/borderapi.do"; |
||||
/** |
||||
* 商家寄件(官方寄件)下单 |
||||
*/ |
||||
public static final String B_ORDER_OFFICIAL_ORDER_METHOD = "bOrder"; |
||||
/** |
||||
* 商家寄件(官方寄件)取消 |
||||
*/ |
||||
public static final String B_ORDER_OFFICIAL_CANCEL_METHOD = "cancel"; |
||||
/** |
||||
* 商家寄件(官方寄件)查询价格 |
||||
*/ |
||||
public static final String B_ORDER_OFFICIAL_PRICE_METHOD = "queryPrice"; |
||||
/** |
||||
* 同城配送请求url |
||||
*/ |
||||
public static final String SAME_CITY_ORDER_URL = "https://order.kuaidi100.com/sameCity/order"; |
||||
/** |
||||
* 同城配送授权方法 |
||||
*/ |
||||
public static final String SAME_CITY_AUTH_METHOD = "auth"; |
||||
/** |
||||
* 同城配送下单方法 |
||||
*/ |
||||
public static final String SAME_CITY_ORDER_METHOD = "order"; |
||||
/** |
||||
* 同城配送查询订单方法 |
||||
*/ |
||||
public static final String SAME_CITY_QUERY_METHOD = "query"; |
||||
/** |
||||
* 同城配送取消订单方法 |
||||
*/ |
||||
public static final String SAME_CITY_CANCEL_METHOD = "cancel"; |
||||
} |
@ -0,0 +1,40 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.contant; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-11-27 9:27 |
||||
*/ |
||||
public class CloudApiCodeConstant { |
||||
/** |
||||
* 快递寄件查询运力 |
||||
*/ |
||||
public final static String ORDER_QUERY_EXPRESS = "7c5c49c5e51a4b75bd960f4997d2846a"; |
||||
/** |
||||
* 快递寄件 |
||||
*/ |
||||
public final static String ORDER = "ddffadd3df4b4c0d8d6f9942c7a8c990"; |
||||
/** |
||||
* 快递寄件取消寄件 |
||||
*/ |
||||
public final static String ORDER_CANCEL = "bcb0428c1dd84aca9d6e19ea4dcf683d"; |
||||
/** |
||||
* 快递时效查询V1版 |
||||
*/ |
||||
public final static String AGING_V1 = "8ffb952184224877a561b300dc57b935"; |
||||
/** |
||||
* 快递时效查询V2版 |
||||
*/ |
||||
public final static String AGING_V2 = "4cdfccdf64ea4088a94eb2ea1ef40c97"; |
||||
/** |
||||
* 快递时效详情查询V1版 |
||||
*/ |
||||
public final static String AGING_DETAILS_V1 = "60d6fa8809134c40879e5f0a7228183e"; |
||||
/** |
||||
* 快递时效详情查询V2版 |
||||
*/ |
||||
public final static String AGING_DETAILS_V2 = "81bb0620fbaf460db4e6dab84a05ec00"; |
||||
/** |
||||
* 实时快递查询 |
||||
*/ |
||||
public final static String SYNC_QUERY = "c3e50f627ff6452ba44688ba8883f2dc"; |
||||
} |
@ -0,0 +1,23 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.contant; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-15 17:24 |
||||
*/ |
||||
public class CompanyConstant { |
||||
|
||||
public static final String SF = "shunfeng"; |
||||
public static final String ZT = "zhongtong"; |
||||
public static final String YT = "yuantong"; |
||||
public static final String HT = "huitongkuaidi"; |
||||
public static final String ST = "shentong"; |
||||
public static final String YD = "yunda"; |
||||
public static final String EMS = "ems"; |
||||
public static final String JD = "jd"; |
||||
public static final String ZJS = "zhaijisong"; |
||||
public static final String DB = "debangkuaidi"; |
||||
|
||||
|
||||
public static final String SS = "shansong"; |
||||
public static final String KFW = "kfw"; |
||||
} |
@ -0,0 +1,42 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.core; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.BaseResponse; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.utils.HttpUtils; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-11-25 16:02 |
||||
*/ |
||||
public abstract class BaseClient implements IBaseClient{ |
||||
|
||||
private int connectTimeout = 3000; |
||||
|
||||
private int socketTimeout = 3000; |
||||
|
||||
public HttpResult execute(BaseRequest request) throws Exception{ |
||||
|
||||
return HttpUtils.doPost(getApiUrl(request),request,connectTimeout,socketTimeout); |
||||
} |
||||
|
||||
public BaseResponse executeToObject(BaseRequest request) throws Exception{ |
||||
|
||||
return null; |
||||
} |
||||
|
||||
public void setTimeOut(int connectTimeout, int socketTimeout) { |
||||
this.connectTimeout = connectTimeout; |
||||
this.socketTimeout = socketTimeout; |
||||
} |
||||
|
||||
public abstract String getApiUrl(BaseRequest request); |
||||
|
||||
public int getConnectTimeout() { |
||||
return connectTimeout; |
||||
} |
||||
|
||||
public int getSocketTimeout() { |
||||
return socketTimeout; |
||||
} |
||||
} |
@ -0,0 +1,18 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.core; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.response.BaseResponse; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-11-25 16:09 |
||||
*/ |
||||
public interface IBaseClient { |
||||
|
||||
HttpResult execute(BaseRequest request) throws Exception; |
||||
|
||||
BaseResponse executeToObject(BaseRequest request) throws Exception; |
||||
|
||||
void setTimeOut(int connectTimeout,int socketTimeout); |
||||
} |
@ -0,0 +1,20 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.pojo; |
||||
|
||||
import lombok.Data; |
||||
|
||||
|
||||
@Data |
||||
public class HttpResult { |
||||
private int status; |
||||
private String body; |
||||
private String error; |
||||
|
||||
public HttpResult() { |
||||
} |
||||
|
||||
public HttpResult(int status, String body, String error) { |
||||
this.status = status; |
||||
this.body = body; |
||||
this.error = error; |
||||
} |
||||
} |
@ -0,0 +1,15 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-12-04 11:11 |
||||
*/ |
||||
@Data |
||||
public class AutoNumReq extends BaseRequest { |
||||
|
||||
private String key; |
||||
|
||||
private String num; |
||||
} |
@ -0,0 +1,23 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-09-17 14:37 |
||||
*/ |
||||
@Data |
||||
public class BOrderCancelReq { |
||||
/** |
||||
* 任务ID |
||||
*/ |
||||
private String taskId; |
||||
/** |
||||
* 订单ID |
||||
*/ |
||||
private String orderId; |
||||
/** |
||||
* 取消原因,例:暂时不寄件了 |
||||
*/ |
||||
private String cancelMsg; |
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-09-17 14:37 |
||||
*/ |
||||
@Data |
||||
public class BOrderGetCodeReq { |
||||
/** |
||||
* 任务ID |
||||
*/ |
||||
private String taskId; |
||||
/** |
||||
* 订单ID |
||||
*/ |
||||
private String orderId; |
||||
} |
@ -0,0 +1,21 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* 商家寄件(官方快递) |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-03-22 15:29 |
||||
*/ |
||||
@Data |
||||
public class BOrderOfficialQueryPriceReq { |
||||
/** |
||||
* 快递公司编码 |
||||
*/ |
||||
private String kuaidiCom; |
||||
/** |
||||
* 出发地地址,最小颗粒到市级,例如:广东省深圳市 |
||||
*/ |
||||
private String address; |
||||
} |
@ -0,0 +1,13 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-09-17 11:17 |
||||
*/ |
||||
@Data |
||||
public class BOrderQueryReq { |
||||
|
||||
private String sendAddr; |
||||
} |
@ -0,0 +1,64 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-09-17 14:33 |
||||
*/ |
||||
@Data |
||||
public class BOrderReq { |
||||
|
||||
/** |
||||
* 快递公司的编码,一律用小写字母,见《快递公司编码》 |
||||
*/ |
||||
private String kuaidicom; |
||||
/** |
||||
* 收件人姓名 |
||||
*/ |
||||
private String recManName; |
||||
/** |
||||
* 收件人的手机号,手机号和电话号二者其一必填 |
||||
*/ |
||||
private String recManMobile; |
||||
/** |
||||
* 收件人所在完整地址,如广东深圳市深圳市南山区科技南十二路2号金蝶软件园 |
||||
*/ |
||||
private String recManPrintAddr; |
||||
/** |
||||
* 寄件人姓名 |
||||
*/ |
||||
private String sendManName; |
||||
/** |
||||
* 寄件人的手机号,手机号和电话号二者其一必填 |
||||
*/ |
||||
private String sendManMobile; |
||||
/** |
||||
* 寄件人所在的完整地址,如广东深圳市深圳市南山区科技南十二路2号金蝶软件园B10 |
||||
*/ |
||||
private String sendManPrintAddr; |
||||
/** |
||||
* 物品名称,例:文件 |
||||
*/ |
||||
private String cargo; |
||||
/** |
||||
* 物品总重量KG,例:1.5,单位kg |
||||
*/ |
||||
private String weight; |
||||
/** |
||||
* 备注 |
||||
*/ |
||||
private String remark; |
||||
/** |
||||
* 签名用随机字符串 |
||||
*/ |
||||
private String salt; |
||||
/** |
||||
* callBackUrl订单信息回调 |
||||
*/ |
||||
private String callBackUrl; |
||||
/** |
||||
* 快递业务服务类型,例:标准快递,默认为标准快递 |
||||
*/ |
||||
private String serviceType; |
||||
} |
@ -0,0 +1,13 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-11-25 16:12 |
||||
*/ |
||||
@Data |
||||
public class BaseRequest { |
||||
|
||||
private String url; |
||||
} |
@ -0,0 +1,14 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.io.File; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 9:36 |
||||
*/ |
||||
@Data |
||||
public class CloudAttachmentReq extends PrintReq { |
||||
private File file; |
||||
} |
@ -0,0 +1,47 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 9:37 |
||||
*/ |
||||
@Data |
||||
public class CloudPrintAttachmentParam { |
||||
/** |
||||
* 贵司内部自定义的订单编号,需要保证唯一性,非必填 |
||||
*/ |
||||
private String orderId; |
||||
/** |
||||
* 打印纸的高度,以mm为单位 |
||||
*/ |
||||
private String height; |
||||
/** |
||||
* 打印纸的宽度,以mm为单位 |
||||
*/ |
||||
private String width; |
||||
/** |
||||
* 需要打印的份数,默认是一份 |
||||
*/ |
||||
private String copyNum; |
||||
/** |
||||
* 打印范围,起始页,仅对多页文件支持,默认是打印整个文档 |
||||
*/ |
||||
private String startPage; |
||||
/** |
||||
* 打印范围,结束页,仅对多页文件支持,默认是打印整个文档 |
||||
*/ |
||||
private String endPage; |
||||
/** |
||||
* 签名用随机字符串 |
||||
*/ |
||||
private String salt; |
||||
/** |
||||
* 打印设备,通过打印机输出的设备码进行获取 |
||||
*/ |
||||
private String siid; |
||||
/** |
||||
* 打印状态回调地址 |
||||
*/ |
||||
private String callBackUrl; |
||||
} |
@ -0,0 +1,39 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 9:38 |
||||
*/ |
||||
@Data |
||||
public class CloudPrintCustomParam { |
||||
/** |
||||
* 贵司内部自定义的订单编号,需要保证唯一性,非必填 |
||||
*/ |
||||
private String orderId; |
||||
/** |
||||
* 通过管理后台的打印摸版配置信息获取 |
||||
*/ |
||||
private String tempid; |
||||
/** |
||||
* 打印设备,通过打印机输出的设备码进行获取 |
||||
*/ |
||||
private String siid; |
||||
/** |
||||
* 打印纸的高度 |
||||
*/ |
||||
private String height; |
||||
/** |
||||
* 打印纸的宽度 |
||||
*/ |
||||
private String width; |
||||
/** |
||||
* 打印状态回调地址 |
||||
*/ |
||||
private String callBackUrl; |
||||
/** |
||||
* 签名用随机字符串 |
||||
*/ |
||||
private String salt; |
||||
} |
@ -0,0 +1,8 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 9:37 |
||||
*/ |
||||
public class CloudPrintCustomReq { |
||||
} |
@ -0,0 +1,13 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 10:43 |
||||
*/ |
||||
@Data |
||||
public class CloudPrintOldParam { |
||||
|
||||
private String taskId; |
||||
} |
@ -0,0 +1,27 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 16:30 |
||||
*/ |
||||
@Data |
||||
public class ManInfo { |
||||
/** |
||||
* 收件人姓名 (必填) |
||||
*/ |
||||
private String name; |
||||
/** |
||||
* 收件人的手机号,手机号和电话号二者其一必填 (必填) |
||||
*/ |
||||
private String mobile; |
||||
/** |
||||
* 收件人所在完整地址 (必填) |
||||
*/ |
||||
private String printAddr; |
||||
/** |
||||
* 收件人所在公司名称(可选) |
||||
*/ |
||||
private String company; |
||||
} |
@ -0,0 +1,181 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 17:05 |
||||
*/ |
||||
@Data |
||||
public class PrintCloudParam { |
||||
|
||||
/** |
||||
* 业务类型,默认为10 |
||||
*/ |
||||
private String type; |
||||
/** |
||||
* 电子面单客户账户或月结账号,需贵司向当地快递公司网点申请 |
||||
*/ |
||||
private String partnerId; |
||||
/** |
||||
* 电子面单密码,需贵司向当地快递公司网点申请 |
||||
*/ |
||||
private String partnerKey; |
||||
/** |
||||
* 收件网点名称,由快递公司当地网点分配, |
||||
* 若使用淘宝授权填入(taobao),使用菜鸟授权填入(cainiao) |
||||
*/ |
||||
private String net; |
||||
/** |
||||
* 快递公司的编码,一律用小写字母 |
||||
*/ |
||||
private String kuaidicom; |
||||
/** |
||||
* 收件人信息 |
||||
*/ |
||||
private ManInfo recMan; |
||||
/** |
||||
* 收件人信息 |
||||
*/ |
||||
private ManInfo sendMan; |
||||
/** |
||||
* 物品名称(部分快递公司必填) |
||||
*/ |
||||
private String cargo; |
||||
/** |
||||
* 物品总数量。 |
||||
* 另外该属性与子单有关,如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号), |
||||
* needChild = 1、count 需要大于1,如count = 2 则一个主单 一个子单, |
||||
* count = 3则一个主单 二个子单;返回的子单号码见返回结果的childNum字段 |
||||
*/ |
||||
private String count; |
||||
/** |
||||
* 物品总重量,单位:KG (例子:0.5) |
||||
*/ |
||||
private String weight; |
||||
/** |
||||
* 支付方式: |
||||
* SHIPPER:寄方付(默认) |
||||
* CONSIGNEE:到付 |
||||
* MONTHLY:月结 |
||||
* THIRDPARTY:第三方支付 |
||||
*/ |
||||
private String payType; |
||||
/** |
||||
* 快递类型: |
||||
* 标准快递(默认) |
||||
* 顺丰特惠 |
||||
* EMS经济 |
||||
*/ |
||||
private String expType; |
||||
/** |
||||
* 备注 |
||||
*/ |
||||
private String remark; |
||||
/** |
||||
* 电子面单模板编码 |
||||
*/ |
||||
private String tempid; |
||||
/** |
||||
* 打印设备编码。通过打印机输出的设备码进行获取 |
||||
*/ |
||||
private String siid; |
||||
/** |
||||
* 保价额度 |
||||
*/ |
||||
private String valinsPay; |
||||
/** |
||||
* 代收货款额度 |
||||
*/ |
||||
private String collection; |
||||
/** |
||||
* 是否需要子单(支持子单的快递公司才可以用,是否支持可以参考参数字典) |
||||
* 1:需要 |
||||
* 0:不需要(默认) |
||||
* 如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号); |
||||
* needChild = 1、count 需要大于1,如count = 2 一个主单 一个子单, |
||||
* count = 3 一个主单 二个子单,返回的子单号码见返回结果的childNum字段 |
||||
*/ |
||||
private String needChild; |
||||
/** |
||||
* 是否需要回单(支持回单的快递公司才可以用,是否支持可以参考参数字典) |
||||
* 1:需要 |
||||
* 0:不需要(默认) |
||||
* 返回的回单号见返回结果的returnNum字段 |
||||
*/ |
||||
private String needBack; |
||||
/** |
||||
* 贵司内部自定义的订单编号,需要保证唯一性 |
||||
*/ |
||||
private String orderId; |
||||
/** |
||||
* 生成图片的高,以mm为单位(默认100) |
||||
*/ |
||||
private String height; |
||||
/** |
||||
* 生成图片的宽,以mm为单位(默认180) |
||||
*/ |
||||
private String width; |
||||
/** |
||||
* 打印状态回调地址 |
||||
*/ |
||||
private String callBackUrl; |
||||
/** |
||||
* 签名用随机字符串 |
||||
*/ |
||||
private String salt; |
||||
/** |
||||
* 是否开启订阅功能: |
||||
* 0:不开启(默认) |
||||
* 1:开启 |
||||
* 说明开启订阅功能时:pollCallBackUrl必须填入 |
||||
* 此功能只针对有快递单号的单 |
||||
*/ |
||||
private String op; |
||||
/** |
||||
* 如果op设置为1时,pollCallBackUrl必须填入,用于跟踪回调 |
||||
*/ |
||||
private String pollCallBackUrl; |
||||
/** |
||||
* 添加此字段表示开通行政区域解析功能:0:关闭(默认);1:开通行政区域解析功能 |
||||
*/ |
||||
private String resultv2; |
||||
/** |
||||
* 扩展字段,不同快递公司具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String code; |
||||
/** |
||||
* 扩展字段,具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String partnerSecret; |
||||
/** |
||||
* 扩展字段,具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String partnerName; |
||||
/** |
||||
* 扩展字段,具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String checkMan; |
||||
|
||||
/** |
||||
* 打印方向(默认0) 0-正方向 1-反方向 |
||||
*/ |
||||
private String direction; |
||||
|
||||
/** |
||||
* 打印时间 |
||||
*/ |
||||
private String printTime; |
||||
/** |
||||
* 额外服务(类似部分物流公司的需定义派送方式,包装等) |
||||
*/ |
||||
private String addService; |
||||
/* |
||||
* 到付金额(单位:元) |
||||
*/ |
||||
private String freight; |
||||
} |
@ -0,0 +1,32 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 16:21 |
||||
*/ |
||||
@Data |
||||
public class PrintCloudReq extends PrintReq{ |
||||
|
||||
/** |
||||
* 业务类型(默认:getPrintImg) |
||||
*/ |
||||
private String method; |
||||
/** |
||||
* 快递100分配给贵司的的授权key |
||||
*/ |
||||
private String key; |
||||
/** |
||||
* 加密签名信息:MD5(param+t+key+secret);加密后字符串转大写 |
||||
*/ |
||||
private String sign; |
||||
/** |
||||
* 当前请求时间戳 |
||||
*/ |
||||
private String t; |
||||
/** |
||||
* 其他参数组合成的json对象 |
||||
*/ |
||||
private String param; |
||||
} |
@ -0,0 +1,145 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 16:55 |
||||
*/ |
||||
@Data |
||||
public class PrintHtmlParam { |
||||
/** |
||||
* 电子面单客户账户或月结账号,需贵司向当地快递公司网点申请 |
||||
*/ |
||||
private String partnerId; |
||||
/** |
||||
* 电子面单密码,需贵司向当地快递公司网点申请 |
||||
*/ |
||||
private String partnerKey; |
||||
/** |
||||
* 收件网点名称,由快递公司当地网点分配, |
||||
* 若使用淘宝授权填入(taobao),使用菜鸟授权填入(cainiao) |
||||
*/ |
||||
private String net; |
||||
/** |
||||
* 快递公司的编码,一律用小写字母 |
||||
*/ |
||||
private String kuaidicom; |
||||
/** |
||||
* 收件人信息 |
||||
*/ |
||||
private ManInfo recMan; |
||||
/** |
||||
* 收件人信息 |
||||
*/ |
||||
private ManInfo sendMan; |
||||
/** |
||||
* 物品名称(部分快递公司必填) |
||||
*/ |
||||
private String cargo; |
||||
/** |
||||
* 物品总数量。 |
||||
* 另外该属性与子单有关,如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号), |
||||
* needChild = 1、count 需要大于1,如count = 2 则一个主单 一个子单, |
||||
* count = 3则一个主单 二个子单;返回的子单号码见返回结果的childNum字段 |
||||
*/ |
||||
private int count; |
||||
/** |
||||
* 物品总重量,单位:KG (例子:0.5) |
||||
*/ |
||||
private String weight; |
||||
/** |
||||
* 支付方式: |
||||
* SHIPPER:寄方付(默认) |
||||
* CONSIGNEE:到付 |
||||
* MONTHLY:月结 |
||||
* THIRDPARTY:第三方支付 |
||||
*/ |
||||
private String payType; |
||||
/** |
||||
* 快递类型: |
||||
* 标准快递(默认) |
||||
* 顺丰特惠 |
||||
* EMS经济 |
||||
*/ |
||||
private String expType; |
||||
/** |
||||
* 备注 |
||||
*/ |
||||
private String remark; |
||||
/** |
||||
* 保价额度 |
||||
*/ |
||||
private String valinsPay; |
||||
/** |
||||
* 代收货款额度 |
||||
*/ |
||||
private String collection; |
||||
/** |
||||
* 是否需要子单(支持子单的快递公司才可以用,是否支持可以参考参数字典) |
||||
* 1:需要 |
||||
* 0:不需要(默认) |
||||
* 如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号); |
||||
* needChild = 1、count 需要大于1,如count = 2 一个主单 一个子单, |
||||
* count = 3 一个主单 二个子单,返回的子单号码见返回结果的childNum字段 |
||||
*/ |
||||
private int needChild; |
||||
/** |
||||
* 是否需要回单(支持回单的快递公司才可以用,是否支持可以参考参数字典) |
||||
* 1:需要 |
||||
* 0:不需要(默认) |
||||
* 返回的回单号见返回结果的returnNum字段 |
||||
*/ |
||||
private String needBack; |
||||
/** |
||||
* 贵司内部自定义的订单编号,需要保证唯一性 |
||||
*/ |
||||
private String orderId; |
||||
/** |
||||
* 是否返回面单 |
||||
* 0:不需要(默认) |
||||
* 1:需要 |
||||
* 如果需要,则返回要打印的模版的HTML代码,贵司可以直接将之显示到IE等浏览器,然后通过浏览器进行打印 |
||||
*/ |
||||
private String needTemplate; |
||||
/** |
||||
* 签名用随机字符串 |
||||
*/ |
||||
private String salt; |
||||
/** |
||||
* 是否开启订阅功能: |
||||
* 0:不开启(默认) |
||||
* 1:开启 |
||||
* 说明开启订阅功能时:pollCallBackUrl必须填入 |
||||
* 此功能只针对有快递单号的单 |
||||
*/ |
||||
private String op; |
||||
/** |
||||
* 如果op设置为1时,pollCallBackUrl必须填入,用于跟踪回调 |
||||
*/ |
||||
private String pollCallBackUrl; |
||||
/** |
||||
* 添加此字段表示开通行政区域解析功能:0:关闭(默认);1:开通行政区域解析功能 |
||||
*/ |
||||
private String resultv2; |
||||
/** |
||||
* 扩展字段,不同快递公司具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String code; |
||||
/** |
||||
* 扩展字段,具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String partnerSecret; |
||||
/** |
||||
* 扩展字段,具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String partnerName; |
||||
/** |
||||
* 扩展字段,具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String checkMan; |
||||
} |
@ -0,0 +1,32 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 16:14 |
||||
*/ |
||||
@Data |
||||
public class PrintHtmlReq { |
||||
|
||||
/** |
||||
* 业务类型(默认:getPrintImg) |
||||
*/ |
||||
private String method; |
||||
/** |
||||
* 快递100分配给贵司的的授权key |
||||
*/ |
||||
private String key; |
||||
/** |
||||
* 加密签名信息:MD5(param+t+key+secret);加密后字符串转大写 |
||||
*/ |
||||
private String sign; |
||||
/** |
||||
* 当前请求时间戳 |
||||
*/ |
||||
private String t; |
||||
/** |
||||
* 其他参数组合成的json对象 |
||||
*/ |
||||
private String param; |
||||
} |
@ -0,0 +1,179 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 15:49 |
||||
*/ |
||||
@Data |
||||
public class PrintImgParam { |
||||
/** |
||||
* 业务类型,默认为10 |
||||
*/ |
||||
private String type; |
||||
/** |
||||
* 电子面单客户账户或月结账号,需贵司向当地快递公司网点申请 |
||||
*/ |
||||
private String partnerId; |
||||
/** |
||||
* 电子面单密码,需贵司向当地快递公司网点申请 |
||||
*/ |
||||
private String partnerKey; |
||||
/** |
||||
* 收件网点名称,由快递公司当地网点分配, |
||||
* 若使用淘宝授权填入(taobao),使用菜鸟授权填入(cainiao) |
||||
*/ |
||||
private String net; |
||||
/** |
||||
* 快递公司的编码,一律用小写字母 |
||||
*/ |
||||
private String kuaidicom; |
||||
/** |
||||
* 收件人姓名 |
||||
*/ |
||||
private String recManName; |
||||
/** |
||||
* 收件人的手机号 |
||||
*/ |
||||
private String recManMobile; |
||||
/** |
||||
* 收件人的手机号 |
||||
*/ |
||||
private String recManTel; |
||||
/** |
||||
* 收件人所在完整地址 |
||||
*/ |
||||
private String recManPrintAddr; |
||||
/** |
||||
* 寄件人姓名 |
||||
*/ |
||||
private String sendManName; |
||||
/** |
||||
* 寄件人的手机号 |
||||
*/ |
||||
private String sendManMobile; |
||||
/** |
||||
* 寄件人所在的完整地址 |
||||
*/ |
||||
private String sendManPrintAddr; |
||||
/** |
||||
* 打印电子面单模板编码(登录快递100管理后台查看) |
||||
*/ |
||||
private String tempid; |
||||
/** |
||||
* 物品名称(部分快递公司必填) |
||||
*/ |
||||
private String cargo; |
||||
/** |
||||
* 物品总数量。 |
||||
* 另外该属性与子单有关,如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号), |
||||
* needChild = 1、count 需要大于1,如count = 2 则一个主单 一个子单, |
||||
* count = 3则一个主单 二个子单;返回的子单号码见返回结果的childNum字段 |
||||
*/ |
||||
private String count; |
||||
/** |
||||
* 物品总重量,单位:KG (例子:0.5) |
||||
*/ |
||||
private String weight; |
||||
/** |
||||
* 支付方式: |
||||
* SHIPPER:寄方付(默认) |
||||
* CONSIGNEE:到付 |
||||
* MONTHLY:月结 |
||||
* THIRDPARTY:第三方支付 |
||||
*/ |
||||
private String payType; |
||||
/** |
||||
* 快递类型: |
||||
* 标准快递(默认) |
||||
* 顺丰特惠 |
||||
* EMS经济 |
||||
*/ |
||||
private String expType; |
||||
/** |
||||
* 备注 |
||||
*/ |
||||
private String remark; |
||||
/** |
||||
* 保价额度 |
||||
*/ |
||||
private String valinsPay; |
||||
/** |
||||
* 代收货款额度 |
||||
*/ |
||||
private String collection; |
||||
/** |
||||
* 是否需要子单(支持子单的快递公司才可以用,是否支持可以参考参数字典) |
||||
* 1:需要 |
||||
* 0:不需要(默认) |
||||
* 如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号); |
||||
* needChild = 1、count 需要大于1,如count = 2 一个主单 一个子单, |
||||
* count = 3 一个主单 二个子单,返回的子单号码见返回结果的childNum字段 |
||||
*/ |
||||
private String needChild; |
||||
/** |
||||
* 是否需要回单(支持回单的快递公司才可以用,是否支持可以参考参数字典) |
||||
* 1:需要 |
||||
* 0:不需要(默认) |
||||
* 返回的回单号见返回结果的returnNum字段 |
||||
*/ |
||||
private String needBack; |
||||
/** |
||||
* 贵司内部自定义的订单编号,需要保证唯一性 |
||||
*/ |
||||
private String orderId; |
||||
/** |
||||
* 生成图片的高,以mm为单位(默认100) |
||||
*/ |
||||
private String height; |
||||
/** |
||||
* 生成图片的宽,以mm为单位(默认180) |
||||
*/ |
||||
private String width; |
||||
/** |
||||
* 签名用随机字符串 |
||||
*/ |
||||
private String salt; |
||||
/** |
||||
* 是否开启订阅功能: |
||||
* 0:不开启(默认) |
||||
* 1:开启 |
||||
* 说明开启订阅功能时:pollCallBackUrl必须填入 |
||||
* 此功能只针对有快递单号的单 |
||||
*/ |
||||
private String op; |
||||
/** |
||||
* 如果op设置为1时,pollCallBackUrl必须填入,用于跟踪回调 |
||||
*/ |
||||
private String pollCallBackUrl; |
||||
/** |
||||
* 添加此字段表示开通行政区域解析功能:0:关闭(默认);1:开通行政区域解析功能 |
||||
*/ |
||||
private String resultv2; |
||||
/** |
||||
* 打印时间 |
||||
*/ |
||||
private String printTime; |
||||
|
||||
/** |
||||
* 扩展字段,不同快递公司具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String code; |
||||
/** |
||||
* 扩展字段,具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String partnerSecret; |
||||
/** |
||||
* 扩展字段,具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String partnerName; |
||||
/** |
||||
* 扩展字段,具体详情看参数字典 |
||||
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
|
||||
*/ |
||||
private String checkMan; |
||||
} |
@ -0,0 +1,31 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 15:49 |
||||
*/ |
||||
@Data |
||||
public class PrintImgReq extends PrintReq{ |
||||
/** |
||||
* 业务类型(默认:getPrintImg) |
||||
*/ |
||||
private String method; |
||||
/** |
||||
* 快递100分配给贵司的的授权key |
||||
*/ |
||||
private String key; |
||||
/** |
||||
* 加密签名信息:MD5(param+t+key+secret);加密后字符串转大写 |
||||
*/ |
||||
private String sign; |
||||
/** |
||||
* 当前请求时间戳 |
||||
*/ |
||||
private String t; |
||||
/** |
||||
* 其他参数组合成的json对象 |
||||
*/ |
||||
private String param; |
||||
} |
@ -0,0 +1,36 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-20 9:41 |
||||
*/ |
||||
@Data |
||||
public class PrintReq extends BaseRequest { |
||||
|
||||
/** |
||||
* 业务类型(默认:getPrintImg) |
||||
*/ |
||||
private String method; |
||||
/** |
||||
* 快递100分配给贵司的的授权key |
||||
*/ |
||||
private String key; |
||||
/** |
||||
* 加密签名信息:MD5(param+t+key+secret);加密后字符串转大写 |
||||
*/ |
||||
private String sign; |
||||
/** |
||||
* 当前请求时间戳 |
||||
*/ |
||||
private String t; |
||||
/** |
||||
* 其他参数 |
||||
*/ |
||||
private String param; |
||||
/** |
||||
* 快递100分配给贵司的的授权key |
||||
*/ |
||||
private String secret; |
||||
} |
@ -0,0 +1,43 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-14 15:58 |
||||
*/ |
||||
@Data |
||||
public class QueryTrackParam { |
||||
/** |
||||
* 查询的快递公司的编码,一律用小写字母 |
||||
*/ |
||||
private String com; |
||||
/** |
||||
* 查询的快递单号, 单号的最大长度是32个字符 |
||||
*/ |
||||
private String num; |
||||
/** |
||||
* 收件人或寄件人的手机号或固话 |
||||
*/ |
||||
private String phone; |
||||
/** |
||||
* 出发地城市,省-市-区 |
||||
*/ |
||||
private String from; |
||||
/** |
||||
* 目的地城市,省-市-区 |
||||
*/ |
||||
private String to; |
||||
/** |
||||
* 添加此字段表示开通行政区域解析功能。0:关闭(默认),1:开通行政区域解析功能,2:开通行政解析功能并且返回出发、目的及当前城市信息 |
||||
*/ |
||||
private String resultv2 = "0"; |
||||
/** |
||||
* 返回数据格式。0:json(默认),1:xml,2:html,3:text |
||||
*/ |
||||
private String show = "0"; |
||||
/** |
||||
* 返回结果排序方式。desc:降序(默认),asc:升序 |
||||
*/ |
||||
private String order = "desc"; |
||||
} |
@ -0,0 +1,23 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-14 15:56 |
||||
*/ |
||||
@Data |
||||
public class QueryTrackReq extends BaseRequest { |
||||
/** |
||||
* 我方分配给贵司的的公司编号, 点击查看账号信息 |
||||
*/ |
||||
private String customer; |
||||
/** |
||||
* 签名, 用于验证身份, 按param + key + customer 的顺序进行MD5加密(注意加密后字符串要转大写), 不需要“+”号 |
||||
*/ |
||||
private String sign; |
||||
/** |
||||
* 其他参数组合成的json对象 |
||||
*/ |
||||
private String param; |
||||
} |
@ -0,0 +1,44 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-21 9:14 |
||||
*/ |
||||
@Data |
||||
public class SendSmsReq extends BaseRequest { |
||||
/** |
||||
* 加密签名信息:MD5(key + userid);加密后字符串转大写 |
||||
*/ |
||||
private String sign; |
||||
/** |
||||
* 我方分配给贵司的的短信接口用户ID,点击查看账号信息 |
||||
*/ |
||||
private String userid; |
||||
/** |
||||
* 商户名称签名;最好用简称,该字段信息会在短信标签处显示。不要超过5个字符 |
||||
*/ |
||||
private String seller; |
||||
/** |
||||
* 接收短信手机号 |
||||
*/ |
||||
private String phone; |
||||
/** |
||||
* 短信模板ID |
||||
*/ |
||||
private String tid; |
||||
/** |
||||
* 短信模板替换内容 |
||||
*/ |
||||
private String content; |
||||
/** |
||||
* 外部订单号:当该短信发送模板有回调地址时,外部订单号会返回给调用者,方便用户更新数据 |
||||
*/ |
||||
private String outorder; |
||||
/** |
||||
* 回调地址:如果客户在发送短信时填写该参数,将按照这个参数回调短信发送状态; |
||||
* 如果为空,将按照模板配置的地址回调短信发送状态;如果两个参数都不填写,将不会回调通知状态 |
||||
*/ |
||||
private String callback; |
||||
} |
@ -0,0 +1,36 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-16 13:41 |
||||
*/ |
||||
@Data |
||||
public class SubscribeParam { |
||||
|
||||
/** |
||||
* 订阅的快递公司的编码,一律用小写字母 |
||||
*/ |
||||
private String company; |
||||
/** |
||||
* 订阅的快递单号,单号的最大长度是32个字符 |
||||
*/ |
||||
private String number; |
||||
/** |
||||
* 出发地城市,省-市-区,非必填,填了有助于提升签收状态的判断的准确率,请尽量提供 |
||||
*/ |
||||
private String from; |
||||
/** |
||||
* 目的地城市,省-市-区,非必填,填了有助于提升签收状态的判断的准确率,且到达目的地后会加大监控频率,请尽量提供 |
||||
*/ |
||||
private String to; |
||||
/** |
||||
* 我方分配给贵司的的授权key |
||||
*/ |
||||
private String key; |
||||
/** |
||||
* 附加参数信息 |
||||
*/ |
||||
private SubscribeParameters parameters; |
||||
} |
@ -0,0 +1,57 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-16 13:42 |
||||
*/ |
||||
@Data |
||||
public class SubscribeParameters { |
||||
/** |
||||
* 回调接口的地址。如果需要在推送信息回传自己业务参数,可以在回调地址URL后面拼接上去,如示例中的orderId |
||||
* http://www.xxxxx.com/callback?orderId=123
|
||||
*/ |
||||
private String callbackurl; |
||||
/** |
||||
* 签名用随机字符串。32位自定义字符串。添加该参数,则推送的时候会增加sign给贵司校验消息的可靠性 |
||||
*/ |
||||
private String salt; |
||||
/** |
||||
* 添加此字段表示开通行政区域解析功能。0:关闭(默认),1:开通行政区域解析功能 |
||||
*/ |
||||
private String resultv2; |
||||
/** |
||||
* 添加此字段且将此值设为1,则表示开始智能判断单号所属公司的功能, |
||||
* 开启后,company字段可为空,即只传运单号(number字段),我方收到后会根据单号判断出其所属的快递公司(即company字段)。 |
||||
* 建议只有在无法知道单号对应的快递公司(即company的值)的情况下才开启此功能。 |
||||
*/ |
||||
private String autoCom; |
||||
/** |
||||
* 添加此字段表示开启国际版 |
||||
* 开启后,若订阅的单号(即number字段)属于国际单号,会返回出发国与目的国两个国家的跟踪信息; |
||||
* 本功能暂时只支持邮政体系(国际类的邮政小包、EMS)内的快递公司; |
||||
* 若单号我方识别为非国际单,即使添加本字段,也不会返回destResult元素组. |
||||
*/ |
||||
private String interCom; |
||||
/** |
||||
* 出发国家编码 |
||||
*/ |
||||
private String departureCountry; |
||||
/** |
||||
* 出发国家快递公司的编码 |
||||
*/ |
||||
private String departureCom; |
||||
/** |
||||
* 目的国家编码 |
||||
*/ |
||||
private String destinationCountry; |
||||
/** |
||||
* 目的国家快递公司的编码 |
||||
*/ |
||||
private String destinationCom; |
||||
/** |
||||
* 收件人或寄件人的手机号或固话(顺丰单号必填,也可以填写后四位,如果是固话,请不要上传分机号) |
||||
*/ |
||||
private String phone; |
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-16 13:41 |
||||
*/ |
||||
@Data |
||||
public class SubscribeReq extends BaseRequest { |
||||
/** |
||||
* 返回数据格式(json、xml、text) |
||||
*/ |
||||
private String schema; |
||||
/** |
||||
* 其他参数 |
||||
*/ |
||||
private String param; |
||||
} |
@ -0,0 +1,25 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request; |
||||
|
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-01-06 14:16 |
||||
*/ |
||||
@Getter |
||||
@Setter |
||||
public class ThirdAuthReq { |
||||
/** |
||||
* 请求的第三方平台,淘宝:taobao,菜鸟:cainiao,京东:jdalpha,拼多多:pinduoduoWx |
||||
*/ |
||||
private String net; |
||||
/** |
||||
* 授权完后的信息回调地址 |
||||
*/ |
||||
private String callBackUrl; |
||||
/** |
||||
* 已经授权完需要重新获取授权信息 |
||||
*/ |
||||
private String partnerId; |
||||
} |
@ -0,0 +1,23 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request.cloud; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-11-25 15:47 |
||||
*/ |
||||
@Data |
||||
public class COrderCancelReq extends CloudBaseReq{ |
||||
/** |
||||
* 任务ID |
||||
*/ |
||||
private String taskId; |
||||
/** |
||||
* 订单ID |
||||
*/ |
||||
private String orderId; |
||||
/** |
||||
* 取消原因,例:暂时不寄件了 |
||||
*/ |
||||
private String cancelMsg; |
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request.cloud; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-11-20 11:09 |
||||
*/ |
||||
@Data |
||||
public class COrderQueryReq extends CloudBaseReq{ |
||||
/** |
||||
* |
||||
*/ |
||||
private String sendManPrintAddr; |
||||
|
||||
private String recManPrintAddr; |
||||
|
||||
private String address; |
||||
} |
@ -0,0 +1,75 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request.cloud; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-10-27 15:47 |
||||
*/ |
||||
@Data |
||||
public class COrderReq extends CloudBaseReq{ |
||||
/** |
||||
* 快递公司的编码,一律用小写字母,见《快递公司编码》 |
||||
*/ |
||||
private String com; |
||||
/** |
||||
* 收件人姓名 |
||||
*/ |
||||
private String recManName; |
||||
/** |
||||
* 收件人的手机号,手机号和电话号二者其一必填 |
||||
*/ |
||||
private String recManMobile; |
||||
/** |
||||
* 收件人所在完整地址,如广东深圳市深圳市南山区科技南十二路2号金蝶软件园 |
||||
*/ |
||||
private String recManPrintAddr; |
||||
/** |
||||
* 寄件人姓名 |
||||
*/ |
||||
private String sendManName; |
||||
/** |
||||
* 寄件人的手机号,手机号和电话号二者其一必填 |
||||
*/ |
||||
private String sendManMobile; |
||||
/** |
||||
* 寄件人所在的完整地址,如广东深圳市深圳市南山区科技南十二路2号金蝶软件园B10 |
||||
*/ |
||||
private String sendManPrintAddr; |
||||
/** |
||||
* 物品名称,例:文件 |
||||
*/ |
||||
private String cargo; |
||||
/** |
||||
* 物品总重量KG,例:1.5,单位kg |
||||
*/ |
||||
private String weight; |
||||
/** |
||||
* 备注 |
||||
*/ |
||||
private String remark; |
||||
/** |
||||
* 签名用随机字符串 |
||||
*/ |
||||
private String salt; |
||||
/** |
||||
* callBackUrl订单信息回调 |
||||
*/ |
||||
private String callBackUrl; |
||||
/** |
||||
* 预约日期,例如:今天/明天/后天 |
||||
*/ |
||||
private String dayType; |
||||
/** |
||||
* 预约起始时间(HH:mm),例如:09:00 |
||||
*/ |
||||
private String pickupStartTime; |
||||
/** |
||||
* 预约截止时间(HH:mm),例如:10:00 |
||||
*/ |
||||
private String pickupEndTime; |
||||
/** |
||||
* 支付方式,SHIPPER: 寄付(默认),CONSIGNEE: 到付 |
||||
*/ |
||||
private String payment; |
||||
} |
@ -0,0 +1,31 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request.cloud; |
||||
|
||||
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest; |
||||
import co.yixiang.tools.utils.kuaidi100.sdk.utils.SignUtils; |
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-10-27 15:45 |
||||
*/ |
||||
@Data |
||||
public class CloudBaseReq extends BaseRequest { |
||||
/** |
||||
* 用户授权key |
||||
*/ |
||||
private String secret_key; |
||||
/** |
||||
* 接口编号 |
||||
*/ |
||||
private String secret_code; |
||||
/** |
||||
* 加密签名:md5(secret_key+secret_secret)转大写 |
||||
*/ |
||||
private String secret_sign; |
||||
|
||||
private String secret_secret; |
||||
|
||||
public String getSecret_sign() { |
||||
return SignUtils.sign(secret_key+secret_secret); |
||||
} |
||||
} |
@ -0,0 +1,23 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-03-22 16:57 |
||||
*/ |
||||
@Data |
||||
public class AuthReq { |
||||
/** |
||||
* 快递公司,一律用小写字母,见参数字典 |
||||
*/ |
||||
private String com; |
||||
/** |
||||
* 授权店铺id |
||||
*/ |
||||
private String storeId; |
||||
/** |
||||
* 授权后信息的信息回调地址 |
||||
*/ |
||||
private String callbackUrl; |
||||
} |
@ -0,0 +1,24 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-03-22 17:24 |
||||
*/ |
||||
@Data |
||||
public class CancelReq { |
||||
|
||||
/** |
||||
* 任务ID |
||||
*/ |
||||
private String taskId; |
||||
/** |
||||
* 订单ID |
||||
*/ |
||||
private String orderId; |
||||
/** |
||||
* 取消原因 |
||||
*/ |
||||
private String cancelMsg; |
||||
} |
@ -0,0 +1,27 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-03-09 10:15 |
||||
*/ |
||||
@Data |
||||
public class OrderGoods { |
||||
/** |
||||
* 商品名称 |
||||
*/ |
||||
private String name; |
||||
/** |
||||
* 商品价格(分) |
||||
*/ |
||||
private Integer price; |
||||
/** |
||||
* 商品数量 |
||||
*/ |
||||
private Integer count; |
||||
/** |
||||
* 商品单位 |
||||
*/ |
||||
private String unit; |
||||
} |
@ -0,0 +1,115 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-03-22 17:25 |
||||
*/ |
||||
@Data |
||||
public class OrderReq { |
||||
/** |
||||
* 快递公司的编码,一律用小写字母,见《快递公司编码》 |
||||
*/ |
||||
private String com; |
||||
/** |
||||
* 收件人姓名 |
||||
*/ |
||||
private String recManName; |
||||
/** |
||||
* 收件人的手机号,手机号和电话号二者其一必填 |
||||
*/ |
||||
private String recManMobile; |
||||
/** |
||||
* 收件人所在完整地址,如广东深圳市深圳市南山区科技南十二路2号金蝶软件园 |
||||
*/ |
||||
private String recManPrintAddr; |
||||
/** |
||||
* 寄件人姓名 |
||||
*/ |
||||
private String sendManName; |
||||
/** |
||||
* 寄件人的手机号,手机号和电话号二者其一必填 |
||||
*/ |
||||
private String sendManMobile; |
||||
/** |
||||
* 寄件人所在的完整地址,如广东深圳市深圳市南山区科技南十二路2号金蝶软件园B10 |
||||
*/ |
||||
private String sendManPrintAddr; |
||||
/** |
||||
* 服务类型 |
||||
*/ |
||||
private String serviceType; |
||||
/** |
||||
* 物品总重量KG,例:1.5,单位kg |
||||
*/ |
||||
private Double weight; |
||||
/** |
||||
* 备注 |
||||
*/ |
||||
private String remark; |
||||
/** |
||||
* 签名用随机字符串 |
||||
*/ |
||||
private String salt; |
||||
/** |
||||
* callBackUrl订单信息回调 |
||||
*/ |
||||
private String callbackUrl; |
||||
/** |
||||
* 订单类型,默认为0 0: 立即单 1: 预约单 |
||||
*/ |
||||
private Integer orderType; |
||||
/** |
||||
* 取货时间(2020-02-02 22:00,指的是预约取件时间) |
||||
*/ |
||||
|
||||
private String pickupTime; |
||||
/** |
||||
* 支付方式,SHIPPER: 寄付(默认),CONSIGNEE: 到付 |
||||
*/ |
||||
private String payment; |
||||
/** |
||||
* 对应商家版物品来源流水号 |
||||
*/ |
||||
private String orderSourceNo; |
||||
/** |
||||
* 物品来源 |
||||
*/ |
||||
private String orderSourceType; |
||||
/** |
||||
* 店铺ID |
||||
*/ |
||||
private String storeId; |
||||
/** |
||||
* 小费(分) |
||||
*/ |
||||
private Integer additionFee; |
||||
/** |
||||
* 保险费用(闪送支持) |
||||
*/ |
||||
private Integer insurance; |
||||
/** |
||||
* 保险产品ID(闪送支持) |
||||
*/ |
||||
private String insuranceProId; |
||||
/** |
||||
* 商品价格 |
||||
*/ |
||||
private Integer price; |
||||
/** |
||||
* 代收价格 |
||||
*/ |
||||
private Integer CollectionPrice; |
||||
|
||||
private String partnerId; |
||||
|
||||
private String partnerKey; |
||||
|
||||
/** |
||||
* 商品详情(强烈建议提供,方便骑手在取货时确认货品信息 ;顺丰时必填) |
||||
*/ |
||||
private List<OrderGoods> goods; |
||||
} |
@ -0,0 +1,20 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-03-22 17:24 |
||||
*/ |
||||
@Data |
||||
public class QueryReq { |
||||
|
||||
/** |
||||
* 任务ID |
||||
*/ |
||||
private String taskId; |
||||
/** |
||||
* 订单ID |
||||
*/ |
||||
private String orderId; |
||||
} |
@ -0,0 +1,27 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 10:04 |
||||
*/ |
||||
@Data |
||||
public class AutoNumResp { |
||||
/** |
||||
* 请忽略 |
||||
*/ |
||||
public String lengthPre; |
||||
/** |
||||
* 快递公司对应的编码 |
||||
*/ |
||||
private String comCode; |
||||
/** |
||||
* 请忽略 |
||||
*/ |
||||
private String noPre; |
||||
/** |
||||
* 请忽略 |
||||
*/ |
||||
private String noCount; |
||||
} |
@ -0,0 +1,27 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-09-17 14:17 |
||||
*/ |
||||
@Data |
||||
public class BOrderQueryData { |
||||
|
||||
private String province; |
||||
|
||||
private String city; |
||||
|
||||
private String district; |
||||
|
||||
private String addr; |
||||
|
||||
private String latitude; |
||||
|
||||
private String longitude; |
||||
|
||||
private List<BOrderQueryDataInfo> mktInfo; |
||||
} |
@ -0,0 +1,22 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-09-17 14:24 |
||||
*/ |
||||
@Data |
||||
public class BOrderQueryDataInfo { |
||||
/** |
||||
* 业务服务类型 |
||||
*/ |
||||
private List<String> serviceType; |
||||
/** |
||||
* 支持的快递公司编码 |
||||
*/ |
||||
private String kuaidiCom; |
||||
|
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-09-17 14:31 |
||||
*/ |
||||
@Data |
||||
public class BOrderResp { |
||||
/** |
||||
* 任务ID |
||||
*/ |
||||
private String taskId; |
||||
/** |
||||
* 订单ID |
||||
*/ |
||||
private String orderId; |
||||
} |
@ -0,0 +1,8 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-11-25 16:11 |
||||
*/ |
||||
public class BaseResponse<K> { |
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 18:48 |
||||
*/ |
||||
@Data |
||||
public class PrintBaseResp<T> { |
||||
|
||||
private String returnCode; |
||||
|
||||
private boolean result; |
||||
|
||||
private String message; |
||||
|
||||
private T data; |
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 19:49 |
||||
*/ |
||||
@Data |
||||
public class PrintCloudData { |
||||
|
||||
private String taskId; |
||||
|
||||
private String eOrder; |
||||
|
||||
private String kuaidinum; |
||||
|
||||
private String kuaidicom; |
||||
} |
@ -0,0 +1,33 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 19:31 |
||||
*/ |
||||
@Data |
||||
public class PrintHtmlData { |
||||
/** |
||||
* html代码 |
||||
*/ |
||||
private List<String> template; |
||||
/** |
||||
* 快递单号 |
||||
*/ |
||||
private String kuaidinum; |
||||
/** |
||||
* 大头笔 |
||||
*/ |
||||
private String bulkpen; |
||||
/** |
||||
* 电子面单链接 |
||||
*/ |
||||
private List<String> templateurl; |
||||
/** |
||||
* 子单号 |
||||
*/ |
||||
private String childNum; |
||||
} |
@ -0,0 +1,23 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 19:29 |
||||
*/ |
||||
@Data |
||||
public class PrintHtmlResp { |
||||
|
||||
private String taskId; |
||||
|
||||
private String message; |
||||
|
||||
private String status; |
||||
|
||||
private boolean result; |
||||
|
||||
private List<PrintHtmlData> data; |
||||
} |
@ -0,0 +1,21 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-17 18:52 |
||||
*/ |
||||
@Data |
||||
public class PrintImgData { |
||||
|
||||
private String taskId; |
||||
|
||||
private String eOrder; |
||||
|
||||
private String kuaidinum; |
||||
|
||||
private String kuaidicom; |
||||
|
||||
private String imgBase64; |
||||
} |
@ -0,0 +1,35 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-14 16:13 |
||||
*/ |
||||
@Data |
||||
public class QueryTrackData { |
||||
/** |
||||
* 时间,原始格式 |
||||
*/ |
||||
private String time; |
||||
/** |
||||
* 物流轨迹节点内容 |
||||
*/ |
||||
private String context; |
||||
/** |
||||
* 格式化后时间 |
||||
*/ |
||||
private String ftime; |
||||
/** |
||||
* 行政区域的编码 |
||||
*/ |
||||
private String areaCode; |
||||
/** |
||||
* 行政区域的名称 |
||||
*/ |
||||
private String areaName; |
||||
/** |
||||
* 签收状态 (0在途,1揽收,2疑难,3签收,4退签,5派件,6退回,7转投) |
||||
*/ |
||||
private String status; |
||||
} |
@ -0,0 +1,30 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
import lombok.ToString; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-12-24 17:34 |
||||
*/ |
||||
@Data |
||||
@ToString(callSuper = true) |
||||
public class QueryTrackMapResp extends QueryTrackResp { |
||||
|
||||
/** |
||||
* 轨迹地图链接 |
||||
*/ |
||||
private String trailUrl; |
||||
/** |
||||
* 预计到达时间 |
||||
*/ |
||||
private String arrivalTime; |
||||
/** |
||||
* 平均耗时 |
||||
*/ |
||||
private String totalTime; |
||||
/** |
||||
* 到达还需多少时间 |
||||
*/ |
||||
private String remainTime; |
||||
} |
@ -0,0 +1,20 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-14 16:16 |
||||
*/ |
||||
@Data |
||||
public class QueryTrackPosition { |
||||
|
||||
/** |
||||
* 地址编码 |
||||
*/ |
||||
private String number; |
||||
/** |
||||
* 地址名称 |
||||
*/ |
||||
private String name; |
||||
} |
@ -0,0 +1,23 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-14 16:14 |
||||
*/ |
||||
@Data |
||||
public class QueryTrackRouteInfo { |
||||
/** |
||||
* 出发位置 |
||||
*/ |
||||
private QueryTrackPosition from; |
||||
/** |
||||
* 当前位置 |
||||
*/ |
||||
private QueryTrackPosition cur; |
||||
/** |
||||
* 收货地 |
||||
*/ |
||||
private QueryTrackPosition to; |
||||
} |
@ -0,0 +1,19 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-21 9:19 |
||||
*/ |
||||
@Data |
||||
public class SendSmsResp { |
||||
|
||||
private Integer status; |
||||
|
||||
private String data; |
||||
|
||||
private String msg; |
||||
|
||||
private Integer code; |
||||
} |
@ -0,0 +1,27 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-21 10:05 |
||||
*/ |
||||
@Data |
||||
public class SmsCallbackData { |
||||
/** |
||||
* 传入的外部订单号 |
||||
*/ |
||||
private String outorder; |
||||
/** |
||||
* 附加信息 |
||||
*/ |
||||
private String message; |
||||
/** |
||||
* 短信发送状态:发送成功、发送失败、接收成功、接收失败 |
||||
*/ |
||||
private String status; |
||||
/** |
||||
* 返回校验信息:MD5(id + phone + outorder);校验方式是MD5加密的:模板ID+手机号+外部订单号。用户可根据加密签名判断是否进行处理请求 |
||||
*/ |
||||
private String sign; |
||||
} |
@ -0,0 +1,34 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* 短信回调结果 |
||||
* |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-21 10:02 |
||||
*/ |
||||
@Data |
||||
public class SmsCallbackResp { |
||||
/** |
||||
* 状态值:0-表示失败;1-表示成功 |
||||
*/ |
||||
private Integer status; |
||||
/** |
||||
* 返回数据信息:短信发送状态 |
||||
*/ |
||||
private SmsCallbackData data; |
||||
/** |
||||
* 信息内容:返回具体的信息体描述 |
||||
*/ |
||||
private String msg; |
||||
/** |
||||
* 附加信息 |
||||
*/ |
||||
private String extra; |
||||
/** |
||||
* 该值表示所数据的总条数 |
||||
*/ |
||||
private Integer total; |
||||
|
||||
} |
@ -0,0 +1,35 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-08-28 14:24 |
||||
*/ |
||||
@Data |
||||
public class SubscribePushData { |
||||
/** |
||||
* 物流轨迹节点内容 |
||||
*/ |
||||
private String context; |
||||
/** |
||||
* 时间,原始格式 |
||||
*/ |
||||
private String time; |
||||
/** |
||||
* 格式化后时间 |
||||
*/ |
||||
private String ftime; |
||||
/** |
||||
* 本数据元对应的签收状态。只有在开通签收状态服务(见上面"status"后的说明)且在订阅接口中提交resultv2标记后才会出现 |
||||
*/ |
||||
private String status; |
||||
/** |
||||
* 本数据元对应的行政区域的编码,只有在开通签收状态服务(见上面"status"后的说明)且在订阅接口中提交resultv2标记后才会出现 |
||||
*/ |
||||
private String areaCode; |
||||
/** |
||||
* 本数据元对应的行政区域的名称,开通签收状态服务(见上面"status"后的说明)且在订阅接口中提交resultv2标记后才会出现 |
||||
*/ |
||||
private String areaName; |
||||
} |
@ -0,0 +1,50 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-08-28 14:23 |
||||
*/ |
||||
@Data |
||||
public class SubscribePushParamResp { |
||||
/** |
||||
* 监控状态:polling:监控中,shutdown:结束,abort:中止,updateall:重新推送。 |
||||
* 其中当快递单为已签收时status=shutdown,当message为“3天查询无记录”或“60天无变化时”status= abort ,对于stuatus=abort的状态, |
||||
* 需要增加额外的处理逻辑:若贵司校验快递公司编码和单号无误后仍需继续跟踪,则隔半小时再发起该单的订阅即可 |
||||
*/ |
||||
private String status; |
||||
/** |
||||
* 包括got、sending、check三个状态,由于意义不大,已弃用,请忽略 |
||||
*/ |
||||
private String billstatus; |
||||
/** |
||||
* 监控状态相关消息,如:3天查询无记录,60天无变化 |
||||
*/ |
||||
private String message; |
||||
/** |
||||
* 快递公司编码是否出错,0为本推送信息对应的是贵司提交的原始快递公司编码,1为本推送信息对应的是我方纠正后的新的快递公司编码。 |
||||
* 一个单如果我们连续3天都查不到结果,我方会 |
||||
* (1)判断一次贵司提交的快递公司编码是否正确,如果正确,给贵司的回调接口(callbackurl)推送带有如下字段的信息:autoCheck=0、comOld与comNew都为空; |
||||
* (2)如果贵司提交的快递公司编码出错,我们会帮忙用正确的快递公司编码+原来的运单号重新提交订阅并开启监控(后续如果监控到单号有更新就给贵司的回调接口(callbackurl) |
||||
* 推送带有如下字段的信息:autoCheck=1、comOld=原来的公司编码、comNew=新的公司编码); |
||||
* 并且给贵方的回调接口(callbackurl)推送一条含有如下字段的信息:status=abort、autoCheck=0、comOld为空、comNew=纠正后的快递公司编码。 |
||||
*/ |
||||
private String autoCheck; |
||||
/** |
||||
* 贵司提交的原始的快递公司编码。详细见autoCheck后说明。若开启了国际版(即在订阅请求中增加字段interCom=1),则回调请求中暂无此字段 |
||||
*/ |
||||
private String comOld; |
||||
/** |
||||
* 我司纠正后的新的快递公司编码。详细见autoCheck后说明。若开启了国际版(即在订阅请求中增加字段interCom=1),则回调请求中暂无此字段 |
||||
*/ |
||||
private String comNew; |
||||
/** |
||||
* 最新查询结果,若在订阅报文中通过interCom字段开通了国际版,则此lastResult表示出发国的查询结果,全量,倒序(即时间最新的在最前) |
||||
*/ |
||||
private SubscribePushResult lastResult; |
||||
/** |
||||
* 表示最新的目的国家的查询结果,只有在订阅报文中通过interCom=1字段开通了国际版才会显示此数据元,全量,倒序(即时间最新的在最前) |
||||
*/ |
||||
private SubscribePushResult destResult; |
||||
} |
@ -0,0 +1,17 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-07-16 19:18 |
||||
*/ |
||||
@Data |
||||
public class SubscribeResp { |
||||
|
||||
private boolean result; |
||||
|
||||
private String returnCode; |
||||
|
||||
private String message; |
||||
} |
@ -0,0 +1,46 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-08-28 14:23 |
||||
*/ |
||||
@Data |
||||
public class SubscribeWithMapPushParamResp { |
||||
/** |
||||
* 监控状态:polling:监控中,shutdown:结束,abort:中止,updateall:重新推送。 |
||||
* 其中当快递单为已签收时status=shutdown,当message为“3天查询无记录”或“60天无变化时”status= abort ,对于stuatus=abort的状态, |
||||
* 需要增加额外的处理逻辑:若贵司校验快递公司编码和单号无误后仍需继续跟踪,则隔半小时再发起该单的订阅即可 |
||||
*/ |
||||
private String status; |
||||
/** |
||||
* 包括got、sending、check三个状态,由于意义不大,已弃用,请忽略 |
||||
*/ |
||||
private String billstatus; |
||||
/** |
||||
* 监控状态相关消息,如:3天查询无记录,60天无变化 |
||||
*/ |
||||
private String message; |
||||
/** |
||||
* 快递公司编码是否出错,0为本推送信息对应的是贵司提交的原始快递公司编码,1为本推送信息对应的是我方纠正后的新的快递公司编码。 |
||||
* 一个单如果我们连续3天都查不到结果,我方会 |
||||
* (1)判断一次贵司提交的快递公司编码是否正确,如果正确,给贵司的回调接口(callbackurl)推送带有如下字段的信息:autoCheck=0、comOld与comNew都为空; |
||||
* (2)如果贵司提交的快递公司编码出错,我们会帮忙用正确的快递公司编码+原来的运单号重新提交订阅并开启监控(后续如果监控到单号有更新就给贵司的回调接口(callbackurl) |
||||
* 推送带有如下字段的信息:autoCheck=1、comOld=原来的公司编码、comNew=新的公司编码); |
||||
* 并且给贵方的回调接口(callbackurl)推送一条含有如下字段的信息:status=abort、autoCheck=0、comOld为空、comNew=纠正后的快递公司编码。 |
||||
*/ |
||||
private String autoCheck; |
||||
/** |
||||
* 贵司提交的原始的快递公司编码。详细见autoCheck后说明。若开启了国际版(即在订阅请求中增加字段interCom=1),则回调请求中暂无此字段 |
||||
*/ |
||||
private String comOld; |
||||
/** |
||||
* 我司纠正后的新的快递公司编码。详细见autoCheck后说明。若开启了国际版(即在订阅请求中增加字段interCom=1),则回调请求中暂无此字段 |
||||
*/ |
||||
private String comNew; |
||||
/** |
||||
* 最新查询结果,若在订阅报文中通过interCom字段开通了国际版,则此lastResult表示出发国的查询结果,全量,倒序(即时间最新的在最前) |
||||
*/ |
||||
private SubscribeWithMapPushResult lastResult; |
||||
} |
@ -0,0 +1,21 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response; |
||||
|
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2021-01-06 14:24 |
||||
*/ |
||||
@Getter |
||||
@Setter |
||||
public class ThirdAuthResp { |
||||
// 授权链接
|
||||
private String url; |
||||
// 面单需要的partnerKey
|
||||
private String partnerKey; |
||||
// 面单需要的parterId
|
||||
private String parterId; |
||||
// 面单需要的net
|
||||
private String net; |
||||
} |
@ -0,0 +1,20 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response.cloud; |
||||
|
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-10-27 16:00 |
||||
*/ |
||||
@Data |
||||
public class COrderRespData { |
||||
/** |
||||
* 任务id |
||||
*/ |
||||
private String taskId; |
||||
/** |
||||
* 快递100返回给您的平台订单id |
||||
*/ |
||||
private String orderId; |
||||
|
||||
} |
@ -0,0 +1,20 @@
|
||||
package co.yixiang.tools.utils.kuaidi100.sdk.response.cloud; |
||||
|
||||
/** |
||||
* @Author: api.kuaidi100.com |
||||
* @Date: 2020-10-27 15:58 |
||||
*/ |
||||
public class CloudBaseResp<T> { |
||||
/** |
||||
* 响应码 |
||||
*/ |
||||
private String code; |
||||
/** |
||||
* 响应结果描述 |
||||
*/ |
||||
private String message; |
||||
/** |
||||
* 响应数据 |
||||
*/ |
||||
private T data; |
||||
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue