一个系统是否完整就看他的整体业务逻辑是否连贯。有了之前的下单之后,我们就需要考虑到用户的退款等相应需求。下面附上用户退款的代码。同理,介于退款与发货之间有时间差,所以一定要对订单进行一个锁的操作。而且因为存在部分退款的情况,所以一定要在退款的时候查询订单的详细信息。
代码中的一些字段,是我本项目中的业务类。所以,代码可以借鉴,但不能完全复制。
public Map<String, String> refund(WxPayRequest wxPayRequest, ToyTradeOrder toyTradeOrder) throws Exception {
prePayLogger.info("--------------------订单:" + toyTradeOrder.getToyTradeOrderId() + " 进入微信退款操作------------------");
prePayLogger.info("--------------------订单:" + toyTradeOrder.getToyTradeOrderId() + " 查询退款情况------------------");
Map<String, String> res = refundQuery(wxPayRequest);
if(res != null){
prePayLogger.info("refund_status_0:" + res.get("refund_status_0"));
prePayLogger.info("refund_id_0:" + res.get("refund_id_0"));
prePayLogger.info("transaction_id:" + res.get("transaction_id"));
if("SUCCESS".equals(res.get("refund_status_0"))){
return null;
}
}
MiniprogramConfig config = new MiniprogramConfig();
WXPay wxpay = new WXPay(config);