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

//..refund

release_toaliyun_real
xhxu 3 лет назад
Родитель
Сommit
ec888af920
8 измененных файлов: 288 добавлений и 140 удалений
  1. +17
    -9
      mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java
  2. +45
    -0
      mallinkService/src/main/java/com/iformall/douyin/payv2/result/EnumRefundSource.java
  3. +49
    -0
      mallinkService/src/main/java/com/iformall/douyin/web/bean/Product.java
  4. +2
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumPayType.java
  5. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxMallService.java
  6. +12
    -0
      mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java
  7. +36
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java
  8. +125
    -131
      mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java

+ 17
- 9
mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java Просмотреть файл

@@ -777,12 +777,12 @@ public class WxOrderController extends BaseController {
String open_id = msgObject.getString("open_id");
String cp_extra = msgObject.getString("cp_extra");
String tenantId = getTenantId(cp_extra);
if(StringUtils.isBlank(tenantId)){
map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode());
map.put("err_tips","缺少cp_extra");
return map;
}
WxMall mall = mallService.getByTenantId(tenantId);
// if(StringUtils.isBlank(tenantId)){
// map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode());
// map.put("err_tips","缺少cp_extra");
// return map;
// }
// WxMall mall = mallService.getByTenantId(tenantId);

//验证app
WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(app_id);
@@ -799,8 +799,6 @@ public class WxOrderController extends BaseController {
return map;
}

TenantEntity tenantEntity = new TenantEntity();;
tenantEntity.updateTenantInfo(mall);
//验证用户
Long memberId = null;
TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, appinfo.getTenantId());
@@ -816,13 +814,23 @@ public class WxOrderController extends BaseController {
TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount);
RefundOrderCallback refundOrderCallback = ttPayService.refundOrderNotifyV2Result(body, header);

TenantEntity tenantEntity = new TenantEntity();
if(StringUtils.isNotBlank(tenantId)){
WxMall mall = mallService.getByTenantId(tenantId);
tenantEntity.updateTenantInfo(mall);
}else{
String randmKey = "refund_callback:" + refundOrderCallback.getOutOrderNo();
WxMall mall = mallService.getRandomMall(randmKey,appinfo.getTenantId());
tenantEntity.updateTenantInfo(mall);
}

ResultData resultData = wxRefundOrderService.ttCallBackCreateRefundOrder(tenantEntity,memberId,refundOrderCallback);

if(resultData.code == 200){
WxRefundOrder refundOrder = (WxRefundOrder) resultData.data;
Map<String, Object> data = new HashMap<>();
data.put("out_refund_no",refundOrder.getId().toString());
data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(mall.getTenantId(),Long.parseLong(refundOrder.getPayOrderNo())));
data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(tenantEntity.getTenantId(),Long.parseLong(refundOrder.getPayOrderNo())));
map.put("data",data);
map.put("err_no",0);
map.put("err_tips",resultData.message);


+ 45
- 0
mallinkService/src/main/java/com/iformall/douyin/payv2/result/EnumRefundSource.java Просмотреть файл

@@ -0,0 +1,45 @@
package com.iformall.douyin.payv2.result;

import com.iformall.enums.EnumPayType;

/**
*
*/
public enum EnumRefundSource {

user(1, "用户发起退款",EnumPayType.PAY_C_REFUND),
expire_auto(3, "过期自动退",EnumPayType.PAY_AUTO_REFUND),
operate(4, "运营退款",EnumPayType.PAY_OPERATE_REFUND),
res_fail_auto(5, "预约失败自动退款",EnumPayType.PAY_AUTO_REFUND);

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

private Integer code;
private String message;
private EnumPayType payType;

EnumRefundSource(Integer code, String message ,EnumPayType payType) {
this.code = code;
this.message = message;
this.payType = payType;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}

public EnumPayType getPayType() {
return payType;
}
}

+ 49
- 0
mallinkService/src/main/java/com/iformall/douyin/web/bean/Product.java Просмотреть файл

@@ -139,6 +139,12 @@ public class Product implements Serializable {
@SerializedName(value = "attr_key_value_map")
private Map<String,String> attrKeyValueMap;

/**
* 商品额外信息
*/
@SerializedName(value = "product_ext")
private ProductExt productExt;

}

