Browse Source

fixed 微信小程序录入发货信息功能迭代

fushengqian 8 months ago
parent
commit
4d11101350

+ 36 - 0
fuint-application/src/main/java/com/fuint/common/bean/shoppingOrders/ContactBean.java

@@ -0,0 +1,36 @@
+package com.fuint.common.bean.shoppingOrders;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+
+/**
+ * 联系人Bean
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ContactBean implements Serializable {
+
+  private static final long serialVersionUID = 2256209964320569284L;
+
+  /**
+   * 寄件人联系方式,寄件人联系方式,采用掩码传输,最后4位数字不能打掩码 示例值: `189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024
+   */
+  @SerializedName("consignor_contact")
+  private String consignorContact;
+
+  /**
+   * 收件人联系方式,收件人联系方式为,采用掩码传输,最后4位数字不能打掩码 示例值: `189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024
+   */
+  @SerializedName("receiver_contact")
+  private String receiverContact;
+
+}

+ 49 - 0
fuint-application/src/main/java/com/fuint/common/bean/shoppingOrders/OrderKeyBean.java

@@ -0,0 +1,49 @@
+package com.fuint.common.bean.shoppingOrders;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+
+/**
+ * 订单,需要上传物流信息的订单Bean
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class OrderKeyBean implements Serializable {
+
+  private static final long serialVersionUID = 1486092394664728388L;
+
+  /**
+   * 必填
+   * 订单单号类型,用于确认需要上传详情的订单。枚举值1,使用下单商户号和商户侧单号;枚举值2,使用微信支付单号。
+   */
+  @SerializedName("order_number_type")
+  private int orderNumberType;
+
+  /**
+   * 原支付交易对应的微信订单号
+   */
+  @SerializedName("transaction_id")
+  private String transactionId;
+
+  /**
+   * 支付下单商户的商户号,由微信支付生成并下发。
+   */
+  @SerializedName("mchid")
+  private String mchId;
+
+  /**
+   * 商户系统内部订单号,只能是数字、大小写字母`_-*`且在同一个商户号下唯一
+   */
+  @SerializedName("out_trade_no")
+  private String outTradeNo;
+
+}

+ 31 - 0
fuint-application/src/main/java/com/fuint/common/bean/shoppingOrders/PayerBean.java

@@ -0,0 +1,31 @@
+package com.fuint.common.bean.shoppingOrders;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+
+/**
+ * 支付者,支付者信息Bean
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PayerBean implements Serializable {
+
+  private static final long serialVersionUID = -7943088204264205895L;
+
+  /**
+   * 必填
+   * 用户标识,用户在小程序appid下的唯一标识。 下单前需获取到用户的Openid 示例值: oUpF8uMuAJO_M2pxb1Q9zNjWeS6o 字符字节限制: [1, 128]
+   */
+  @SerializedName("openid")
+  private String openid;
+
+}

+ 53 - 0
fuint-application/src/main/java/com/fuint/common/bean/shoppingOrders/ShippingInfo.java

@@ -0,0 +1,53 @@
+package com.fuint.common.bean.shoppingOrders;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 上传发货信息
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ShippingInfo implements Serializable {
+
+  private static final long serialVersionUID = 2105037984591600658L;
+  /**
+   * 必填
+   * 订单,需要上传物流信息的订单
+   */
+  @SerializedName("order_key")
+  private OrderKeyBean orderKey;
+
+
+  /**
+   * 必填
+   * 发货模式,发货模式枚举值:1、UNIFIED_DELIVERY(统一发货)2、SPLIT_DELIVERY(分拆发货)
+   * 示例值: UNIFIED_DELIVERY
+   */
+  @SerializedName("delivery_mode")
+  private int deliveryMode;
+
+  /**
+   * 必填
+   * 物流信息列表,发货物流单列表,支持统一发货(单个物流单)和分拆发货(多个物流单)两种模式,多重性: [1, 10]
+   */
+  @SerializedName("shipping_list")
+  private List<ShippingListBean> shippingList;
+
+  /**
+   * 必填
+   * 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00
+   */
+  @SerializedName("upload_time")
+  private String uploadTime;
+}

+ 64 - 0
fuint-application/src/main/java/com/fuint/common/bean/shoppingOrders/ShippingListBean.java

