企业付款退款等重写

This commit is contained in:
hupeng
2020-03-01 21:09:59 +08:00
parent 3afc837079
commit c387151c74
7 changed files with 311 additions and 205 deletions

View File

@ -1,128 +1,128 @@
package co.yixiang.modules.order.service; //package co.yixiang.modules.order.service;
//
import cn.hutool.core.util.StrUtil; //import cn.hutool.core.util.StrUtil;
import co.yixiang.exception.ErrorRequestException; //import co.yixiang.exception.ErrorRequestException;
import co.yixiang.modules.shop.service.YxSystemConfigService; //import co.yixiang.modules.shop.service.YxSystemConfigService;
import co.yixiang.mp.config.WxPayConfiguration; //import co.yixiang.mp.config.WxPayConfiguration;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; //import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult; //import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult;
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest; //import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; //import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.exception.WxPayException; //import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService; //import com.github.binarywang.wxpay.service.WxPayService;
import org.springframework.beans.factory.annotation.Autowired; //import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service; //import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
import java.math.BigDecimal; //
//import java.math.BigDecimal;
/** //
* @ClassName YxPayService ///**
* @Author hupeng <610796224@qq.com> // * @ClassName YxPayService
* @Date 2020/3/1 // * @Author hupeng <610796224@qq.com>
**/ // * @Date 2020/3/1
@Service // **/
public class YxPayService { //@Service
@Autowired //public class YxPayService {
private YxSystemConfigService systemConfigService; //
// @Autowired
// private YxSystemConfigService systemConfigService;
/** //
* 微信公众号支付/小程序支付 //
* // /**
* @param orderId // * 微信公众号支付/小程序支付
* @param openId 公众号/小程序openid // *
* @param body // * @param orderId
* @param totalFee // * @param openId 公众号/小程序openid
* @return // * @param body
* @throws WxPayException // * @param totalFee
*/ // * @return
public WxPayMpOrderResult wxPay(String orderId, String openId, String body, // * @throws WxPayException
Integer totalFee,int type) throws WxPayException { // */
// public WxPayMpOrderResult wxPay(String orderId, String openId, String body,
String apiUrl = systemConfigService.getData("api_url"); // Integer totalFee,int type) throws WxPayException {
if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址"); //
// String apiUrl = systemConfigService.getData("api_url");
WxPayService wxPayService = WxPayConfiguration.getPayService(); // if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址");
WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); //
// WxPayService wxPayService = WxPayConfiguration.getPayService();
orderRequest.setTradeType("JSAPI"); // WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
orderRequest.setOpenid(openId); //
orderRequest.setBody(body); // orderRequest.setTradeType("JSAPI");
orderRequest.setOutTradeNo(orderId); // orderRequest.setOpenid(openId);
orderRequest.setTotalFee(totalFee); // orderRequest.setBody(body);
orderRequest.setSpbillCreateIp("127.0.0.1"); // orderRequest.setOutTradeNo(orderId);
if(type == 2){ // orderRequest.setTotalFee(totalFee);
orderRequest.setNotifyUrl(apiUrl + "/api/wechat/renotify"); // orderRequest.setSpbillCreateIp("127.0.0.1");
}else{ // if(type == 2){
orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify"); // orderRequest.setNotifyUrl(apiUrl + "/api/wechat/renotify");
} // }else{
// orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify");
// }
WxPayMpOrderResult orderResult = wxPayService.createOrder(orderRequest); //
//
return orderResult; // WxPayMpOrderResult orderResult = wxPayService.createOrder(orderRequest);
//
} // return orderResult;
//
; // }
//
//
/** // /**
* 微信H5支付 // * 微信H5支付
* // *
* @param orderId // * @param orderId
* @param body // * @param body
* @param totalFee // * @param totalFee
* @return // * @return
* @throws WxPayException // * @throws WxPayException
*/ // */
public WxPayMwebOrderResult wxH5Pay(String orderId, String body, // public WxPayMwebOrderResult wxH5Pay(String orderId, String body,
Integer totalFee,int type) throws WxPayException { // Integer totalFee,int type) throws WxPayException {
//
String apiUrl = systemConfigService.getData("api_url"); // String apiUrl = systemConfigService.getData("api_url");
if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址"); // if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址");
//
WxPayService wxPayService = WxPayConfiguration.getPayService(); // WxPayService wxPayService = WxPayConfiguration.getPayService();
WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); // WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
//
orderRequest.setTradeType("MWEB"); // orderRequest.setTradeType("MWEB");
orderRequest.setBody(body); // orderRequest.setBody(body);
orderRequest.setOutTradeNo(orderId); // orderRequest.setOutTradeNo(orderId);
orderRequest.setTotalFee(totalFee); // orderRequest.setTotalFee(totalFee);
orderRequest.setSpbillCreateIp("127.0.0.1"); // orderRequest.setSpbillCreateIp("127.0.0.1");
if(type == 2){ // if(type == 2){
orderRequest.setNotifyUrl(apiUrl + "/api/wechat/renotify"); // orderRequest.setNotifyUrl(apiUrl + "/api/wechat/renotify");
}else{ // }else{
orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify"); // orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify");
} // }
//
WxPayMwebOrderResult orderResult = wxPayService.createOrder(orderRequest); // WxPayMwebOrderResult orderResult = wxPayService.createOrder(orderRequest);
//
return orderResult; // return orderResult;
//
} // }
//
//
/** // /**
* 退款 // * 退款
* @param orderId // * @param orderId
* @param totalFee // * @param totalFee
* @throws WxPayException // * @throws WxPayException
*/ // */
public void refundOrder(String orderId, Integer totalFee) throws WxPayException { // public void refundOrder(String orderId, Integer totalFee) throws WxPayException {
String apiUrl = systemConfigService.getData("api_url"); // String apiUrl = systemConfigService.getData("api_url");
if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址"); // if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址");
//
WxPayService wxPayService = WxPayConfiguration.getPayService(); // WxPayService wxPayService = WxPayConfiguration.getPayService();
WxPayRefundRequest wxPayRefundRequest = new WxPayRefundRequest(); // WxPayRefundRequest wxPayRefundRequest = new WxPayRefundRequest();
//
wxPayRefundRequest.setTotalFee(totalFee);//订单总金额 // wxPayRefundRequest.setTotalFee(totalFee);//订单总金额
wxPayRefundRequest.setOutTradeNo(orderId); // wxPayRefundRequest.setOutTradeNo(orderId);
wxPayRefundRequest.setOutRefundNo(orderId); // wxPayRefundRequest.setOutRefundNo(orderId);
wxPayRefundRequest.setRefundFee(totalFee);//退款金额 // wxPayRefundRequest.setRefundFee(totalFee);//退款金额
wxPayRefundRequest.setNotifyUrl(apiUrl + "/api/notify/refund"); // wxPayRefundRequest.setNotifyUrl(apiUrl + "/api/notify/refund");
//
wxPayService.refund(wxPayRefundRequest); // wxPayService.refund(wxPayRefundRequest);
} // }
//
} //}

