Skip to content

电子面单 - 国际下单 #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -210,6 +210,104 @@ public class BaseServiceTest {
System.out.println(printHtml.execute(printReq));
}

/**
* 国际电子面单下单接口
*/
@Test
public void testPrintInternation() throws Exception{

PrintInternationParam printInternationParam = new PrintInternationParam();
/***************************************账户信息 start*******************************************/
printInternationParam.setPartnerId("xxxxxx");
printInternationParam.setPartnerKey("xxxxxx");
printInternationParam.setPartnerSecret("xxxxxx");
printInternationParam.setCode("xxxxxx");
printInternationParam.setKuaidicom(CompanyConstant.FEDEX);
// 产品类型
printInternationParam.setExpType("International Priority");
printInternationParam.setNeedChild("0");
printInternationParam.setPayType("SHIPPER");
/***************************************账户信息 end*******************************************/


/***************************************收件人 start*******************************************/
// 寄件人信息
ManInfo sendMan = new ManInfo();
sendMan.setName("Kaka");
sendMan.setMobile("13500000000");
sendMan.setAddr("Kingdee Software Park");
sendMan.setDistrict("Hi-tech Park,Nanshang District");
sendMan.setCountryCode("CN");
sendMan.setCity("SHEN ZHEN");
sendMan.setZipcode("518057");

// 收件人信息
ManInfo recMan = new ManInfo();
recMan.setName("Mr. MALI");
recMan.setMobile("351213118020");
recMan.setAddr("EDIFICIO CONCARSUL,RUA ALFREDO SIL VA");
recMan.setDistrict("Powiat kaliski");
recMan.setCountryCode("PT");
recMan.setCity("AMADORA");
recMan.setZipcode("2610-016");

printInternationParam.setSendMan(sendMan);
printInternationParam.setRecMan(recMan);
/***************************************收件人 end*******************************************/

/***************************************货件详细信息 start*******************************************/
printInternationParam.setRemark("just a test demo");
printInternationParam.setCustomsValue(100D);
printInternationParam.setTradeTerm("DAP");
printInternationParam.setCurrency("CNY");

PackageInfo packageInfo = new PackageInfo();
packageInfo.setHeight("10");
packageInfo.setWidth("10");
packageInfo.setLength("10");
packageInfo.setWeight(0.2);
packageInfo.setPackageReference("just a user remark");
List<PackageInfo> packageInfos = new ArrayList<PackageInfo>();
packageInfos.add(packageInfo);
printInternationParam.setPackageInfos(packageInfos);
printInternationParam.setCount(packageInfos.size());
printInternationParam.setWeight(packageInfos.stream().mapToDouble(PackageInfo::getWeight).sum());

ExportInfo exportInfo = new ExportInfo();
exportInfo.setNetWeight(0.1);
exportInfo.setGrossWeight(0.1);
exportInfo.setManufacturingCountryCode("CN");
exportInfo.setUnitPrice(100D);
exportInfo.setQuantity(1D);
exportInfo.setQuantityUnitOfMeasurement("KG");
exportInfo.setDesc("just a user desc");
List<ExportInfo> exportInfos = new ArrayList<ExportInfo>();
exportInfos.add(exportInfo);
printInternationParam.setExportInfos(exportInfos);
/***************************************货件详细信息 end*******************************************/

String t = System.currentTimeMillis() + "";
String param = new Gson().toJson(printInternationParam);
String sign = SignUtils.printSign(param, t, key, secret);

PrintReq printReq = new PrintReq();
printReq.setKey(key);
printReq.setMethod(ApiInfoConstant.ELECTRONIC_INTERSHIP_METHOD);
printReq.setT(t);
printReq.setSign(sign);
printReq.setParam(param);

PrintInternation printInternation = new PrintInternation();
PrintInternationResp resp = printInternation.print(printReq);
System.out.println(resp);

// 转换PDF文件
PdfUtils.base64StringToPdf(resp.getData().get(0).getPdf(), "printInternation.pdf");

// 转换图片
// PdfUtils.base64PdfToImgBase64(resp.getData().get(0).getPdf());
}

/**
* 电子面单打印
*/
7 changes: 7 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -59,5 +59,12 @@
<version>2.5</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.6</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
32 changes: 32 additions & 0 deletions src/main/java/com/kuaidi100/sdk/api/PrintInternation.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.kuaidi100.sdk.api;

import com.google.gson.Gson;
import com.kuaidi100.sdk.contant.ApiInfoConstant;
import com.kuaidi100.sdk.core.BaseClient;
import com.kuaidi100.sdk.pojo.HttpResult;
import com.kuaidi100.sdk.request.BaseRequest;
import com.kuaidi100.sdk.request.PrintReq;
import com.kuaidi100.sdk.response.PrintInternationResp;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;