@@ -0,0 +1,64 @@
+package com.fuint.common.bean.shoppingOrders;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 上传发货信息Bean
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ShippingListBean implements Serializable {
+
+  private static final long serialVersionUID = -6884739637300493109L;
+
+  /**
+   * 物流单号,物流快递发货时必填,示例值: 323244567777 字符字节限制: [1, 128]
+   */
+  @SerializedName("tracking_no")
+  private String trackingNo;
+
+  /**
+   * 物流公司编码,快递公司ID,参见「查询物流公司编码列表」,物流快递发货时必填, 示例值: DHL 字符字节限制: [1, 128]
+   */
+  @SerializedName("express_company")
+  private String expressCompany;
+
+  /**
+   * 物流关联的商品列表,当统一发货(单个物流单)时,该项不填;当分拆发货(多个物流单)时,需填入各物流单关联的商品列表 多重性: [0, 50]
+   */
+  @SerializedName("item_list")
+  private List<ShippingItemListBean> itemList;
+
+  /**
+   * 联系方式,当发货的物流公司为顺丰时,联系方式为必填,收件人或寄件人联系方式二选一
+   */
+  @SerializedName("contact")
+  private ContactBean contact;
+
+  @Data
+  @Builder
+  @NoArgsConstructor
+  @AllArgsConstructor
+  public static class ShippingItemListBean implements Serializable {
+
+    private static final long serialVersionUID = -1433227869321841858L;
+
+    /**
+     * 商户侧商品ID,商户系统内部商品编码,分拆发货模式下为必填,用于标识每笔物流单号内包含的商品,需与「上传购物详情」中传入的商品ID匹配
+     * 示例值: 1246464644 字符字节限制: [1, 64]
+     */
+    @SerializedName("merchant_item_id")
+    private String merchantItemId;
+  }
+}

+ 172 - 0
fuint-application/src/main/java/com/fuint/common/bean/shoppingOrders/ShoppingInfo.java