View File

@ -13,10 +13,9 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
//import co.yixiang.common.rocketmq.MqProducer;
import co.yixiang.constant.ShopConstants;
import co.yixiang.common.service.impl.BaseServiceImpl; import co.yixiang.common.service.impl.BaseServiceImpl;
import co.yixiang.common.web.vo.Paging; import co.yixiang.common.web.vo.Paging;
import co.yixiang.constant.ShopConstants;
import co.yixiang.domain.AlipayConfig; import co.yixiang.domain.AlipayConfig;
import co.yixiang.domain.vo.TradeVo; import co.yixiang.domain.vo.TradeVo;
import co.yixiang.enums.BillEnum; import co.yixiang.enums.BillEnum;
@ -36,7 +35,6 @@ import co.yixiang.modules.order.entity.YxStoreOrder;
import co.yixiang.modules.order.entity.YxStoreOrderCartInfo; import co.yixiang.modules.order.entity.YxStoreOrderCartInfo;
import co.yixiang.modules.order.mapper.YxStoreOrderMapper; import co.yixiang.modules.order.mapper.YxStoreOrderMapper;
import co.yixiang.modules.order.mapping.OrderMap; import co.yixiang.modules.order.mapping.OrderMap;
import co.yixiang.modules.order.service.YxPayService;
import co.yixiang.modules.order.service.YxStoreOrderCartInfoService; import co.yixiang.modules.order.service.YxStoreOrderCartInfoService;
import co.yixiang.modules.order.service.YxStoreOrderService; import co.yixiang.modules.order.service.YxStoreOrderService;
import co.yixiang.modules.order.service.YxStoreOrderStatusService; import co.yixiang.modules.order.service.YxStoreOrderStatusService;
@ -66,8 +64,8 @@ import co.yixiang.modules.user.web.vo.YxUserQueryVo;
import co.yixiang.modules.user.web.vo.YxWechatUserQueryVo; import co.yixiang.modules.user.web.vo.YxWechatUserQueryVo;
import co.yixiang.modules.wechat.entity.YxWechatTemplate; import co.yixiang.modules.wechat.entity.YxWechatTemplate;
import co.yixiang.modules.wechat.service.YxWechatTemplateService; import co.yixiang.modules.wechat.service.YxWechatTemplateService;
import co.yixiang.mp.config.WxPayConfiguration;
import co.yixiang.mp.service.WxMpTemplateMessageService; import co.yixiang.mp.service.WxMpTemplateMessageService;
import co.yixiang.mp.service.YxPayService;
import co.yixiang.service.AlipayService; import co.yixiang.service.AlipayService;
import co.yixiang.utils.OrderUtil; import co.yixiang.utils.OrderUtil;
import co.yixiang.utils.RedisUtil; import co.yixiang.utils.RedisUtil;
@ -79,11 +77,7 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult; import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult;
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
@ -95,6 +89,9 @@ import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
//import co.yixiang.common.rocketmq.MqProducer;
;
/** /**
* <p> * <p>

View File

@ -15,7 +15,6 @@ import cn.hutool.core.util.StrUtil;
import co.yixiang.common.api.ApiResult; import co.yixiang.common.api.ApiResult;
import co.yixiang.common.web.controller.BaseController; import co.yixiang.common.web.controller.BaseController;
import co.yixiang.exception.ErrorRequestException; import co.yixiang.exception.ErrorRequestException;
import co.yixiang.modules.order.service.YxPayService;
import co.yixiang.modules.shop.service.YxSystemConfigService; import co.yixiang.modules.shop.service.YxSystemConfigService;
import co.yixiang.modules.user.entity.YxUser; import co.yixiang.modules.user.entity.YxUser;
import co.yixiang.modules.user.entity.YxWechatUser; import co.yixiang.modules.user.entity.YxWechatUser;
@ -23,6 +22,7 @@ import co.yixiang.modules.user.service.YxUserRechargeService;
import co.yixiang.modules.user.service.YxUserService; import co.yixiang.modules.user.service.YxUserService;
import co.yixiang.modules.user.service.YxWechatUserService; import co.yixiang.modules.user.service.YxWechatUserService;
import co.yixiang.modules.user.web.param.RechargeParam; import co.yixiang.modules.user.web.param.RechargeParam;
import co.yixiang.mp.service.YxPayService;
import co.yixiang.utils.SecurityUtils; import co.yixiang.utils.SecurityUtils;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult; import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult;

View File

@ -0,0 +1,154 @@
package co.yixiang.mp.service;
import cn.hutool.core.util.StrUtil;
import co.yixiang.exception.BadRequestException;
import co.yixiang.exception.ErrorRequestException;
import co.yixiang.mp.config.WxPayConfiguration;
import co.yixiang.mp.handler.RedisHandler;
import com.github.binarywang.wxpay.bean.entpay.EntPayRequest;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult;
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
/**
* @ClassName YxPayService
* @Author hupeng <610796224@qq.com>
* @Date 2020/3/1
**/
@Service
@AllArgsConstructor
public class YxPayService {
private final RedisHandler redisHandler;
/**
* 微信公众号支付/小程序支付
*
* @param orderId
* @param openId 公众号/小程序openid
* @param body
* @param totalFee
* @return
* @throws WxPayException
*/
public WxPayMpOrderResult wxPay(String orderId, String openId, String body,
Integer totalFee,int type) throws WxPayException {
String apiUrl = redisHandler.getVal("api_url");
if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址");
WxPayService wxPayService = WxPayConfiguration.getPayService();
WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
orderRequest.setTradeType("JSAPI");
orderRequest.setOpenid(openId);
orderRequest.setBody(body);
orderRequest.setOutTradeNo(orderId);
orderRequest.setTotalFee(totalFee);
orderRequest.setSpbillCreateIp("127.0.0.1");
if(type == 2){
orderRequest.setNotifyUrl(apiUrl + "/api/wechat/renotify");
}else{
orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify");
}
WxPayMpOrderResult orderResult = wxPayService.createOrder(orderRequest);
return orderResult;
}
/**
* 微信H5支付
*
* @param orderId
* @param body
* @param totalFee
* @return
* @throws WxPayException
*/
public WxPayMwebOrderResult wxH5Pay(String orderId, String body,
Integer totalFee,int type) throws WxPayException {
String apiUrl = redisHandler.getVal("api_url");
if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址");
WxPayService wxPayService = WxPayConfiguration.getPayService();
WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
orderRequest.setTradeType("MWEB");
orderRequest.setBody(body);
orderRequest.setOutTradeNo(orderId);
orderRequest.setTotalFee(totalFee);
orderRequest.setSpbillCreateIp("127.0.0.1");
if(type == 2){
orderRequest.setNotifyUrl(apiUrl + "/api/wechat/renotify");
}else{
orderRequest.setNotifyUrl(apiUrl + "/api/wechat/notify");
}
WxPayMwebOrderResult orderResult = wxPayService.createOrder(orderRequest);
return orderResult;
}
/**
* 退款
* @param orderId
* @param totalFee
* @throws WxPayException
*/
public void refundOrder(String orderId, Integer totalFee) throws WxPayException {
String apiUrl = redisHandler.getVal("api_url");
if (StrUtil.isBlank(apiUrl)) throw new ErrorRequestException("请配置api地址");
WxPayService wxPayService = WxPayConfiguration.getPayService();
WxPayRefundRequest wxPayRefundRequest = new WxPayRefundRequest();
wxPayRefundRequest.setTotalFee(totalFee);//订单总金额
wxPayRefundRequest.setOutTradeNo(orderId);
wxPayRefundRequest.setOutRefundNo(orderId);
wxPayRefundRequest.setRefundFee(totalFee);//退款金额
wxPayRefundRequest.setNotifyUrl(apiUrl + "/api/notify/refund");
wxPayService.refund(wxPayRefundRequest);
}
/**
* 企业打款
* @param openid
* @param no
* @param userName
* @param amount
* @throws WxPayException
*/
public void entPay(String openid,String no,String userName,Integer amount) throws WxPayException{
WxPayService wxPayService = WxPayConfiguration.getPayService();
EntPayRequest entPayRequest = new EntPayRequest();
entPayRequest.setOpenid(openid);
entPayRequest.setPartnerTradeNo(no);
entPayRequest.setCheckName("FORCE_CHECK");
entPayRequest.setReUserName(userName);
entPayRequest.setAmount(amount);
entPayRequest.setDescription("提现");
entPayRequest.setSpbillCreateIp("127.0.0.1");
wxPayService.getEntPayService().entPay(entPayRequest);
}
}