/**
* @author Mali
* @since 2021/7/21 14:56
*/
public class PrintInternation extends BaseClient {
@Override
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.ELECTRONIC_INTERSHIP_URL;
}

public PrintInternationResp 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(), PrintInternationResp.class);
}
return null;
}
}
8 changes: 8 additions & 0 deletions src/main/java/com/kuaidi100/sdk/contant/ApiInfoConstant.java
Original file line number Diff line number Diff line change
@@ -45,6 +45,14 @@ public class ApiInfoConstant {
* 电子面单获取图片
*/
public static final String ELECTRONIC_ORDER_PIC_METHOD = "getPrintImg";
/**
* 国际电子面单下单 url
*/
public static final String ELECTRONIC_INTERSHIP_URL = "http://poll.kuaidi100.com/eorderapi.do";
/**
* 国际电子面单下单
*/
public static final String ELECTRONIC_INTERSHIP_METHOD = "intership";
/**
* 电子面单打印 url
*/
3 changes: 3 additions & 0 deletions src/main/java/com/kuaidi100/sdk/contant/CompanyConstant.java
Original file line number Diff line number Diff line change
@@ -20,4 +20,7 @@ public class CompanyConstant {

public static final String SS = "shansong";
public static final String KFW = "kfw";

public static final String DHL = "dhl";
public static final String FEDEX = "fedex";
}
4 changes: 2 additions & 2 deletions src/main/java/com/kuaidi100/sdk/core/BaseClient.java
Original file line number Diff line number Diff line change
@@ -11,9 +11,9 @@
*/
public abstract class BaseClient implements IBaseClient{

private int connectTimeout = 3000;
private int connectTimeout = 10000;

private int socketTimeout = 3000;
private int socketTimeout = 10000;

public HttpResult execute(BaseRequest request) throws Exception{

41 changes: 41 additions & 0 deletions src/main/java/com/kuaidi100/sdk/request/ExportInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.kuaidi100.sdk.request;

import lombok.Data;

/**
* 出口信息 一般包裹类要求必填,文件类不用填,用于清关报备
*
* @author Mali
* @since 2021/7/21 15:12
*/
@Data
public class ExportInfo {
/**
* 净重,单位kg,默认0.1
*/
private Double netWeight;
/**
* 毛重,单位kg,默认 0.1
*/
private Double grossWeight;
/**
* 生产国代号;CN-中国,US-美国 必填
*/
private String manufacturingCountryCode;
/**
* 物品单价,货币单位根据currency确定,人民币单位是元 必填
*/
private Double unitPrice;
/**
* 物品数量,默认1.0 必填
*/
private Double quantity;
/**
* 计数单位,必填;PCS-件,KG-千克等,默认PCS
*/
private String quantityUnitOfMeasurement;
/**
* 物品描述 必填
*/
private String desc;
}
38 changes: 35 additions & 3 deletions src/main/java/com/kuaidi100/sdk/request/ManInfo.java
Original file line number Diff line number Diff line change
@@ -9,19 +9,51 @@
@Data
public class ManInfo {
/**
* 收件人姓名 (必填)
* 姓名 (必填)
*/
private String name;
/**
* 收件人的手机号,手机号和电话号二者其一必填 (必填)
* 手机号,手机号和电话号二者其一必填 (必填)
*/
private String mobile;
/**
* 收件人所在完整地址 (必填)
* 完整地址(国内快递)
*/
private String printAddr;
/**
* 完整地址(国际快递)
*/
private String addr;
/**
* 收件人所在公司名称(可选)
*/
private String company;
/**
* 郡|县,可作为收件地址补充
*/
private String district;
/**
* 州|省,可作为收件地址补充
*/
private String province;
/**
* 国家代号 CN-中国 ,US-美国等, 详见字典表
*/
private String countryCode;
/**
* 城市
*/
private String city;
/**
* 邮编
*/
private String zipcode;
/**
* 电话
*/
private String tel;
/**
* 邮箱
*/
private String email;
}
34 changes: 34 additions & 0 deletions src/main/java/com/kuaidi100/sdk/request/PackageInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.kuaidi100.sdk.request;

import lombok.Data;

/**
* 包裹信息
*
* @author Mali
* @since 2021/7/21 15:10
*/
@Data
public class PackageInfo {
private Integer count;
/**
* 高度;单位厘米,默认1.0
*/
private String height;
/**
* 宽度;单位厘米, 默认10.0
*/
private String width;
/**
* 长度;单位厘米默认10.0
*/
private String length;
/**
* 重量; 单位千克,默认0.1
*/
private Double weight;
/**
* 该包裹的备注信息之类
*/
private String packageReference;
}
Loading