diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaShopOrderService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaShopOrderService.java index 50b39fb6ed..2cfce36f32 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaShopOrderService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaShopOrderService.java @@ -2,11 +2,11 @@ import cn.binarywang.wx.miniapp.bean.shop.WxMaShopOrderInfo; import cn.binarywang.wx.miniapp.bean.shop.request.WxMaShopOrderPayRequest; -import cn.binarywang.wx.miniapp.bean.shop.response.WxMaShopAddOrderResponse; -import cn.binarywang.wx.miniapp.bean.shop.response.WxMaShopBaseResponse; -import cn.binarywang.wx.miniapp.bean.shop.response.WxMaShopGetOrderResponse; +import cn.binarywang.wx.miniapp.bean.shop.response.*; import me.chanjar.weixin.common.error.WxErrorException; +import java.util.Date; + /** * 小程序交易组件-订单服务 * @@ -21,4 +21,46 @@ public interface WxMaShopOrderService { WxMaShopGetOrderResponse getOrder(Integer orderId, String outOrderId, String openid) throws WxErrorException; + + + /** + *
+   *
+   * 获取订单列表
+   *
+   * 请求方式:POST(HTTPS)
+   * 请求地址:请求地址
+   *
+   * 文档地址:文档地址
+   * 
+ * + * @param page 第x页,大于等于1 + * @param pageSize 每页订单数,上限100 + * @param desc 是否时间倒叙 + * @param startCreateTime 起始创建时间 + * @param endCreateTime 最终创建时间 + * @return 订单列表信息 + * @throws WxErrorException . + */ + WxMaShopGetOrderListResponse getOrderList(Integer page, Integer pageSize, Boolean desc, Date startCreateTime, Date endCreateTime) + throws WxErrorException; + + /** + *
+   *
+   * 生成支付参数
+   *
+   * 请求方式:POST(HTTPS)
+   * 请求地址:请求地址
+   *
+   * 文档地址:文档地址
+   * 
+ * + * @param orderId 微信侧订单id + * @param outOrderId 商家自定义订单ID + * @param openid 用户openid + * @return 支付参数 + * @throws WxErrorException . + */ + WxMaShopGetPaymentParamsResponse getPaymentParams(String orderId, String outOrderId, String openid) throws WxErrorException; } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaShopOrderServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaShopOrderServiceImpl.java index ff466ded63..33e733021a 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaShopOrderServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaShopOrderServiceImpl.java @@ -1,17 +1,10 @@ package cn.binarywang.wx.miniapp.api.impl; -import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Shop.Order.ORDER_ADD; -import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Shop.Order.ORDER_CHECK_SCENE; -import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Shop.Order.ORDER_GET; -import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Shop.Order.ORDER_PAY; - import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaShopOrderService; import cn.binarywang.wx.miniapp.bean.shop.WxMaShopOrderInfo; import cn.binarywang.wx.miniapp.bean.shop.request.WxMaShopOrderPayRequest; -import cn.binarywang.wx.miniapp.bean.shop.response.WxMaShopAddOrderResponse; -import cn.binarywang.wx.miniapp.bean.shop.response.WxMaShopBaseResponse; -import cn.binarywang.wx.miniapp.bean.shop.response.WxMaShopGetOrderResponse; +import cn.binarywang.wx.miniapp.bean.shop.response.*; import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; @@ -21,6 +14,12 @@ import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.util.json.GsonHelper; import me.chanjar.weixin.common.util.json.GsonParser; +import org.apache.commons.lang3.time.FastDateFormat; + +import java.text.Format; +import java.util.Date; + +import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Shop.Order.*; /** * @author boris @@ -28,6 +27,9 @@ @RequiredArgsConstructor @Slf4j public class WxMaShopOrderServiceImpl implements WxMaShopOrderService { + + private final Format dateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss"); + private static final String ERR_CODE = "errcode"; private static final String MATCH_KEY = "is_matched"; private final WxMaService wxMaService; @@ -45,34 +47,49 @@ public Boolean checkScene(Integer scene) throws WxErrorException { @Override public WxMaShopAddOrderResponse addOrder(WxMaShopOrderInfo orderInfo) throws WxErrorException { - String responseContent = this.wxMaService.post(ORDER_ADD, orderInfo); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get(ERR_CODE).getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return WxMaGsonBuilder.create().fromJson(responseContent, WxMaShopAddOrderResponse.class); + return this.post(ORDER_ADD,orderInfo, WxMaShopAddOrderResponse.class); } @Override public WxMaShopBaseResponse orderPay(WxMaShopOrderPayRequest request) throws WxErrorException { - String responseContent = this.wxMaService.post(ORDER_PAY, request); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get(ERR_CODE).getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + return this.post(ORDER_PAY,request, WxMaShopBaseResponse.class); + } + + @Override + public WxMaShopGetOrderResponse getOrder(Integer orderId, String outOrderId, String openid) throws WxErrorException { + return this.post(ORDER_GET, GsonHelper.buildJsonObject("order_id", orderId, "out_order_id", outOrderId, + "openid", openid), WxMaShopGetOrderResponse.class); + } + + @Override + public WxMaShopGetOrderListResponse getOrderList(Integer page, Integer pageSize, Boolean desc, Date startCreateTime, Date endCreateTime) throws WxErrorException { + JsonObject object = new JsonObject(); + object.addProperty("page", page == null ? 1 : page); + object.addProperty("page_size", pageSize == null ? 10 : pageSize); + object.addProperty("desc", desc ? 1 : 2); + if (startCreateTime != null) { + object.addProperty("start_create_time", this.dateFormat.format(startCreateTime)); + } + if (endCreateTime != null) { + object.addProperty("end_create_time", this.dateFormat.format(endCreateTime)); } - return WxMaGsonBuilder.create().fromJson(responseContent, WxMaShopBaseResponse.class); + return this.post(ORDER_GET_LIST, object, WxMaShopGetOrderListResponse.class); } @Override - public WxMaShopGetOrderResponse getOrder(Integer orderId, String outOrderId, String openid) - throws WxErrorException { - String responseContent = this.wxMaService.post(ORDER_GET, + public WxMaShopGetPaymentParamsResponse getPaymentParams(String orderId, String outOrderId, String openid) throws WxErrorException { + return this.post(ORDER_GET_PAYMENT_PARAMS, GsonHelper.buildJsonObject("order_id", orderId, "out_order_id", outOrderId, - "openid", openid)); + "openid", openid), WxMaShopGetPaymentParamsResponse.class); + } + + + private T post(String url, Object params, Class classOfT) throws WxErrorException { + String responseContent = this.wxMaService.post(url, params); JsonObject jsonObject = GsonParser.parse(responseContent); if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } - return WxMaGsonBuilder.create().fromJson(responseContent, WxMaShopGetOrderResponse.class); + return WxMaGsonBuilder.create().fromJson(responseContent, classOfT); } } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/WxMaShopOrderDetail.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/WxMaShopOrderDetail.java index 661fa3208a..c3cc219d2f 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/WxMaShopOrderDetail.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/WxMaShopOrderDetail.java @@ -14,6 +14,12 @@ public class WxMaShopOrderDetail implements Serializable { private static final long serialVersionUID = 3325843289672341160L; + /** + * 推广员、分享员信息 + */ + @SerializedName("promotion_info") + private WxMaShopPromotionInfo promotionInfo; + /** * 下单商品信息 *
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/WxMaShopPromotionInfo.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/WxMaShopPromotionInfo.java
new file mode 100644
index 0000000000..b5c263ad19
--- /dev/null
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/WxMaShopPromotionInfo.java
@@ -0,0 +1,39 @@
+package cn.binarywang.wx.miniapp.bean.shop;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 推广员、分享员信息
+ *
+ * @author zhongjun
+ * @date 2022/5/17
+ **/
+@Data
+public class WxMaShopPromotionInfo implements Serializable {
+  private static final long serialVersionUID = -812058443344709898L;
+  /**
+   * 推广员唯一ID
+   */
+  @SerializedName("promoter_id")
+  private String promoterId;
+
+  /**
+   * 推广员视频号昵称
+   */
+  @SerializedName("finder_nickname")
+  private String finderNickname;
+  /**
+   * 推广员openid
+   */
+  @SerializedName("promoter_openid")
+  private String promoterOpenid;
+
+  /**
+   * 分享员openid
+   */
+  @SerializedName("sharer_openid")
+  private String sharerOpenid;
+}
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/response/WxMaShopGetOrderListResponse.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/response/WxMaShopGetOrderListResponse.java
new file mode 100644
index 0000000000..0596843396
--- /dev/null
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/response/WxMaShopGetOrderListResponse.java
@@ -0,0 +1,30 @@
+package cn.binarywang.wx.miniapp.bean.shop.response;
+
+import cn.binarywang.wx.miniapp.bean.shop.WxMaShopOrderResult;
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * @author leiin
+ * @date 2021/3/23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WxMaShopGetOrderListResponse extends WxMaShopBaseResponse implements Serializable {
+  private static final long serialVersionUID = -81207907908726897L;
+
+  /**
+   * 订单满足条件的总数
+   */
+  @SerializedName("total_num")
+  private Integer totalNum;
+
+  /**
+   * 订单列表
+   */
+  @SerializedName("order")
+  private WxMaShopOrderResult order;
+}
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/response/WxMaShopGetPaymentParamsResponse.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/response/WxMaShopGetPaymentParamsResponse.java
new file mode 100644
index 0000000000..fc1bc4767d
--- /dev/null
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/shop/response/WxMaShopGetPaymentParamsResponse.java
@@ -0,0 +1,41 @@
+package cn.binarywang.wx.miniapp.bean.shop.response;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * 生成支付参数响应
+ *
+ * @author zhongjun
+ * @date 2022/5/17
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WxMaShopGetPaymentParamsResponse extends WxMaShopBaseResponse implements Serializable {
+  private static final long serialVersionUID = -8796836131438585559L;
+
+  @SerializedName("payment_params")
+  private PaymentParams paymentParams;
+
+  @Getter
+  @Setter
+  public static class PaymentParams {
+
+    private String timeStamp;
+
+    private String nonceStr;
+
+    @SerializedName("package")
+    private String packageValue;
+
+    private String signType;
+
+    private String paySign;
+  }
+
+}
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java
index 0124943b68..132ee8927f 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java
@@ -418,6 +418,8 @@ interface Order {
       String ORDER_ADD = "https://api.weixin.qq.com/shop/order/add";
       String ORDER_PAY = "https://api.weixin.qq.com/shop/order/pay";
       String ORDER_GET = "https://api.weixin.qq.com/shop/order/get";
+      String ORDER_GET_LIST = "https://api.weixin.qq.com/shop/order/get_list";
+      String ORDER_GET_PAYMENT_PARAMS = "https://api.weixin.qq.com/shop/order/getpaymentparams";
     }
 
     interface Register {