diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaExpressService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaExpressService.java new file mode 100644 index 000000000..b6f5e2d68 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaExpressService.java @@ -0,0 +1,203 @@ +package cn.binarywang.wx.miniapp.api; + +import cn.binarywang.wx.miniapp.bean.express.WxMaExpressAccount; +import cn.binarywang.wx.miniapp.bean.express.WxMaExpressDelivery; +import cn.binarywang.wx.miniapp.bean.express.WxMaExpressPath; +import cn.binarywang.wx.miniapp.bean.express.WxMaExpressPrinter; +import cn.binarywang.wx.miniapp.bean.express.request.*; +import cn.binarywang.wx.miniapp.bean.express.result.WxMaExpressOrderInfoResult; +import me.chanjar.weixin.common.error.WxErrorException; + +import java.util.List; + +/** + * 小程序物流助手 + * @author xiaoyu + * @since 2019-11-26 + */ +public interface WxMaExpressService { + /** + * 获取支持的快递公司列表 + */ + String ALL_DELIVERY_URL = "https://api.weixin.qq.com/cgi-bin/express/business/delivery/getall"; + + /** + * 获取所有绑定的物流账号 + */ + String ALL_ACCOUNT_URL = "https://api.weixin.qq.com/cgi-bin/express/business/account/getall"; + + /** + * 绑定、解绑物流账号 + */ + String BIND_ACCOUNT_URL = "https://api.weixin.qq.com/cgi-bin/express/business/account/bind"; + + /** + * 获取电子面单余额 + */ + String GET_QUOTA_URL = "https://api.weixin.qq.com/cgi-bin/express/business/quota/get"; + + /** + * 配置面单打印员 + */ + String UPDATE_PRINTER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/printer/update"; + + /** + * 获取打印员 + */ + String GET_PRINTER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/printer/getall"; + + /** + * 生成运单 + */ + String ADD_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/add"; + + /** + * 批量获取运单数据 + */ + String BATCH_GET_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/batchget"; + + /** + * 取消运单 + */ + String CANCEL_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/cancel"; + + /** + * 获取运单数据 + */ + String GET_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/get"; + + /** + * 查询运单轨迹 + */ + String GET_PATH_URL = "https://api.weixin.qq.com/cgi-bin/express/business/path/get"; + + /** + * 模拟快递公司更新订单状态 + */ + String TEST_UPDATE_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/test_update_order"; + + /** + * 获取支持的快递公司列表 + * @return 快递公司列表 + * @throws WxErrorException 获取失败时返回 + *
+ * 查看文档 + *+ */ + List
+ * 查看文档 + *+ */ + List
+ * 查看文档 + *+ */ + void bindAccount(WxMaExpressBindAccountRequest wxMaExpressBindAccountRequest) throws WxErrorException; + + /** + * 获取电子面单余额。仅在使用加盟类快递公司时,才可以调用。 + * @param wxMaExpressBindAccountRequest 物流账号对象 + * @return 电子面单余额 + * @throws WxErrorException 获取失败时返回 + *
+ * 查看文档 + *+ */ + Integer getQuota(WxMaExpressBindAccountRequest wxMaExpressBindAccountRequest) throws WxErrorException; + + /** + * 配置面单打印员,可以设置多个,若需要使用微信打单 PC 软件,才需要调用。 + * @param wxMaExpressPrinterUpdateRequest 面单打印员对象 + * @throws WxErrorException 请求失败时返回 + *
+ * 查看文档 + *+ */ + void updatePrinter(WxMaExpressPrinterUpdateRequest wxMaExpressPrinterUpdateRequest) throws WxErrorException; + + /** + * 获取打印员。若需要使用微信打单 PC 软件,才需要调用 + * @return 打印员 + * @throws WxErrorException 获取失败时返回 + *
+ * 查看文档 + *+ */ + WxMaExpressPrinter getPrinter() throws WxErrorException; + + /** + * 生成运单 + * @param wxMaExpressAddOrderRequest 生成运单请求对象 + * @return 生成运单结果 + * @throws WxErrorException 请求失败时返回 + *
+ * 查看文档 + *+ */ + WxMaExpressOrderInfoResult addOrder(WxMaExpressAddOrderRequest wxMaExpressAddOrderRequest) throws WxErrorException; + + /** + * 批量获取运单数据 + * @param requests 获取运单请求对象集合,最多不能超过1000个 + * @return 运单信息集合 + * @throws WxErrorException 获取失败时返回 + *
+ * 查看文档 + *+ */ + List
+ * 查看文档 + *+ */ + void cancelOrder(WxMaExpressGetOrderRequest wxMaExpressGetOrderRequest) throws WxErrorException; + + /** + * 获取运单数据 + * @param wxMaExpressGetOrderRequest 运单信息请求对象 + * @return 运单信息 + * @throws WxErrorException 获取失败时返回 + *
+ * 查看文档 + *+ */ + WxMaExpressOrderInfoResult getOrder(WxMaExpressGetOrderRequest wxMaExpressGetOrderRequest) throws WxErrorException; + + /** + * 查询运单轨迹 + * @param wxMaExpressGetOrderRequest 运单信息请求对象 + * @return 运单轨迹对象 + * @throws WxErrorException 查询失败时返回 + *
+ * 查看文档 + *+ */ + WxMaExpressPath getPath(WxMaExpressGetOrderRequest wxMaExpressGetOrderRequest) throws WxErrorException; + + /** + * 模拟快递公司更新订单状态, 该接口只能用户测试 + * @param wxMaExpressTestUpdateOrderRequest 模拟快递公司更新订单状态请求对象 + * @throws WxErrorException 模拟更新订单状态失败时返回 + *
+ * 查看文档 + *+ */ + void testUpdateOrder(WxMaExpressTestUpdateOrderRequest wxMaExpressTestUpdateOrderRequest) throws WxErrorException; +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java index 52988f36e..695590a6b 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java @@ -224,5 +224,9 @@ public interface WxMaService { */ RequestHttp getRequestHttp(); - + /** + * 获取物流助手接口服务对象 + * @return + */ + WxMaExpressService getExpressService(); } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java new file mode 100644 index 000000000..21d0bfe0b --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java @@ -0,0 +1,98 @@ +package cn.binarywang.wx.miniapp.api.impl; + +import cn.binarywang.wx.miniapp.api.WxMaExpressService; +import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.bean.express.WxMaExpressAccount; +import cn.binarywang.wx.miniapp.bean.express.WxMaExpressDelivery; +import cn.binarywang.wx.miniapp.bean.express.WxMaExpressPath; +import cn.binarywang.wx.miniapp.bean.express.WxMaExpressPrinter; +import cn.binarywang.wx.miniapp.bean.express.request.*; +import cn.binarywang.wx.miniapp.bean.express.result.WxMaExpressOrderInfoResult; +import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import lombok.AllArgsConstructor; +import me.chanjar.weixin.common.error.WxErrorException; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author xiaoyu + * @since 2019-11-26 + */ +@AllArgsConstructor +public class WxMaExpressServiceImpl implements WxMaExpressService { + + private WxMaService wxMaService; + + @Override + public List
+ * 快递公司对象 + *+ * @author xiaoyu + * @since 2019-11-26 + */ +@Data +public class WxMaExpressDelivery implements Serializable { + private static final JsonParser JSON_PARSER = new JsonParser(); + private static final long serialVersionUID = -8394544895730223810L; + + /** + * 快递公司 ID + */ + @SerializedName("delivery_id") + private String deliveryId; + + /** + * 快递公司名称 + */ + @SerializedName("delivery_name") + private String deliveryName; + + /** + * 是否支持散单, 1表示支持 + */ + @SerializedName("can_use_cash") + private Integer canUseCash; + + /** + * 是否支持查询面单余额, 1表示支持 + */ + @SerializedName("can_get_quota") + private Integer canGetQuota; + + /** + * 散单对应的bizid,当can_use_cash=1时有效 + */ + @SerializedName("cash_biz_id") + private String cashBizId; + + /** + * 支持的服务类型 + */ + @SerializedName("service_type") + private List
+ * 面单打印员对象 + *+ * @author xiaoyu + * @since 2019-11-26 + */ +@Data +public class WxMaExpressPrinter implements Serializable { + + private static final JsonParser JSON_PARSER = new JsonParser(); + private static final long serialVersionUID = 7164449984700322531L; + + /** + * 数量 + */ + private Integer count; + + /** + * 打印员openid + */ + private List
+ * 生成运单请求对象 + *+ * @author xiaoyu + * @since 2019-11-26 + */ +@Data +@Builder +public class WxMaExpressAddOrderRequest implements Serializable { + + private static final long serialVersionUID = -7538739003766268386L; + + + /** + * 订单来源 + *
+ * 是否必填: 是 + * 描述: 0为小程序订单,2为App或H5订单,填2则不发送物流服务通知 + *+ */ + @SerializedName("add_source") + private Integer addSource; + + /** + * App或H5的appid + *
+ * 是否必填: 否 + * 描述: add_source=2时必填,需和开通了物流助手的小程序绑定同一open帐号 + *+ */ + @SerializedName("wx_appid") + private String wxAppid; + + /** + * 订单ID + *
+ * 是否必填: 是 + * 描述: 须保证全局唯一,不超过512字节 + *+ */ + @SerializedName("order_id") + private String orderId; + + /** + * 用户openid + *
+ * 是否必填: 否 + * 描述: 当add_source=2时无需填写(不发送物流服务通知) + *+ */ + @SerializedName("openid") + private String openid; + + /** + * 快递公司ID + *
+ * 是否必填: 是 + * 描述: 可通过getAllDelivery查询 + *+ */ + @SerializedName("delivery_id") + private String deliveryId; + + /** + * 快递客户编码或者现付编码 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("biz_id") + private String bizId; + + /** + * 快递备注信息 + *
+ * 是否必填: 否 + * 描述: 比如"易碎物品",不超过1024字节 + *+ */ + @SerializedName("custom_remark") + private String customRemark; + + /** + * 订单标签id + *
+ * 是否必填: 否 + * 描述: 用于平台型小程序区分平台上的入驻方,tagid须与入驻方账号一一对应,非平台型小程序无需填写该字段 + *+ */ + @SerializedName("tagid") + private Integer tagid; + + /** + * 预期的上门揽件时间 + *
+ * 是否必填: 否 + * 描述: 顺丰必须传,0表示已事先约定取件时间;否则请传预期揽件时间戳,需大于当前时间,收件员会在预期时间附近上门。例如expect_time为“1557989929”,表示希望收件员将在2019年05月16日14:58:49-15:58:49内上门取货。说明:若选择 了预期揽件时间,请不要自己打单,由上门揽件的时候打印。 + *+ */ + @SerializedName("expect_time") + private Long expectTime; + + /** + * 发件人信息 + *
+ * 是否必填: 是 + *+ */ + private WxMaExpressOrderPerson sender; + + /** + * 收件人信息 + *
+ * 是否必填: 是 + *+ */ + private WxMaExpressOrderPerson receiver; + + /** + * 包裹信息 + *
+ * 是否必填: 是 + * 描述: 将传递给快递公司 + *+ */ + private WxMaExpressOrderCargo cargo; + + /** + * 商品信息 + *
+ * 是否必填: 否 + * 描述: 会展示到物流服务通知和电子面单中 + *+ */ + private WxMaExpressOrderShop shop; + + /** + * 保价信息 + *
+ * 是否必填: 是 + *+ */ + private WxMaExpressOrderInsured insured; + + /** + * 服务类型 + *
+ * 是否必填: 是 + *+ */ + private WxMaExpressDelivery.ServiceType service; + + + public String toJson() { + return WxMaGsonBuilder.create().toJson(this); + } +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressBindAccountRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressBindAccountRequest.java new file mode 100644 index 000000000..fe6877fa9 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressBindAccountRequest.java @@ -0,0 +1,73 @@ +package cn.binarywang.wx.miniapp.bean.express.request; + +import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + *
+ * 绑定、解绑物流账号请求对象 + *+ * @author xiaoyu + * @since 2019-11-26 + */ +@Data +@Builder +public class WxMaExpressBindAccountRequest implements Serializable { + + private static final long serialVersionUID = 3868003945297939946L; + + /** + * 类型 + *
+ * 是否必填: 是 + * 描述: bind表示绑定,unbind表示解除绑定 + *+ */ + @SerializedName("type") + private String type; + + /** + * 快递公司客户编码 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("biz_id") + private String bizId; + + /** + * 快递公司ID + *
+ * 是否必填: 是 + *+ */ + @SerializedName("delivery_id") + private String deliveryId; + + /** + * 快递公司客户密码 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("password") + private String password; + + /** + * 备注内容(提交EMS审核需要) + *
+ * 是否必填: 是 + *+ */ + @SerializedName("remark_content") + private String remarkContent; + + public String toJson() { + return WxMaGsonBuilder.create().toJson(this); + } + +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressGetOrderRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressGetOrderRequest.java new file mode 100644 index 000000000..b21de172e --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressGetOrderRequest.java @@ -0,0 +1,63 @@ +package cn.binarywang.wx.miniapp.bean.express.request; + +import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + *
+ * 获取运单请求对象 + *+ * @author xiaoyu + * @since 2019-11-26 + */ +@Data +@Builder +public class WxMaExpressGetOrderRequest implements Serializable { + + private static final long serialVersionUID = 8239315305577639778L; + + /** + * 订单ID + *
+ * 是否必填: 是 + *+ */ + @SerializedName("order_id") + private String orderId; + + /** + * 用户openid + *
+ * 是否必填: 否 + * 描述: 当add_source=2时无需填写(不发送物流服务通知) + *+ */ + private String openid; + + /** + * 快递公司ID + *
+ * 是否必填: 是 + *+ */ + @SerializedName("delivery_id") + private String deliveryId; + + /** + * 运单ID + *
+ * 是否必填: 是 + *+ */ + @SerializedName("waybill_id") + private String waybillId; + + + public String toJson() { + return WxMaGsonBuilder.create().toJson(this); + } +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderCargo.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderCargo.java new file mode 100644 index 000000000..ec2c39709 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderCargo.java @@ -0,0 +1,74 @@ +package cn.binarywang.wx.miniapp.bean.express.request; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 包裹信息对象 + * @author xiaoyu + * @since 2019-11-26 + */ +@Data +public class WxMaExpressOrderCargo implements Serializable { + + private static final long serialVersionUID = 6642536671375396150L; + + /** + * 包裹数量 + *
+ * 是否必填: 是 + * 描述: 需要和detail_list size保持一致 + *+ */ + private Integer count; + /** + * 包裹总重量 + *
+ * 是否必填: 是 + * 描述: 单位是千克(kg) + *+ */ + private Integer weight; + + /** + * 包裹长度 + *
+ * 是否必填: 是 + * 描述: 单位是厘米(cm) + *+ */ + @SerializedName("space_x") + private Integer spaceLength; + + /** + * 包裹宽度 + *
+ * 是否必填: 是 + * 描述: 单位是厘米(cm) + *+ */ + @SerializedName("space_y") + private Integer spaceWidth; + + /** + * 包裹高度 + *
+ * 是否必填: 是 + * 描述: 单位是厘米(cm) + *+ */ + @SerializedName("space_z") + private Integer spaceHeight; + + /** + * 包裹中商品详情列表 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("detail_list") + private List
+ * 是否必填: 是 + * 描述: 不超过128字节 + *+ */ + private String name; + + /** + * 商品数量 + *
+ * 是否必填: 是 + *+ */ + private Integer count; +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderInsured.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderInsured.java new file mode 100644 index 000000000..7a30dacad --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderInsured.java @@ -0,0 +1,43 @@ +package cn.binarywang.wx.miniapp.bean.express.request; + + +import cn.binarywang.wx.miniapp.constant.WxMaConstants; +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * 保价信息对象 + * @author xiaoyu + * @since 2019-11-26 + */ +@Data +@Builder +public class WxMaExpressOrderInsured implements Serializable { + + private static final long serialVersionUID = -8636857630937445422L; + + /** + * 是否保价 + *
+ * 是否必填: 是 + * 描述: 0 表示不保价,1 表示保价 + *+ */ + @SerializedName("use_insured") + private final Integer useInsured = WxMaConstants.OrderAddInsured.INSURED_PROGRAM; + + /** + * 保价金额 + *
+ * 是否必填: 是 + * 描述: 单位是分,比如: 10000 表示 100 元 + *+ */ + @SerializedName("insured_value") + @Builder.Default + private final Integer insuredValue = WxMaConstants.OrderAddInsured.DEFAULT_INSURED_VALUE; + +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderPerson.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderPerson.java new file mode 100644 index 000000000..989380fb4 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderPerson.java @@ -0,0 +1,110 @@ +package cn.binarywang.wx.miniapp.bean.express.request; + + +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 发件人/收件人信息对象 + * @author xiaoyu + * @since 2019-11-26 + */ +@Data +public class WxMaExpressOrderPerson implements Serializable { + + private static final long serialVersionUID = -7816060207882761506L; + + /** + * 发件人/收件人姓名 + *
+ * 是否必填: 是 + * 描述: 不超过64字节 + *+ */ + private String name; + + /** + * 发件人/收件人座机号码 + *
+ * 是否必填: 否 + * 描述: 若不填写则必须填写 mobile,不超过32字节 + *+ */ + private String tel; + + /** + * 发件人/收件人手机号码 + *
+ * 是否必填: 否 + * 描述: 若不填写则必须填写 tel,不超过32字节 + *+ */ + private String mobile; + + /** + * 发件人/收件人公司名 + *
+ * 是否必填: 否 + * 描述: 不超过64字节 + *+ */ + private String company; + + /** + * 发件人/收件人邮编 + *
+ * 是否必填: 否 + * 描述: 不超过10字节 + *+ */ + @SerializedName("post_code") + private String postCode; + + /** + * 发件人/收件人所在国家 + *
+ * 是否必填: 否 + * 描述: 不超过64字节 + *+ */ + private String country; + + /** + * 发件人/收件人省份 + *
+ * 是否必填: 是 + * 描述: 比如:"广东省",不超过64字节 + *+ */ + private String province; + + /** + * 发件人/收件人地区或市 + *
+ * 是否必填: 是 + * 描述: 比如:"广州市",不超过64字节 + *+ */ + private String city; + + /** + * 发件人/收件人区或县 + *
+ * 是否必填: 是 + * 描述: 比如:"天河区",不超过64字节 + *+ */ + private String area; + + /** + * 发件人/收件人详细地址 + *
+ * 是否必填: 是 + * 描述: 比如:"XX路XX号XX大厦XX",不超过512字节 + *+ */ + private String address; + +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderShop.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderShop.java new file mode 100644 index 000000000..9b1e3d884 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressOrderShop.java @@ -0,0 +1,55 @@ +package cn.binarywang.wx.miniapp.bean.express.request; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 商品信息对象 + * @author xiaoyu + * @since 2019-11-26 + */ +@Data +public class WxMaExpressOrderShop implements Serializable { + + private static final long serialVersionUID = 7256509453502211830L; + + /** + * 商家小程序的路径 + *
+ * 是否必填: 是 + * 描述: 建议为订单页面 + *+ */ + @SerializedName("wxa_path") + private String wxaPath; + + /** + * 商品缩略图url + *
+ * 是否必填: 是 + *+ */ + @SerializedName("img_url") + private String imgUrl; + + /** + * 商品名称 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("goods_name") + private String goodsName; + + /** + * 商品数量 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("goods_count") + private Integer goodsCount; + +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressPrinterUpdateRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressPrinterUpdateRequest.java new file mode 100644 index 000000000..a5f9f50db --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressPrinterUpdateRequest.java @@ -0,0 +1,54 @@ +package cn.binarywang.wx.miniapp.bean.express.request; + +import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + *
+ * 配置面单打印员请求对象 + *+ * @author xiaoyu + * @since 2019-11-26 + */ +@Data +@Builder +public class WxMaExpressPrinterUpdateRequest implements Serializable { + + private static final long serialVersionUID = 9119040050963924127L; + + /** + * 打印员 openid + *
+ * 是否必填: 是 + *+ */ + private String openid; + + /** + * 更新类型 + *
+ * 是否必填: 是 + * 描述: bind表示绑定,unbind表示解除绑定 + *+ */ + @SerializedName("update_type") + private String updateType; + + /** + * 打印员面单打印权限 + *
+ * 是否必填: 否 + * 描述: 用于平台型小程序设置入驻方的打印员面单打印权限,同一打印员最多支持10个tagid,使用逗号分隔,如填写123,456,表示该打印员可以拉取到tagid为123和456的下的单,非平台型小程序无需填写该字段 + *+ */ + @SerializedName("tagid_list") + private String tagidList; + + public String toJson() { + return WxMaGsonBuilder.create().toJson(this); + } +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressTestUpdateOrderRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressTestUpdateOrderRequest.java new file mode 100644 index 000000000..e5d4cb448 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressTestUpdateOrderRequest.java @@ -0,0 +1,94 @@ +package cn.binarywang.wx.miniapp.bean.express.request; + +import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + *
+ * 模拟快递公司更新订单状态请求对象 + *+ * @author xiaoyu + * @since 2019-11-26 + */ +@Data +@Builder +public class WxMaExpressTestUpdateOrderRequest implements Serializable { + + private static final long serialVersionUID = -3701602332580704140L; + + /** + * 商户id + *
+ * 是否必填: 是 + * 描述: 需填test_biz_id,默认值已设置 + *+ */ + @SerializedName("biz_id") + @Builder.Default + private final String bizId = "test_biz_id"; + + /** + * 快递公司id + *
+ * 是否必填: 是 + * 描述: 需填TEST,默认值已设置 + *+ */ + @SerializedName("delivery_id") + @Builder.Default + private final String deliveryId = "TEST"; + + /** + * 订单号 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("order_id") + private String orderId; + + /** + * 运单号 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("waybill_id") + private String waybillId; + + /** + * 轨迹变化 Unix 时间戳 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("action_time") + private Long actionTime; + + /** + * 轨迹变化类型 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("action_type") + private Integer actionType; + + /** + * 轨迹变化具体信息说明,使用UTF-8编码 + *
+ * 是否必填: 是 + *+ */ + @SerializedName("action_msg") + private String actionMsg; + + public String toJson() { + return WxMaGsonBuilder.create().toJson(this); + } + +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/result/WxMaExpressOrderInfoResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/result/WxMaExpressOrderInfoResult.java new file mode 100644 index 000000000..01f274fb9 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/result/WxMaExpressOrderInfoResult.java @@ -0,0 +1,70 @@ +package cn.binarywang.wx.miniapp.bean.express.result; + +import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.annotations.SerializedName; +import com.google.gson.reflect.TypeToken; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *
+ * 运单信息返回结果对象 + *+ * @author xiaoyu + * @since 2019-11-26 + */ +@Data +public class WxMaExpressOrderInfoResult implements Serializable { + private static final JsonParser JSON_PARSER = new JsonParser(); + private static final long serialVersionUID = -9166603059965942285L; + + /** + * 错误码 + */ + private Integer errcode; + + /** + * 错误信息 + */ + private String errmsg; + /** + * 订单ID + */ + @SerializedName("order_id") + private String orderId; + + /** + * 运单ID + */ + @SerializedName("waybill_id") + private String waybillId; + + /** + * 运单 html 的 BASE64 结果 + */ + @SerializedName("print_html") + private String printHtml; + + /** + * 运单信息 + */ + @SerializedName("waybill_data") + private List