View File

@ -14,8 +14,9 @@ import co.yixiang.modules.shop.service.YxUserService;
import co.yixiang.modules.shop.service.YxWechatUserService; import co.yixiang.modules.shop.service.YxWechatUserService;
import co.yixiang.modules.shop.service.dto.YxUserDTO; import co.yixiang.modules.shop.service.dto.YxUserDTO;
import co.yixiang.modules.shop.service.dto.YxWechatUserDTO; import co.yixiang.modules.shop.service.dto.YxWechatUserDTO;
import co.yixiang.mp.config.WxPayConfiguration;
import co.yixiang.mp.service.YxPayService;
import co.yixiang.utils.OrderUtil; import co.yixiang.utils.OrderUtil;
import co.yixiang.utils.RedisUtil;
import com.github.binarywang.wxpay.bean.entpay.EntPayRequest; import com.github.binarywang.wxpay.bean.entpay.EntPayRequest;
import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService; import com.github.binarywang.wxpay.service.WxPayService;
@ -42,17 +43,17 @@ public class UserExtractController {
private final YxUserExtractService yxUserExtractService; private final YxUserExtractService yxUserExtractService;
private final YxUserService yxUserService; private final YxUserService yxUserService;
private final YxUserBillService yxUserBillService; private final YxUserBillService yxUserBillService;
private final WxPayService wxPayService;
private final YxWechatUserService wechatUserService; private final YxWechatUserService wechatUserService;
private final YxPayService payService;
public UserExtractController(YxUserExtractService yxUserExtractService, YxUserService yxUserService, public UserExtractController(YxUserExtractService yxUserExtractService,YxUserService yxUserService,
YxUserBillService yxUserBillService, WxPayService wxPayService, YxUserBillService yxUserBillService,YxWechatUserService wechatUserService,
YxWechatUserService wechatUserService) { YxPayService payService) {
this.yxUserExtractService = yxUserExtractService; this.yxUserExtractService = yxUserExtractService;
this.yxUserService = yxUserService; this.yxUserService = yxUserService;
this.yxUserBillService = yxUserBillService; this.yxUserBillService = yxUserBillService;
this.wxPayService = wxPayService;
this.wechatUserService = wechatUserService; this.wechatUserService = wechatUserService;
this.payService = payService;
} }
@Log("查询") @Log("查询")
@ -110,27 +111,10 @@ public class UserExtractController {
if(!isTest){ if(!isTest){
YxWechatUserDTO wechatUser = wechatUserService.findById(resources.getUid()); YxWechatUserDTO wechatUser = wechatUserService.findById(resources.getUid());
if(ObjectUtil.isNotNull(wechatUser)){ if(ObjectUtil.isNotNull(wechatUser)){
String apiUrl = RedisUtil.get("api_url");
if(StrUtil.isBlank(apiUrl)) throw new BadRequestException("请配置api地址");
//读取redis配置
String appId = RedisUtil.get("wxpay_appId");
String mchId = RedisUtil.get("wxpay_mchId");
if(StrUtil.isBlank(appId) || StrUtil.isBlank(mchId)){
throw new BadRequestException("请配置微信支付");
}
EntPayRequest entPayRequest = new EntPayRequest();
try { try {
entPayRequest.setAppid(appId); payService.entPay(wechatUser.getOpenid(),resources.getId().toString(),
entPayRequest.setMchId(mchId); resources.getRealName(),
entPayRequest.setOpenid(wechatUser.getOpenid()); resources.getExtractPrice().multiply(new BigDecimal(100)).intValue());
entPayRequest.setPartnerTradeNo(resources.getId().toString());
entPayRequest.setCheckName("FORCE_CHECK");
entPayRequest.setReUserName(resources.getRealName());
entPayRequest.setAmount(resources.getExtractPrice()
.multiply(new BigDecimal(100)).intValue());
entPayRequest.setDescription("佣金提现");
entPayRequest.setSpbillCreateIp("127.0.0.1");
wxPayService.getEntPayService().entPay(entPayRequest);
} catch (WxPayException e) { } catch (WxPayException e) {
throw new BadRequestException(e.getMessage()); throw new BadRequestException(e.getMessage());
} }

View File

@ -3,7 +3,6 @@ package co.yixiang.modules.shop.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import co.yixiang.exception.BadRequestException; import co.yixiang.exception.BadRequestException;
import co.yixiang.exception.EntityExistException; import co.yixiang.exception.EntityExistException;
import co.yixiang.modules.activity.domain.YxStorePink; import co.yixiang.modules.activity.domain.YxStorePink;
@ -21,15 +20,12 @@ import co.yixiang.modules.shop.service.YxUserBillService;
import co.yixiang.modules.shop.service.YxUserService; import co.yixiang.modules.shop.service.YxUserService;
import co.yixiang.modules.shop.service.dto.*; import co.yixiang.modules.shop.service.dto.*;
import co.yixiang.modules.shop.service.mapper.YxStoreOrderMapper; import co.yixiang.modules.shop.service.mapper.YxStoreOrderMapper;
import co.yixiang.mp.service.YxPayService;
import co.yixiang.utils.OrderUtil; import co.yixiang.utils.OrderUtil;
import co.yixiang.utils.QueryHelp; import co.yixiang.utils.QueryHelp;
import co.yixiang.utils.RedisUtil;
import co.yixiang.utils.ValidationUtil; import co.yixiang.utils.ValidationUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -59,11 +55,12 @@ public class YxStoreOrderServiceImpl implements YxStoreOrderService {
private final YxUserBillService yxUserBillService; private final YxUserBillService yxUserBillService;
private final YxStoreOrderStatusService yxStoreOrderStatusService; private final YxStoreOrderStatusService yxStoreOrderStatusService;
private final YxUserService userService; private final YxUserService userService;
private final WxPayService wxPayService; private final YxPayService payService;
public YxStoreOrderServiceImpl(YxStoreOrderRepository yxStoreOrderRepository, YxStoreOrderCartInfoRepository yxStoreOrderCartInfoRepository, YxUserRepository userRepository, public YxStoreOrderServiceImpl(YxStoreOrderRepository yxStoreOrderRepository, YxStoreOrderCartInfoRepository yxStoreOrderCartInfoRepository, YxUserRepository userRepository,
YxStorePinkRepository storePinkRepository, YxStoreOrderMapper yxStoreOrderMapper, YxUserBillService yxUserBillService, YxStorePinkRepository storePinkRepository, YxStoreOrderMapper yxStoreOrderMapper, YxUserBillService yxUserBillService,
YxStoreOrderStatusService yxStoreOrderStatusService, YxUserService userService, WxPayService wxPayService) { YxStoreOrderStatusService yxStoreOrderStatusService,
YxUserService userService, YxPayService payService) {
this.yxStoreOrderRepository = yxStoreOrderRepository; this.yxStoreOrderRepository = yxStoreOrderRepository;
this.yxStoreOrderCartInfoRepository = yxStoreOrderCartInfoRepository; this.yxStoreOrderCartInfoRepository = yxStoreOrderCartInfoRepository;
this.userRepository = userRepository; this.userRepository = userRepository;
@ -72,7 +69,7 @@ public class YxStoreOrderServiceImpl implements YxStoreOrderService {
this.yxUserBillService = yxUserBillService; this.yxUserBillService = yxUserBillService;
this.yxStoreOrderStatusService = yxStoreOrderStatusService; this.yxStoreOrderStatusService = yxStoreOrderStatusService;
this.userService = userService; this.userService = userService;
this.wxPayService = wxPayService; this.payService = payService;
} }
@Override @Override
@ -155,40 +152,14 @@ public class YxStoreOrderServiceImpl implements YxStoreOrderService {
yxStoreOrderStatusService.create(storeOrderStatus); yxStoreOrderStatusService.create(storeOrderStatus);
}else{ }else{
String apiUrl = RedisUtil.get("api_url");
if(StrUtil.isBlank(apiUrl)) throw new BadRequestException("请配置api地址");
//读取redis配置
String appId = RedisUtil.get("wxpay_appId");
String mchId = RedisUtil.get("wxpay_mchId");
String mchKey = RedisUtil.get("wxpay_mchKey");
String keyPath = RedisUtil.get("wxpay_keyPath");
if(StrUtil.isBlank(appId) || StrUtil.isBlank(mchId) || StrUtil.isBlank(mchKey)){
throw new BadRequestException("请配置微信支付");
}
if(StrUtil.isBlank(keyPath)){
throw new BadRequestException("请配置微信支付证书");
}
WxPayRefundRequest wxPayRefundRequest = new WxPayRefundRequest();
BigDecimal bigDecimal = new BigDecimal("100"); BigDecimal bigDecimal = new BigDecimal("100");
wxPayRefundRequest.setTotalFee(bigDecimal.multiply(resources.getPayPrice()).intValue());//订单总金额
wxPayRefundRequest.setOutTradeNo(resources.getOrderId());
wxPayRefundRequest.setOutRefundNo(resources.getOrderId());
wxPayRefundRequest.setRefundFee(bigDecimal.multiply(resources.getPayPrice()).intValue());//退款金额
wxPayRefundRequest.setOpUserId(mchId); //操作人默认商户号当前
wxPayRefundRequest.setNotifyUrl(apiUrl+"/api/notify/refund");
WxPayConfig wxPayConfig = new WxPayConfig();
wxPayConfig.setAppId(appId);
wxPayConfig.setMchId(mchId);
wxPayConfig.setMchKey(mchKey);
wxPayConfig.setKeyPath(keyPath);
wxPayService.setConfig(wxPayConfig);
try { try {
wxPayService.refund(wxPayRefundRequest); payService.refundOrder(resources.getOrderId(),
bigDecimal.multiply(resources.getPayPrice()).intValue());
} catch (WxPayException e) { } catch (WxPayException e) {
log.info("refund-error:{}",e.getMessage()); log.info("refund-error:{}",e.getMessage());
} }
} }

View File

@ -5,13 +5,13 @@ import ${package}.domain.${className};
<#list columns as column> <#list columns as column>
<#if column.columnKey = 'UNI'> <#if column.columnKey = 'UNI'>
<#if column_index = 1> <#if column_index = 1>
import EntityExistException; import co.yixiang.exception.EntityExistException;
</#if> </#if>
</#if> </#if>
</#list> </#list>
</#if> </#if>
import ValidationUtil; import co.yixiang.utils.ValidationUtil;
import FileUtil; import co.yixiang.utils.FileUtil;
import ${package}.repository.${className}Repository; import ${package}.repository.${className}Repository;
import ${package}.service.${className}Service; import ${package}.service.${className}Service;
import ${package}.service.dto.${className}Dto; import ${package}.service.dto.${className}Dto;
@ -33,8 +33,8 @@ import cn.hutool.core.util.IdUtil;
//import org.springframework.cache.annotation.Cacheable; //import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import PageUtil; import co.yixiang.utils.PageUtil;
import QueryHelp; import co.yixiang.utils.QueryHelp;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.io.IOException; import java.io.IOException;