@Data
@@ -257,4 +263,47 @@ public class Product implements Serializable {

}

@Data
@NoArgsConstructor
public static class ProductExt implements Serializable {
private static final long serialVersionUID = 1L;

/**
* true / null - 审核通过自动上架
* false - 审核通过不自动上架"
*/
@SerializedName(value = "auto_online")
private Boolean autoOnline;

/**
* 测试商品信息
*/
@SerializedName(value = "test_extra")
private TestExtra testExtra;

}

@Data
@NoArgsConstructor
public static class TestExtra implements Serializable {
private static final long serialVersionUID = 1L;

/**
* true / null - 审核通过自动上架
* false - 审核通过不自动上架"
*/
@SerializedName(value = "uids")
private List<String> uids;

/**
* 标记商品是否为测试商品,当test_flag=true时,
* 1、uids数量需要大于0
* 2、小程序商品必须传trade_url
* 3、库存数不能大于50 若要取消测试标记:须指定flag=false
*/
@SerializedName(value = "test_flag")
private Boolean testFlag;

}

}

+ 2
- 0
mallinkService/src/main/java/com/iformall/enums/EnumPayType.java Просмотреть файл

@@ -12,6 +12,8 @@ public enum EnumPayType {
PAY_POS_REFUND(4, "POS发起退款"),
PAY_C_REFUND(5, "用户自己发起退款"),

PAY_OPERATE_REFUND(6, "运营退款"),

PAY_CARD_RECHARGE(10, "卡充值");

public static EnumPayType getEnum(Integer code) {


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxMallService.java Просмотреть файл

@@ -100,4 +100,6 @@ public interface WxMallService {
Map<String, WxMall> getMallMap(WxMall mallQ);

EnumDouyinApplicationVersion getDouyinApplicationVersion(TenantEntity tenantEntity);

WxMall getRandomMall(String randmKey, String tenantId);
}

+ 12
- 0
mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java Просмотреть файл

@@ -367,6 +367,18 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService {
Map<String, String> productAttrKeyValueMap = ttattrs.getProductAttrKeyValueMap();
productAttrKeyValueMap.put("trade_url",getUpOrderEntrySchema(coupon,wxCouponChannel.getId()));
prostruct.setAttrKeyValueMap(productAttrKeyValueMap);

if (isSaas) {
Product.ProductExt productExt = new Product.ProductExt();
productExt.setAutoOnline(false);
//测试商品
Product.TestExtra testExtra = new Product.TestExtra();
testExtra.setTestFlag(true);
List<String> uids = new ArrayList<>();
uids.add("4146950717062388");
testExtra.setUids(uids);
prostruct.setProductExt(productExt);
}
product.setProduct(prostruct);

Product.SkuStruct skuStruct = new Product.SkuStruct();


+ 36
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java Просмотреть файл

@@ -423,4 +423,40 @@ public class WxMallServiceImpl implements WxMallService {
return anEnum;
}

/**
* 临时解决方案, 获取不到广场
* @param randmKey
* @param tenantId
* @return
*/
@Override
public WxMall getRandomMall(String randmKey, String tenantId) {
WxMall mall = this.getByTenantId(tenantId);
if (mall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode()) &&
StringUtils.isBlank(mall.getParentTenantId())) {
Integer index = RedisCacheUtils.getCacheInteger(redisTemplate, randmKey);
if(index == null){
index = 0;
RedisCacheUtils.cache(redisTemplate,randmKey,index,3600*24);//24小时
return mall;
}
List<WxMall> subMallList = this.getSubByParentTenantId(tenantId);
if(subMallList == null && subMallList.isEmpty()){
return mall;
}
if(subMallList.size() == 1){
return subMallList.get(0);
}
if(index >= subMallList.size()){
index = 0;
}
mall = subMallList.get(index);

index += 1;
RedisCacheUtils.cache(redisTemplate,randmKey,index,3600*24);//24小时
return mall;
}
return mall;
}

}

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

@@ -14,6 +14,7 @@ import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.po.msg.FmInsideOrderRefundMsg;
import com.iformall.domain.po.msg.WxMsgRecord;
import com.iformall.douyin.payv2.result.EnumRefundSource;
import com.iformall.douyin.payv2.result.RefundOrderCallback;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
@@ -870,106 +871,105 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
wxOrderQ.updateTenantInfo(tenantEntity);
wxOrderQ.setComposeOrderId(compseOrderId);
List<WxOrder> wxOrderList = wxOrderMapper.findList(wxOrderQ);
if(wxOrderList.size() == 1){
if(wxOrderList == null || wxOrderList.isEmpty()){
//改广场查不到订单
logger.error("订单数据未查询到:compseOrderId " + compseOrderId);
throw new MallinkException(ErrorCode.ORDER_PAY_REFUND_FAIL);
}
if(wxOrderList.size() > 1){
//目前只支持单订单单券
logger.error("订单数据异常:compseOrderId " + compseOrderId);
throw new MallinkException(ErrorCode.ORDER_PAY_REFUND_FAIL);
}

WxOrder wxOrder = wxOrderList.get(0);
if (wxOrder == null) {
logger.error("交易订单不存在:compseOrderId=" + compseOrderId);
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
if (wxOrder.getPayment() <= 0) {
logger.error("订单支付金额小于等于0: " + wxOrder.toString());
throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO);
WxOrder wxOrder = wxOrderList.get(0);
if (wxOrder == null) {
logger.error("交易订单不存在:compseOrderId=" + compseOrderId);
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
if (wxOrder.getPayment() <= 0) {
logger.error("订单支付金额小于等于0: " + wxOrder.toString());
throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO);
}
if(!EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode().equals(wxOrder.getOrderStatus())
&& !EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode().equals(wxOrder.getOrderStatus())){
logger.error("交易订单状态不支持退款:" + EnumOrderStatus.getEnum(wxOrder.getOrderStatus()).getMessage());
throw new MallinkException(ErrorCode.ORDER_PAY_REFUND_FAIL);
}

WxCouponOrder couponOrderQ = new WxCouponOrder();
couponOrderQ.updateTenantInfo(tenantEntity);
couponOrderQ.setOrderId(wxOrder.getId());
List<WxCouponOrder> couponOrderList = wxCouponOrderMapper.findList(couponOrderQ);
if(couponOrderList == null || couponOrderList.isEmpty()){
logger.error("数据异常,券未找到:" + wxOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

for (WxCouponOrder wxCouponOrder:couponOrderList) {
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) {
logger.error("已退款: couponOrder-" + wxCouponOrder.getCouponId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if(!EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode().equals(wxOrder.getOrderStatus())
&& !EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode().equals(wxOrder.getOrderStatus())){
logger.error("交易订单状态不支持退款:" + EnumOrderStatus.getEnum(wxOrder.getOrderStatus()).getMessage());
throw new MallinkException(ErrorCode.ORDER_PAY_REFUND_FAIL);
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) {
logger.error("已经核销过的券: couponOrder-" + wxCouponOrder.getCouponId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
}

WxCouponOrder couponOrderQ = new WxCouponOrder();
couponOrderQ.updateTenantInfo(tenantEntity);
couponOrderQ.setOrderId(wxOrder.getId());
List<WxCouponOrder> couponOrderList = wxCouponOrderMapper.findList(couponOrderQ);
if(couponOrderList == null || couponOrderList.isEmpty()){
logger.error("数据异常,券未找到:" + wxOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}
EnumRefundSource refundSource = EnumRefundSource.getEnum(refundOrderCallback.getRefundSource());
EnumPayType payType = refundSource.getPayType();

for (WxCouponOrder wxCouponOrder:couponOrderList) {
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) {
logger.error("已退款: couponOrder-" + wxCouponOrder.getCouponId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) {
logger.error("已经核销过的券: couponOrder-" + wxCouponOrder.getCouponId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
}
Date currentDate = new Date();
//这里wx_order不创建退款订单了, 直接修改原订单
WxOrder updWxOrder = new WxOrder();
updWxOrder.setId(wxOrder.getId());
updWxOrder.updateTenantInfo(wxOrder);
updWxOrder.setPaymentType(payType.getCode());
updWxOrder.setRefDetail(refundSource.getMessage());

Date currentDate = new Date();
//这里wx_order不创建退款订单了, 直接修改原订单
WxOrder updWxOrder = new WxOrder();
updWxOrder.setId(wxOrder.getId());
updWxOrder.updateTenantInfo(wxOrder);
if(refundOrderCallback.getRefundSource().intValue() == 1){
updWxOrder.setPaymentType(EnumPayType.PAY_C_REFUND.getCode());
updWxOrder.setRefDetail("用户发起退款");
}else if(refundOrderCallback.getRefundSource().intValue() == 3){
updWxOrder.setPaymentType(EnumPayType.PAY_AUTO_REFUND.getCode());
updWxOrder.setRefDetail("过期退款");
}else{
logger.error("未知退款类型");
throw new MallinkException(ErrorCode.REFUND_NOT_ALLOW.getCode(),"未知退款类型");
}
updWxOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode());
updWxOrder.setUpdateDate(currentDate);

try {
wxOrderMapper.updateById(updWxOrder);
} catch (Exception e) {
logger.error("db failed: wxOrder-" + wxOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}

updWxOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_REFUND.getCode());
updWxOrder.setUpdateDate(currentDate);
for (WxCouponOrder wxCouponOrder:couponOrderList) {
// 更改 couponOrder 状态
if (wxCouponOrder.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_RETURNED.getCode()); // 卡线下退款
} else {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废
}
wxCouponOrder.setBUserId(payType.getCode().longValue());
wxCouponOrder.setAUserId(payType.getCode().longValue());

wxCouponOrder.setBMerchantId(0L);
wxCouponOrder.setUpdateDate(new Date());
try {
wxOrderMapper.updateById(updWxOrder);
wxCouponOrderMapper.updateById(wxCouponOrder);
} catch (Exception e) {
logger.error("db failed: wxOrder-" + wxOrder.getId() + ", e:" + e.getMessage());
logger.error("db failed: couponOrder-" + wxCouponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}

for (WxCouponOrder wxCouponOrder:couponOrderList) {
// 更改 couponOrder 状态
if (wxCouponOrder.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_RETURNED.getCode()); // 卡线下退款
} else {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废
}
if(refundOrderCallback.getRefundSource().intValue() == 1){
wxCouponOrder.setBUserId(EnumPayType.PAY_C_REFUND.getCode().longValue());
wxCouponOrder.setAUserId(EnumPayType.PAY_C_REFUND.getCode().longValue());
}else if(refundOrderCallback.getRefundSource().intValue() == 3){
wxCouponOrder.setBUserId(EnumPayType.PAY_AUTO_REFUND.getCode().longValue());
wxCouponOrder.setAUserId(EnumPayType.PAY_AUTO_REFUND.getCode().longValue());
}

wxCouponOrder.setBMerchantId(0L);
wxCouponOrder.setUpdateDate(new Date());
// 卡退款,把卡余额设为0
if (wxCouponOrder.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) {
WxCardInfo updateCardInfo = new WxCardInfo();
updateCardInfo.setId(wxCouponOrder.getId());
updateCardInfo.setRemainingAmount(0);
try {
wxCouponOrderMapper.updateById(wxCouponOrder);
wxCardInfoMapper.updateById(updateCardInfo);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + wxCouponOrder.getId() + ", e:" + e.getMessage());
logger.error("db failed: wxCardInfo-" + wxCouponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}

// 卡退款,把卡余额设为0
if (wxCouponOrder.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) {
WxCardInfo updateCardInfo = new WxCardInfo();
updateCardInfo.setId(wxCouponOrder.getId());
updateCardInfo.setRemainingAmount(0);
try {
wxCardInfoMapper.updateById(updateCardInfo);
} catch (Exception e) {
logger.error("db failed: wxCardInfo-" + wxCouponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
}
}
}

// WxPayOrder payOrderQ = new WxPayOrder();
// payOrderQ.updateTenantInfo(tenantEntity);
@@ -990,62 +990,56 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
// return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND);
// }

WxRefundOrder record = new WxRefundOrder();
record.updateTenantInfo(tenantEntity);
record.setPayOrderNo(wxOrder.getComposeOrderId().toString());
record.setOrderId(wxOrder.getId());
record.setNotStatus(EnumRefundStatus.REFUND_FAIL.getCode());
// check 是否有退款订单
List<WxRefundOrder> refundList = wxRefundOrderMapper.findList(record);
if (refundList.size() > 0) {
logger.error("退款订单已存在, 无法再提交退款申请");
throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请");
}
WxRefundOrder record = new WxRefundOrder();
record.updateTenantInfo(tenantEntity);
record.setPayOrderNo(wxOrder.getComposeOrderId().toString());
record.setOrderId(wxOrder.getId());
record.setNotStatus(EnumRefundStatus.REFUND_FAIL.getCode());
// check 是否有退款订单
List<WxRefundOrder> refundList = wxRefundOrderMapper.findList(record);
if (refundList.size() > 0) {
logger.error("退款订单已存在, 无法再提交退款申请");
throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请");
}


final IdWorker idWorker = IdWorker.get();
// 创建退款订单
Long refundId = idWorker.nextId();
//String out_refund_id = String.valueOf(refundId);

record.setId(refundId);
record.setCreateTime(currentDate);
record.setUpdateTime(currentDate);
// 微信内部订单号
record.setTransactionId(refundOrderCallback.getOrderId());
record.setCUserId(memberId);
record.setTotalFee(wxOrder.getPayment());
record.setRefundFee(refundOrderCallback.getRefundTotalAmount());
record.setRefundTimeStart(new Date(refundOrderCallback.getCreateRefundTime()));
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode());
record.setRefundVendor(wxOrder.getPayVendor());
record.setRefundId(refundOrderCallback.getRefundId());
record.setRefundReason(JSON.toJSONString(refundOrderCallback.getRefundReason()));
record.setRefundDescription(refundOrderCallback.getRefundDescription());
// 退款订单
try {
int sqlRow = wxRefundOrderMapper.insert(record);
if (sqlRow != 1) {
logger.error("退款订单数据库插入出错: " + record.toString());
throw new MallinkException(ErrorCode.DB_FAIL);
}
} catch (Exception e) {
final IdWorker idWorker = IdWorker.get();
// 创建退款订单
Long refundId = idWorker.nextId();
//String out_refund_id = String.valueOf(refundId);

record.setId(refundId);
record.setCreateTime(currentDate);
record.setUpdateTime(currentDate);
// 微信内部订单号
record.setTransactionId(refundOrderCallback.getOrderId());
record.setCUserId(memberId);
record.setTotalFee(wxOrder.getPayment());
record.setRefundFee(refundOrderCallback.getRefundTotalAmount());
record.setRefundTimeStart(new Date(refundOrderCallback.getCreateRefundTime()));
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode());
record.setRefundVendor(wxOrder.getPayVendor());
record.setRefundId(refundOrderCallback.getRefundId());
record.setRefundReason(JSON.toJSONString(refundOrderCallback.getRefundReason()));
record.setRefundDescription(refundOrderCallback.getRefundDescription());
// 退款订单
try {
int sqlRow = wxRefundOrderMapper.insert(record);
if (sqlRow != 1) {
logger.error("退款订单数据库插入出错: " + record.toString());
throw new MallinkException(ErrorCode.DB_FAIL);
}
} catch (Exception e) {
logger.error("退款订单数据库插入出错: " + record.toString());
throw new MallinkException(ErrorCode.DB_FAIL);
}

try {
sendInsideOrderRefundMsg(wxOrder);
} catch (Exception e) {
logger.error("订单成功通知用户error:" + e.getMessage(),e);
}
return new ResultData(Result.SUCCESS, "退款订单申请成功", record);

}else{
//目前只支持单订单单券
logger.error("订单数据异常:compseOrderId " + compseOrderId);
throw new MallinkException(ErrorCode.ORDER_PAY_REFUND_FAIL);
try {
sendInsideOrderRefundMsg(wxOrder);
} catch (Exception e) {
logger.error("订单成功通知用户error:" + e.getMessage(),e);
}
return new ResultData(Result.SUCCESS, "退款订单申请成功", record);
}

@Override


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