From b23a784ceec3625b9589bdee22744abc5a0a6de7 Mon Sep 17 00:00:00 2001 From: nitmali Date: Mon, 9 Aug 2021 11:03:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E5=AD=90=E9=9D=A2=E5=8D=95=20-=20?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E4=B8=8B=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 98 ++++++++++++++ pom.xml | 7 + .../kuaidi100/sdk/api/PrintInternation.java | 32 +++++ .../sdk/contant/ApiInfoConstant.java | 8 ++ .../sdk/contant/CompanyConstant.java | 3 + .../com/kuaidi100/sdk/core/BaseClient.java | 4 +- .../com/kuaidi100/sdk/request/ExportInfo.java | 41 ++++++ .../com/kuaidi100/sdk/request/ManInfo.java | 38 +++++- .../kuaidi100/sdk/request/PackageInfo.java | 34 +++++ .../sdk/request/PrintInternationParam.java | 123 ++++++++++++++++++ .../sdk/response/PrintInternationData.java | 23 ++++ .../sdk/response/PrintInternationResp.java | 27 ++++ .../com/kuaidi100/sdk/utils/PdfUtils.java | 90 +++++++++++++ src/test/java/BaseServiceTest.java | 102 +++++++++++++++ 14 files changed, 625 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/kuaidi100/sdk/api/PrintInternation.java create mode 100644 src/main/java/com/kuaidi100/sdk/request/ExportInfo.java create mode 100644 src/main/java/com/kuaidi100/sdk/request/PackageInfo.java create mode 100644 src/main/java/com/kuaidi100/sdk/request/PrintInternationParam.java create mode 100644 src/main/java/com/kuaidi100/sdk/response/PrintInternationData.java create mode 100644 src/main/java/com/kuaidi100/sdk/response/PrintInternationResp.java create mode 100644 src/main/java/com/kuaidi100/sdk/utils/PdfUtils.java diff --git a/README.md b/README.md index c5afded..9f83c55 100644 --- a/README.md +++ b/README.md @@ -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 packageInfos = new ArrayList(); + 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 exportInfos = new ArrayList(); + 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()); + } + /** * 电子面单打印 */ diff --git a/pom.xml b/pom.xml index 033902e..b49c384 100644 --- a/pom.xml +++ b/pom.xml @@ -59,5 +59,12 @@ 2.5 provided + + + org.apache.pdfbox + pdfbox + 2.0.6 + compile + \ No newline at end of file diff --git a/src/main/java/com/kuaidi100/sdk/api/PrintInternation.java b/src/main/java/com/kuaidi100/sdk/api/PrintInternation.java new file mode 100644 index 0000000..a138432 --- /dev/null +++ b/src/main/java/com/kuaidi100/sdk/api/PrintInternation.java @@ -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; + } +} diff --git a/src/main/java/com/kuaidi100/sdk/contant/ApiInfoConstant.java b/src/main/java/com/kuaidi100/sdk/contant/ApiInfoConstant.java index f390fbe..e4f68c1 100644 --- a/src/main/java/com/kuaidi100/sdk/contant/ApiInfoConstant.java +++ b/src/main/java/com/kuaidi100/sdk/contant/ApiInfoConstant.java @@ -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 */ diff --git a/src/main/java/com/kuaidi100/sdk/contant/CompanyConstant.java b/src/main/java/com/kuaidi100/sdk/contant/CompanyConstant.java index 74e21d0..42bc427 100644 --- a/src/main/java/com/kuaidi100/sdk/contant/CompanyConstant.java +++ b/src/main/java/com/kuaidi100/sdk/contant/CompanyConstant.java @@ -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"; } diff --git a/src/main/java/com/kuaidi100/sdk/core/BaseClient.java b/src/main/java/com/kuaidi100/sdk/core/BaseClient.java index f4cda0b..544baee 100644 --- a/src/main/java/com/kuaidi100/sdk/core/BaseClient.java +++ b/src/main/java/com/kuaidi100/sdk/core/BaseClient.java @@ -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{ diff --git a/src/main/java/com/kuaidi100/sdk/request/ExportInfo.java b/src/main/java/com/kuaidi100/sdk/request/ExportInfo.java new file mode 100644 index 0000000..5435c8a --- /dev/null +++ b/src/main/java/com/kuaidi100/sdk/request/ExportInfo.java @@ -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; +} diff --git a/src/main/java/com/kuaidi100/sdk/request/ManInfo.java b/src/main/java/com/kuaidi100/sdk/request/ManInfo.java index 8ec5694..c81a75b 100644 --- a/src/main/java/com/kuaidi100/sdk/request/ManInfo.java +++ b/src/main/java/com/kuaidi100/sdk/request/ManInfo.java @@ -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; } diff --git a/src/main/java/com/kuaidi100/sdk/request/PackageInfo.java b/src/main/java/com/kuaidi100/sdk/request/PackageInfo.java new file mode 100644 index 0000000..8e13053 --- /dev/null +++ b/src/main/java/com/kuaidi100/sdk/request/PackageInfo.java @@ -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; +} diff --git a/src/main/java/com/kuaidi100/sdk/request/PrintInternationParam.java b/src/main/java/com/kuaidi100/sdk/request/PrintInternationParam.java new file mode 100644 index 0000000..724040a --- /dev/null +++ b/src/main/java/com/kuaidi100/sdk/request/PrintInternationParam.java @@ -0,0 +1,123 @@ +package com.kuaidi100.sdk.request; +import lombok.Data; + +import java.util.List; + +/** + * @author Mali + * + * @since 2021/7/21 9:47 + */ +@Data +public class PrintInternationParam { + /** + * 电子面单账户号码,需向快递公司在贵司当地的网点申请 + */ + private String partnerId; + /** + * 电子面单账户号码,需向快递公司在贵司当地的网点申请(dhl) + */ + private String partnerName; + /** + * 电子面单承载编号,需向快递公司在贵司当地的网点申请(fedex) + */ + private String code; + /** + * 电子面单账户密码,需向快递公司在贵司当地的网点申请(fedex) + */ + private String partnerKey; + /** + * 电子面单密钥,需向快递公司在贵司当地的网点申请 + */ + private String partnerSecret; + /** + * 快递公司的编码,一律用小写字母 + */ + private String kuaidicom; + /** + * 收件人信息 + */ + private ManInfo recMan; + /** + * 寄件人信息 + */ + private ManInfo sendMan; + /** + * 物品名称(部分快递公司必填) + */ + private String cargo; + /** + * 物品总数量。 + * 另外该属性与子单有关,如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号), + * needChild = 1、count 需要大于1,如count = 2 则一个主单 一个子单, + * count = 3则一个主单 二个子单;返回的子单号码见返回结果的childNum字段 + */ + private Integer count; + /** + * 物品总重量,单位:KG (例子:0.5) + */ + private Double weight; + /** + * 是否需要子单(支持子单的快递公司才可以用,是否支持可以参考参数字典) + * 1:需要 + * 0:不需要(默认) + * 如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号); + * needChild = 1、count 需要大于1,如count = 2 一个主单 一个子单, + * count = 3 一个主单 二个子单,返回的子单号码见返回结果的childNum字段 + */ + private String needChild; + /** + * 支付方式:
+ * SHIPPER:寄方付(默认)
+ * CONSIGNEE:到付
+ * MONTHLY:月结
+ * THIRDPARTY:第三方支付
+ */ + private String payType; + /** + * 产品类型: 默认标准快递
+ *
+ * dhl(DHL)
+ * 标准快递
+ * 文件-普通服务
+ * 包裹-普通服务
+ *
+ * fedex(Fedex)
+ * International Priority
+ * International First
+ * International Economy
+ */ + private String expType; + /** + * 备注 + */ + private String remark; + /** + * 出口商品码,建议填写,加快清关速度 + */ + private String exportCommodityCode; + /** + * 进口商品码,建议填写,加快清关速度 + */ + private String importCommodityCode; + /** + * 申报价值,包裹类必填,货币单位根据currency确定,人民币单位是元 + */ + private Double customsValue; + /** + * 贸易条款;CFR,DAP等,国际贸易规范用于,默认DAP + */ + private String tradeTerm; + /** + * 货币单位,CNY-人民币;USD-美元;默认CNY + */ + private String currency; + /** + * 包裹信息集合 + */ + private List packageInfos; + /** + * 出口信息集合,一般包裹类要求必填,文件类不用填,用于清关报备 + */ + private List exportInfos; +} diff --git a/src/main/java/com/kuaidi100/sdk/response/PrintInternationData.java b/src/main/java/com/kuaidi100/sdk/response/PrintInternationData.java new file mode 100644 index 0000000..e065ddb --- /dev/null +++ b/src/main/java/com/kuaidi100/sdk/response/PrintInternationData.java @@ -0,0 +1,23 @@ +package com.kuaidi100.sdk.response; + +import lombok.Data; + +/** + * @author Mali + * @since 2021/7/21 15:29 + */ +@Data +public class PrintInternationData { + /** + * 快递单号 + */ + private String kuaidinum; + /** + * 不明 + */ + private String pdf; + /** + * 不明 + */ + private String pkgNums; +} diff --git a/src/main/java/com/kuaidi100/sdk/response/PrintInternationResp.java b/src/main/java/com/kuaidi100/sdk/response/PrintInternationResp.java new file mode 100644 index 0000000..0b01c60 --- /dev/null +++ b/src/main/java/com/kuaidi100/sdk/response/PrintInternationResp.java @@ -0,0 +1,27 @@ +package com.kuaidi100.sdk.response; + +import lombok.Data; + +import java.util.List; + +/** + * @author Mali + * @since 2021/7/21 15:29 + */ +@Data +public class PrintInternationResp { + /** + * 返回报文描述 + */ + private String message; + /** + * 返回编码 + */ + private String status; + /** + * true提交成功,false失败 + */ + private boolean result; + + private List data; +} diff --git a/src/main/java/com/kuaidi100/sdk/utils/PdfUtils.java b/src/main/java/com/kuaidi100/sdk/utils/PdfUtils.java new file mode 100644 index 0000000..c47e406 --- /dev/null +++ b/src/main/java/com/kuaidi100/sdk/utils/PdfUtils.java @@ -0,0 +1,90 @@ +package com.kuaidi100.sdk.utils; + +import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.PDFRenderer; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Mali + * @since 2021/7/22 16:37 + */ +public class PdfUtils { + + /** + * PDF BASE64 转换 PDF FILE + */ + public static void base64StringToPdf(String base64sString, String fileName) { + BufferedInputStream bin = null; + FileOutputStream fout = null; + BufferedOutputStream bout = null; + try { + // 将base64编码的字符串解码成字节数组 + byte[] bytes = Base64.decode(base64sString); + ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); + // 创建从底层输入流中读取数据的缓冲输入流对象 + bin = new BufferedInputStream(inputStream); + // 指定输出的文件 + File file = new File(fileName); + // 创建到指定文件的输出流 + fout = new FileOutputStream(file); + // 为文件输出流对接缓冲输出流对象 + bout = new BufferedOutputStream(fout); + byte[] buffers = new byte[1024]; + int len = bin.read(buffers); + while (len != -1) { + bout.write(buffers, 0, len); + len = bin.read(buffers); + } + // 刷新此输出流并强制写出所有缓冲的输出字节,必须这行代码,否则有可能有问题 + bout.flush(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + bin.close(); + fout.close(); + bout.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * PDF BASE64 转换 IMAGE BASE64 + */ + public static List base64PdfToImgBase64(String pdfBase64) { + return base64PdfToImgBase64(pdfBase64, "png"); + } + + /** + * PDF BASE64 转换 IMAGE BASE64 + * 图片类型 + */ + public static List base64PdfToImgBase64(String pdfBase64, String imgType) { + List imgBase64List = new ArrayList<>(); + try { + byte [] byteArray = Base64.decode(pdfBase64); + PDDocument doc = PDDocument.load(byteArray); + PDFRenderer renderer = new PDFRenderer(doc); + int pageCount = doc.getNumberOfPages(); + for (int i = 0; i < pageCount; i++) { + // DPI越高,清晰度越高,速度越慢 + BufferedImage image = renderer.renderImageWithDPI(i, 320); + //输出流 + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + ImageIO.write(image, imgType, stream); + imgBase64List.add(Base64.encode(stream.toByteArray())); + } + } catch (IOException e) { + e.printStackTrace(); + } + return imgBase64List; + } +} diff --git a/src/test/java/BaseServiceTest.java b/src/test/java/BaseServiceTest.java index 27157cb..b3d6542 100644 --- a/src/test/java/BaseServiceTest.java +++ b/src/test/java/BaseServiceTest.java @@ -10,13 +10,17 @@ import com.kuaidi100.sdk.request.cloud.COrderCancelReq; import com.kuaidi100.sdk.request.cloud.COrderQueryReq; import com.kuaidi100.sdk.request.cloud.COrderReq; +import com.kuaidi100.sdk.response.PrintInternationResp; import com.kuaidi100.sdk.response.QueryTrackMapResp; +import com.kuaidi100.sdk.utils.PdfUtils; import com.kuaidi100.sdk.utils.PropertiesReader; import com.kuaidi100.sdk.utils.SignUtils; import org.junit.Test; import java.io.File; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -188,6 +192,104 @@ public void testPrintHtml() throws Exception{ 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 packageInfos = new ArrayList(); + 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 exportInfos = new ArrayList(); + 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()); + } + /** * 电子面单打印 */