@@ -0,0 +1,172 @@
+package com.fuint.common.bean.shoppingOrders;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 上传发货信息Bean
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ShoppingInfo implements Serializable {
+
+  private static final long serialVersionUID = 2105037984591600658L;
+
+  /**
+   * 必填
+   * 订单,需要上传物流信息的订单
+   */
+  @SerializedName("order_key")
+  private OrderKeyBean orderKey;
+
+  /**
+   * 购物详情列表
+   */
+  @SerializedName("order_list")
+  private List<OrderListBean> orderList;
+
+  /**
+   * 必填
+   * 支付者,支付者信息
+   */
+  @SerializedName("payer")
+  private PayerBean payer;
+
+  /**
+   * 物流形式,订单商品配送的物流形式,默认为实体物流
+   * 物流模式,发货方式枚举值:1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品,虚拟商品,例如话费充值,点卡等,无实体配送形式 4、用户自提
+   */
+  @SerializedName("logistics_type")
+  private int logisticsType;
+
+  /**
+   * 必填
+   * 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00
+   */
+  @SerializedName("upload_time")
+  private String uploadTime;
+
+  @Data
+  @Builder
+  @NoArgsConstructor
+  @AllArgsConstructor
+  public static class OrderListBean implements Serializable {
+    private static final long serialVersionUID = -7690807867756471672L;
+    /**
+     * 必填
+     * 商户交易订单编号,商户侧的交易订单详情页向用户展示的订单编号
+     * 示例值: 232457563423 字符字节限制: [1, 64]
+     */
+    @SerializedName("merchant_order_no")
+    private String merchantOrderNo;
+
+    /**
+     * 必填
+     * 商户交易订单详情页链接,用户查看“商城订单”时,跳转至商户侧查看交易订单详情页的链接。详情页类别可以为H5或小程序
+     */
+    @SerializedName("order_detail_jump_link")
+    private OrderDetailBean orderDetailJumpLink;
+
+    /**
+     * 订单购买的商品列表,用户在订单中购买的全部商品明细的列表,最多可以上传50个商品
+     * 多重性: [1, 50]
+     */
+    @SerializedName("item_list")
+    private List<OrderItemListBean> itemList;
+  }
+
+  @Data
+  @Builder
+  @NoArgsConstructor
+  @AllArgsConstructor
+  public static class OrderDetailBean implements Serializable {
+    private static final long serialVersionUID = -8002249022516272034L;
+    /**
+     * 链接地址(链接类型为H5时必填)
+     * 示例值: https://www.weixin.qq.com/wxpay/pay.php
+     * 字符字节限制: [1, 1024]
+     * 匹配正则表达式: ^https?😕/([^\s/?#[]@]+@)?([^\s/?#@:]+)(?::\d{2,5})?([^[]]*)$
+     */
+    @SerializedName("url")
+    private String url;
+    /**
+     * 小程序appid(链接类型为MINIAPP时必填)
+     * 示例值: wxd678efh567hg6787 字符字节限制: [1, 32]
+     */
+    @SerializedName("appid")
+    private String appId;
+    /**
+     * 小程序path(链接类型为MINIAPP时必填)
+     * 示例值: /path/index/index 字符字节限制: [1, 512]
+     */
+    @SerializedName("path")
+    private String path;
+    /**
+     * 必填
+     * 链接类型枚举值:1、URL;2、MINI_PROGRAM
+     * 示例值: MINI_PROGRAM
+     */
+    @SerializedName("type")
+    private int type;
+  }
+
+  @Data
+  @Builder
+  @NoArgsConstructor
+  @AllArgsConstructor
+  public static class OrderItemListBean implements Serializable {
+    private static final long serialVersionUID = -2989527770771246748L;
+    /**
+     * 商户侧商品ID,商户系统内部商品编码,用于标识不同的商品。请注意,当发货模式选择“分拆发货”时,需要使用商户侧商品ID来标记各物流单中包含的具体商品
+     * 示例值: 1246464644 字符字节限制: [1, 64]
+     */
+    @SerializedName("merchant_item_id")
+    private String merchantItemId;
+    /**
+     * 必填
+     * 商品名称
+     * 示例值: iPhoneX 256G 字符长度限制: [1, 256]
+     */
+    @SerializedName("name")
+    private String name;
+    /**
+     * 商品描述
+     * 示例值: Image形象店-深圳腾大-QQ公仔 字符长度限制: [1, 512]
+     */
+    @SerializedName("description")
+    private String description;
+    /**
+     * 必填
+     * 商品单价(单位:分)
+     */
+    @SerializedName("unit_price")
+    private long unitPrice;
+    /**
+     * 必填
+     * 购买数量
+     * 示例值: 2
+     */
+    @SerializedName("quantity")
+    private long quantity;
+    /**
+     * 商品图片链接
+     * 示例值: https://qpic.cn/xxx
+     * 多重性: [1, 3]
+     * 字符字节限制: [1, 1024]
+     * 匹配正则表达式: ^https?😕/([^\s/?#[]@]+@)?([^\s/?#@:]+)(?::\d{2,5})?([^[]]*)$
+     */
+    @SerializedName("image_url")
+    private List<String> imageUrl;
+  }
+
+}

+ 9 - 1
fuint-application/src/main/java/com/fuint/common/service/WeixinService.java

@@ -184,4 +184,12 @@ public interface WeixinService {
      * */
      * */
     String createMiniAppLink(Integer merchantId, String path);
     String createMiniAppLink(Integer merchantId, String path);
 
 
-}
+    /**
+     * 上传发货信息
+     *
+     * @param orderSn 订单号
+     * @return
+     */
+    void uploadShippingInfo(String orderSn);
+
+}

+ 15 - 0
fuint-application/src/main/java/com/fuint/common/service/impl/WeixinServiceImpl.java

@@ -999,6 +999,21 @@ public class WeixinServiceImpl implements WeixinService {
         return link;
         return link;
     }
     }
 
 
+    /**
+     * 上传发货信息
+     *
+     * @param orderSn 订单号
+     * @return
+     */
+    @Override
+    public void uploadShippingInfo(String orderSn) {
+        MtOrder order = orderService.getOrderInfoByOrderSn(orderSn);
+        // 是否是微信小程序订单 && 微信支付
+        if (!order.getPlatform().equals(PlatformTypeEnum.MP_WEIXIN.getCode()) || !order.getPayType().equals(PayTypeEnum.JSAPI.name())) {
+            return;
+        }
+    }
+
     /**
     /**
      * 刷卡支付
      * 刷卡支付
      *
      *