8000 face(小程序): 订单接口,新增获取订单列表,生成支付参数接口 by zhongjun96 · Pull Request #2650 · binarywang/WxJava · GitHub
[go: up one dir, main page]

Skip to content

face(小程序): 订单接口,新增获取订单列表,生成支付参数接口 #2650

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

Merged
merged 3 commits into from
May 19, 2022
Merged
Show file tree
Hide file tree
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
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
* 小程序交易组件-订单服务
*
Expand All @@ -21,4 +21,46 @@ public interface WxMaShopOrderService {

WxMaShopGetOrderResponse getOrder(Integer orderId, String outOrderId, String openid)
throws WxErrorException;


/**
* <pre>
*
* 获取订单列表
*
* 请求方式:POST(HTTPS)
* 请求地址:<a href="https://api.weixin.qq.com/shop/order/get_list">请求地址</a>
*
* 文档地址:<a href="https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/order/get_order_list.html">文档地址</a>
* </pre>
*
* @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;

/**
* <pre>
*
* 生成支付参数
*
* 请求方式:POST(HTTPS)
* 请求地址:<a href="https://api.weixin.qq.com/shop/order/getpaymentparams">请求地址</a>
*
* 文档地址:<a href="https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/order/getpaymentparams.html">文档地址</a>
* </pre>
*
* @param orderId 微信侧订单id
* @param outOrderId 商家自定义订单ID
* @param openid 用户openid
* @return 支付参数
* @throws WxErrorException .
*/
WxMaShopGetPaymentParamsResponse getPaymentParams(String orderId, String outOrderId, String openid) throws WxErrorException;
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -21,13 +14,22 @@
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
*/
@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;
Expand All @@ -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> T post(String url, Object params, Class<T> 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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
public class WxMaShopOrderDetail implements Serializable {
private static final long serialVersionUID = 3325843289672341160L;

/**
* 推广员、分享员信息
*/
@SerializedName("promotion_info")
private WxMaShopPromotionInfo promotionInfo;

/**
* 下单商品信息
* <pre>
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
0