Просмотр исходного кода

[退款退券][修改]:退款退券修改,放到一起,支持B/Admin/Auto/自己发起退款

release_toaliyun_real
Stormeye.Wu 7 лет назад
Родитель
Сommit
f32281f51c
9 измененных файлов: 175 добавлений и 197 удалений
  1. +0
    -29
      mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java
  2. +10
    -48
      mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java
  3. +0
    -28
      mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java
  4. +1
    -0
      mallinkService/src/main/java/com/simple/common/ErrorCode.java
  5. +37
    -0
      mallinkService/src/main/java/com/simple/enums/EnumRefundWay.java
  6. +0
    -9
      mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java
  7. +5
    -4
      mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java
  8. +1
    -60
      mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java
  9. +121
    -19
      mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java

+ 0
- 29
mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java Просмотреть файл

@@ -130,35 +130,6 @@ public class WxCouponOrderController extends BaseController {
}
}

@ApiOperation(value = "退券接口", notes = "{\"couponOrderId\":\"string\"}")
@PostMapping("refund")
public ResultData refund(@RequestBody Map<String, String> paramMap) {
logger.info(paramMap.toString());
String couponOrderIdStr = paramMap.get("couponOrderId");
if (StringUtils.isBlank(couponOrderIdStr)) {
logger.error("couponOrderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
Long couponOrderId = 0L;
try {
couponOrderId = Long.valueOf(couponOrderIdStr);
} catch (NumberFormatException e) {
logger.error("couponOrderId参数不正确: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
try {
ResultData rd = wxCouponOrderService.refund(couponOrderId, getUser().getId());
return rd;
} catch (MallinkException e) {
logger.error("退券异常: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error("退券异常: " + e.getMessage());
return new ResultData(ErrorCode.REFUND_ORDER_ERROR, e.getMessage());
}
}


@ApiOperation(value = "根据couponOrderId查询接口", notes = "{\"couponOrderId\":\"string\"}")
@PostMapping("/findById")
public ResultData findById(@RequestBody Map<String, String> paramMap) {


+ 10
- 48
mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java Просмотреть файл

@@ -8,6 +8,7 @@ import com.simple.config.PayProperty;
import com.simple.domain.po.*;
import com.simple.enums.EnumPayStatus;
import com.simple.enums.EnumPayWay;
import com.simple.enums.EnumRefundWay;
import com.simple.exception.MallinkException;
import com.simple.service.*;
import io.swagger.annotations.Api;
@@ -42,68 +43,29 @@ public class WxRefundOrderController extends BaseController {
@Autowired
private WxRefundOrderService wxRefundOrderService;

@ApiOperation(value = "发起退款", notes = "{\"orderId\":\"string\"}")
@ApiOperation(value = "退券退款", notes = "{\"couponOrderId\":\"string\"}")
@PostMapping("/create")
public ResultData create(@RequestBody Map<String, String> paramMap) {
// couponOrder发起退款
logger.info("/api/refund/create" + paramMap.toString());
//Assert.notNull(wxRefundOrder.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
String orderIdStr = paramMap.get("orderId");
if (StringUtils.isBlank(orderIdStr)) {
logger.error("orderId不能为空: " + paramMap.toString());
logger.info(paramMap.toString());
String couponOrderIdStr = paramMap.get("couponOrderId");
if (StringUtils.isBlank(couponOrderIdStr)) {
logger.error("couponOrderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
Long orderId = 0L;
Long couponOrderId = 0L;
try {
orderId = Long.valueOf(orderIdStr);
couponOrderId = Long.valueOf(couponOrderIdStr);
} catch (NumberFormatException e) {
logger.error("orderId参数不正确: " + paramMap.toString());
logger.error("couponOrderId参数不正确: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}

WxOrder order = null;
try {
order = wxOrderService.getById(orderId);
} catch (Exception e) {
logger.error("订单不存在: " + orderIdStr);
return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单不存在: " + orderIdStr);
}
if (order == null) {
logger.error("订单不存在: " + orderIdStr);
return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "订单不存在: " + orderIdStr);
}
if (order.getPayment() <= 0) {
logger.error("订单支付金额小于等于0: " + order.toString());
throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO);
}

WxPayOrder payOrderQ = new WxPayOrder();
payOrderQ.setCUserId(order.getCUserId());
payOrderQ.setOrderId(orderId);
payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());

WxPayOrder payOrder = null;

try {
payOrder = wxPayOrderService.getByObj(payOrderQ);
} catch (Exception e) {
logger.error("支付订单不存在(payOrder不存在)");
return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND);
}
if (payOrder == null) {
logger.error("支付订单不存在(payOrder不存在)");
return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND);
}

WxRefundOrder refundOrderQ = new WxRefundOrder();
refundOrderQ.setPayOrderNo(String.valueOf(payOrder.getId()));
refundOrderQ.setOrderId(orderId);

WxMerchantBUser bUser = getUser();
WxAppinfo appinfo = getAppInfo(bUser.getAppId());
try {
wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, refundOrderQ, payOrder, EnumPayWay.PAY_WAY_WEAPP);
wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, couponOrderId, EnumRefundWay.B, bUser.getId());
return new ResultData();
} catch (MallinkException e) {
logger.error(e.getMessage());


+ 0
- 28
mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java Просмотреть файл

@@ -31,34 +31,6 @@ public class WxCouponOrderController extends BaseController {
@Autowired
private WxCouponOrderService wxCouponOrderService;

@ApiOperation(value = "退券接口", notes = "{\"couponOrderId\":\"string\"}")
@PostMapping("refund")
public ResultData refund(@RequestBody Map<String, String> paramMap) {
logger.info(paramMap.toString());
String couponOrderIdStr = paramMap.get("couponOrderId");
if (StringUtils.isBlank(couponOrderIdStr)) {
logger.error("couponOrderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空");
}
Long couponOrderId = 0L;
try {
couponOrderId = Long.valueOf(couponOrderIdStr);
} catch (NumberFormatException e) {
logger.error("couponOrderId参数不正确: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确");
}
try {
ResultData rd = wxCouponOrderService.refund(couponOrderId, getUser().getId());
return rd;
} catch (MallinkException e) {
logger.error("退券异常: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error("退券异常: " + e.getMessage());
return new ResultData(ErrorCode.REFUND_ORDER_ERROR, e.getMessage());
}
}

@ApiOperation("券包分页列表接口")
@GetMapping("list")
@ApiImplicitParams({


+ 1
- 0
mallinkService/src/main/java/com/simple/common/ErrorCode.java Просмотреть файл

@@ -113,6 +113,7 @@ public enum ErrorCode{
COUPON_ORDER_IS_USED(4001, "卡券已核销"),
COUPON_ORDER_IS_OVER_TIME(4002, "卡券已过期"),
COUPON_ORDER_IS_INVALID(4003, "卡券已经作废"),
COUPON_ORDER_BUSER_IS_NULL(4004, "卡券B端用户不存在"),


/**


+ 37
- 0
mallinkService/src/main/java/com/simple/enums/EnumRefundWay.java Просмотреть файл

@@ -0,0 +1,37 @@
package com.simple.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumRefundWay {

B(0, "B端小程序"),
ADMIN(1, "WEB端小程序"),
C(2, "C端小程序"),
AUTO(3, "自动退款");

public static EnumRefundWay getEnum(Integer code) {
for (EnumRefundWay value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumRefundWay(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 0
- 9
mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java Просмотреть файл

@@ -62,15 +62,6 @@ public interface WxCouponOrderService {
*/
ResultData verify(Long couponOrderId, Long bUserId);

/**
* 根据主键couponOrderId(券码)退券(款)
*
* @param couponOrderId
* @param bUserId 退券(款)人(登录用户)
*/
ResultData refund(Long couponOrderId, Long bUserId);


/**
* 根据日期 b用户查券list
*


+ 5
- 4
mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java Просмотреть файл

@@ -7,6 +7,7 @@ import com.simple.domain.po.WxAppinfo;
import com.simple.domain.po.WxPayOrder;
import com.simple.domain.po.WxRefundOrder;
import com.simple.enums.EnumPayWay;
import com.simple.enums.EnumRefundWay;

public interface WxRefundOrderService {

@@ -14,12 +15,12 @@ public interface WxRefundOrderService {
* 创建退款订单
* @param isReal
* @param appInfo
* @param record 退款订单请求
* @param payOrder 支付订单
* @param payWay
* @param couponOrderId 券包Id
* @param refundWay 退款来源
* @param bUserId b端退款Id,auto,admin,self可为null
* @return
*/
ResultData createRefundOrder(boolean isReal, WxAppinfo appInfo, WxRefundOrder record, WxPayOrder payOrder, EnumPayWay payWay);
ResultData createRefundOrder(boolean isReal, WxAppinfo appInfo, Long couponOrderId, EnumRefundWay refundWay, Long bUserId);

/**
* 退款订单查询


+ 1
- 60
mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java Просмотреть файл

@@ -12,6 +12,7 @@ import com.simple.domain.vo.CUserDateAmountVo;
import com.simple.domain.vo.WxCouponOrderBVo;
import com.simple.domain.vo.WxCouponOrderCVo;
import com.simple.enums.EnumCouponOrderStatus;
import com.simple.enums.EnumRefundStatus;
import com.simple.exception.MallinkException;
import com.simple.mapper.*;
import com.simple.service.WxCouponOrderService;
@@ -57,8 +58,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findList(record));
}



@Override
public WxCouponOrder getById(Long id) {
return wxCouponOrderMapper.selectByPrimaryKey(id);
@@ -320,66 +319,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
return new ResultData(wxCouponOrder);


}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData refund(Long couponOrderId, Long bUserId) {

WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId);
if(wxCouponOrder == null){
logger.error("券ID不存在:"+ couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId());

if(bUserId != wxCouponOrder.getCUserId()) {
// TODO web管理端退款
// B端用户退款
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue());
if (wxMerchantBUser == null) {
logger.error("操作员ID不存在:" + bUserId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}
if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())) {
logger.error("券: couponMerchantId-" + wxOrder.getMerchantId() + "核销: couponMerchantId-" + wxMerchantBUser.getMerchantId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}
} else {
logger.info("自己发起退款, userId: " + bUserId);
}

if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) {
logger.error("已过期: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) {
logger.error("已退款: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) {
logger.error("已经核销过的券: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
try {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废
wxCouponOrder.setBUserId(bUserId);
wxCouponOrder.setUpdateDate(new Date());
wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrderId + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
// 库存回复+1
wxOrderService.stockBack(wxOrder);
return new ResultData(wxCouponOrder);
}



@Override
public List<CUserDateAmountVo> queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) {


+ 121
- 19
mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java Просмотреть файл

@@ -10,9 +10,7 @@ import com.simple.common.ErrorCode;
import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.*;
import com.simple.enums.EnumOrderStatus;
import com.simple.enums.EnumPayWay;
import com.simple.enums.EnumRefundStatus;
import com.simple.enums.*;
import com.simple.exception.MallinkException;
import com.simple.mapper.*;
import com.simple.pay.WxPay;
@@ -53,6 +51,12 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
@Autowired
WxOrderService wxOrderService;

@Autowired
WxCouponOrderMapper wxCouponOrderMapper;

@Autowired
WxMerchantBUserMapper wxMerchantBUserMapper;

JSONObject errorRefundReqMap = JSON.parseObject("{\n" +
" \"SYSTEMERROR\": {\n" +
" \"detail\": \"接口返回错误\",\n" +
@@ -210,28 +214,105 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
"}");

@Override
public ResultData createRefundOrder(boolean isReal, WxAppinfo appInfo, WxRefundOrder record, WxPayOrder payOrder, EnumPayWay payWay) {
WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId());
if (StringUtils.isBlank(payAccount.getApiKey())) {
logger.error("支付密钥为空");
throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND.getCode(), "支付密钥为空,请联系商城管理员");
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData createRefundOrder(boolean isReal, WxAppinfo appInfo, Long couponOrderId, EnumRefundWay refundWay, Long bUserId) {
WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId);
if(wxCouponOrder == null){
logger.error("券ID不存在:"+ couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}
if (StringUtils.isBlank(payAccount.getCertPath())) {
logger.error("证书路径为空");
throw new MallinkException(ErrorCode.CERT_PATH_NOT_FOUND.getCode(), "证书路径为空,请联系商城管理员");

WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId());

if (refundWay == EnumRefundWay.B) {
logger.info("B端发起退款: bUserId-" + bUserId);
if (bUserId == null || bUserId ==0 ) {
logger.error("B端用户不存在:"+ bUserId);
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}
// B端用户退款检查一下商户
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId);
if (wxMerchantBUser == null) {
logger.error("操作员ID不存在:" + bUserId);
throw new MallinkException(ErrorCode.COUPON_ORDER_BUSER_IS_NULL);
}
if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())) {
logger.error("券: couponMerchantId-" + wxOrder.getMerchantId() + "核销: couponMerchantId-" + wxMerchantBUser.getMerchantId());
throw new MallinkException(ErrorCode.COUPON_ORDER_BUSER_IS_NULL);
}
} else if (refundWay == EnumRefundWay.ADMIN) {
logger.info("ADMIN端发起退款: bUserId-" + bUserId);
} else if (refundWay == EnumRefundWay.AUTO) {
logger.info("auto端发起退款");
} else {
logger.info("自己发起退款: cUserId-" + bUserId);
}
// check 是否有退款订单
List<WxRefundOrder> list = wxRefundOrderMapper.findList(record);
if (wxOrder.getPayment() <= 0) {
logger.error("订单支付金额小于等于0: " + wxOrder.toString());
throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO);
}

if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) {
logger.error("已过期: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) {
logger.error("已退款: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) {
logger.error("已经核销过的券: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
// 更改 couponOrder 状态
Date currentDate = new Date();
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废
if (refundWay == EnumRefundWay.B) {
wxCouponOrder.setBUserId(bUserId);
} else if (refundWay == EnumRefundWay.AUTO) {
wxCouponOrder.setBUserId(0L); // 自动退款, 设置bUserId为0
} else if (refundWay == EnumRefundWay.ADMIN) {
wxCouponOrder.setBUserId(1L); // ADMIN发起退款, 设置bUserId为1
} else {
wxCouponOrder.setBUserId(2L); // 自己发起退款, 设置bUserId为2
}
wxCouponOrder.setUpdateDate(currentDate);
try {
wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrderId + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
// 库存回复+1
wxOrderService.stockBack(wxOrder);
// 创建refundOrder
WxPayOrder payOrderQ = new WxPayOrder();
payOrderQ.setTenantId(appInfo.getTenantId());
payOrderQ.setCUserId(wxOrder.getCUserId());
payOrderQ.setOrderId(wxOrder.getId());
payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());

WxPayOrder payOrder = null;
List<WxPayOrder> list = wxPayOrderMapper.findList(payOrderQ);
if (list.size() > 0) {
logger.error("退款订单已存在, 无法再提交退款申请");
throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请");
if (list.size() > 1) {
logger.error("TODO: payOrder成功记录应该只有一条????!!!");
}
logger.warn("");
payOrder = list.get(0);
}
if (payOrder == null) {
logger.error("支付订单不存在(payOrder不存在)");
return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND);
}

WxRefundOrder record = new WxRefundOrder();
record.setPayOrderNo(String.valueOf(payOrder.getId()));
record.setOrderId(wxOrder.getId());
// 创建退款订单
final IdWorker idWorker = IdWorker.get();
Long id = idWorker.nextId();
String out_refund_id = String.valueOf(id);
Date currentDate = new Date();

record.setId(id);
record.setTenantId(appInfo.getTenantId());
@@ -255,8 +336,23 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
logger.error("退款订单数据库插入出错: " + record.toString());
throw new MallinkException(ErrorCode.DB_FAIL);
}
WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId());
if (StringUtils.isBlank(payAccount.getApiKey())) {
logger.error("支付密钥为空");
throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND.getCode(), "支付密钥为空,请联系商城管理员");
}
if (StringUtils.isBlank(payAccount.getCertPath())) {
logger.error("证书路径为空");
throw new MallinkException(ErrorCode.CERT_PATH_NOT_FOUND.getCode(), "证书路径为空,请联系商城管理员");
}
// check 是否有退款订单
List<WxRefundOrder> refundList = wxRefundOrderMapper.findList(record);
if (refundList.size() > 0) {
logger.error("退款订单已存在, 无法再提交退款申请");
throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请");
}

// 退款申请
// 向微信提交退款申请
String noncestr = Utility.generate32UUID();
WxRefundOrderP wxRefundOrderP = new WxRefundOrderP();
wxRefundOrderP.setAppid(appInfo.getAppId());
@@ -268,11 +364,17 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
wxRefundOrderP.setOut_refund_no(out_refund_id);
wxRefundOrderP.setTotal_fee(record.getTotalFee());
wxRefundOrderP.setRefund_fee(record.getRefundFee());
wxRefundOrderP.setRefund_desc("B端商户退款");
if (refundWay == EnumRefundWay.B) {
wxRefundOrderP.setRefund_desc("B端商户退款");
} else if (refundWay == EnumRefundWay.ADMIN) {
wxRefundOrderP.setRefund_desc("管理端商户退款");
} else {
wxRefundOrderP.setRefund_desc("用户自己退款");
}
wxRefundOrderP.setNotify_url(payAccount.getNotifyUrl() + "/refund");

if (isReal) {
Map signMap = new HashMap();
Map signMap = null;
try {
signMap = BeanUtils.toStringMap(wxRefundOrderP);
} catch (Exception e) {


Загрузка…
Отмена
Сохранить