企业付款退款等重写

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

@ -14,8 +14,9 @@ import co.yixiang.modules.shop.service.YxUserService;
import co.yixiang.modules.shop.service.YxWechatUserService;
import co.yixiang.modules.shop.service.dto.YxUserDTO;
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.RedisUtil;
import com.github.binarywang.wxpay.bean.entpay.EntPayRequest;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
@ -42,17 +43,17 @@ public class UserExtractController {
private final YxUserExtractService yxUserExtractService;
private final YxUserService yxUserService;
private final YxUserBillService yxUserBillService;
private final WxPayService wxPayService;
private final YxWechatUserService wechatUserService;
private final YxPayService payService;
public UserExtractController(YxUserExtractService yxUserExtractService, YxUserService yxUserService,
YxUserBillService yxUserBillService, WxPayService wxPayService,
YxWechatUserService wechatUserService) {
public UserExtractController(YxUserExtractService yxUserExtractService,YxUserService yxUserService,
YxUserBillService yxUserBillService,YxWechatUserService wechatUserService,
YxPayService payService) {
this.yxUserExtractService = yxUserExtractService;
this.yxUserService = yxUserService;
this.yxUserBillService = yxUserBillService;
this.wxPayService = wxPayService;
this.wechatUserService = wechatUserService;
this.payService = payService;
}
@Log("查询")
@ -110,27 +111,10 @@ public class UserExtractController {
if(!isTest){
YxWechatUserDTO wechatUser = wechatUserService.findById(resources.getUid());
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 {
entPayRequest.setAppid(appId);
entPayRequest.setMchId(mchId);
entPayRequest.setOpenid(wechatUser.getOpenid());
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);
payService.entPay(wechatUser.getOpenid(),resources.getId().toString(),
resources.getRealName(),
resources.getExtractPrice().multiply(new BigDecimal(100)).intValue());
} catch (WxPayException e) {
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.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import co.yixiang.exception.BadRequestException;
import co.yixiang.exception.EntityExistException;
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.dto.*;
import co.yixiang.modules.shop.service.mapper.YxStoreOrderMapper;
import co.yixiang.mp.service.YxPayService;
import co.yixiang.utils.OrderUtil;
import co.yixiang.utils.QueryHelp;
import co.yixiang.utils.RedisUtil;
import co.yixiang.utils.ValidationUtil;
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.service.WxPayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@ -59,11 +55,12 @@ public class YxStoreOrderServiceImpl implements YxStoreOrderService {
private final YxUserBillService yxUserBillService;
private final YxStoreOrderStatusService yxStoreOrderStatusService;
private final YxUserService userService;
private final WxPayService wxPayService;
private final YxPayService payService;
public YxStoreOrderServiceImpl(YxStoreOrderRepository yxStoreOrderRepository, YxStoreOrderCartInfoRepository yxStoreOrderCartInfoRepository, YxUserRepository userRepository,
YxStorePinkRepository storePinkRepository, YxStoreOrderMapper yxStoreOrderMapper, YxUserBillService yxUserBillService,
YxStoreOrderStatusService yxStoreOrderStatusService, YxUserService userService, WxPayService wxPayService) {
YxStoreOrderStatusService yxStoreOrderStatusService,
YxUserService userService, YxPayService payService) {
this.yxStoreOrderRepository = yxStoreOrderRepository;
this.yxStoreOrderCartInfoRepository = yxStoreOrderCartInfoRepository;
this.userRepository = userRepository;
@ -72,7 +69,7 @@ public class YxStoreOrderServiceImpl implements YxStoreOrderService {
this.yxUserBillService = yxUserBillService;
this.yxStoreOrderStatusService = yxStoreOrderStatusService;
this.userService = userService;
this.wxPayService = wxPayService;
this.payService = payService;
}
@Override
@ -155,40 +152,14 @@ public class YxStoreOrderServiceImpl implements YxStoreOrderService {
yxStoreOrderStatusService.create(storeOrderStatus);
}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");
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 {
wxPayService.refund(wxPayRefundRequest);
payService.refundOrder(resources.getOrderId(),
bigDecimal.multiply(resources.getPayPrice()).intValue());
} catch (WxPayException e) {
log.info("refund-error:{}",e.getMessage());
}
}