diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderData.java b/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderData.java index 152a1839..ff480e84 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderData.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderData.java @@ -101,6 +101,9 @@ public class ShopOrderData implements Serializable { @ApiModelProperty(value = "平台费(分给平台或代理商的费用),根据不同的店铺分类,从商品原价中扣除相应的费用。") private BigDecimal platform_fee; + @ApiModelProperty(value = "拉卡拉手续费") + private BigDecimal lkl_fee; + @ApiModelProperty(value = "店铺统一设置的打包费") private BigDecimal packing_fee; diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/order/dto/MchOrderInfoDTO.java b/mall-common/src/main/java/com/suisung/mall/common/modules/order/dto/MchOrderInfoDTO.java index 002a4a4b..23378173 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/order/dto/MchOrderInfoDTO.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/order/dto/MchOrderInfoDTO.java @@ -74,6 +74,8 @@ public class MchOrderInfoDTO implements Serializable { private BigDecimal order_shipping_fee; @ApiModelProperty(value = "平台内部配送费") private BigDecimal order_shipping_fee_inner; + @ApiModelProperty(value = "拉卡拉手续费") + private BigDecimal lkl_fee; @ApiModelProperty(value = "平台费") private BigDecimal platform_fee; @ApiModelProperty(value = "店铺统一设置的打包费") diff --git a/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/LakalaPayServiceImpl.java b/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/LakalaPayServiceImpl.java index 5044240d..14cace25 100644 --- a/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/LakalaPayServiceImpl.java +++ b/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/LakalaPayServiceImpl.java @@ -558,25 +558,27 @@ public class LakalaPayServiceImpl implements LakalaPayService { log.warn("[拉卡拉退款] 退款金额不合法: refundAmount={}", refundAmount); return Pair.of(false, I18nUtil._("退款金额不合法!")); } + + if (StrUtil.hasBlank(lklMerchantNo, lklTermNo)) { + // 4. 获取店铺的拉卡拉商户号和终端号 + ShopStoreBase shopStoreBase = shopService.getLklMerchantNoAndTermNo(storeId); + if (shopStoreBase == null) { + log.error("[拉卡拉退款] 无法获取店铺信息: storeId={}", storeId); + return Pair.of(false, I18nUtil._("无法获取店铺信息,退款失败!")); + } - // 3. 初始化拉卡拉SDK - initLKLSDK(); + if (StrUtil.isBlank(shopStoreBase.getLkl_merchant_no()) || StrUtil.isBlank(shopStoreBase.getLkl_term_no())) { + log.error("[拉卡拉退款] 无法获取店铺的拉卡拉商户号或终端号: storeId={}, merchantNo={}, termNo={}", + storeId, shopStoreBase.getLkl_merchant_no(), shopStoreBase.getLkl_term_no()); + return Pair.of(false, I18nUtil._("缺少商户号参数,退款失败!")); + } - // 4. 获取店铺的拉卡拉商户号和终端号 - ShopStoreBase shopStoreBase = shopService.getLklMerchantNoAndTermNo(storeId); - if (shopStoreBase == null) { - log.error("[拉卡拉退款] 无法获取店铺信息: storeId={}", storeId); - return Pair.of(false, I18nUtil._("无法获取店铺信息,退款失败!")); - } - - if (StrUtil.isBlank(shopStoreBase.getLkl_merchant_no()) || StrUtil.isBlank(shopStoreBase.getLkl_term_no())) { - log.error("[拉卡拉退款] 无法获取店铺的拉卡拉商户号或终端号: storeId={}, merchantNo={}, termNo={}", - storeId, shopStoreBase.getLkl_merchant_no(), shopStoreBase.getLkl_term_no()); - return Pair.of(false, I18nUtil._("缺少商户号参数,退款失败!")); + // 如果商户号和终端号是空的, + lklMerchantNo = StrUtil.isBlank(lklMerchantNo) ? shopStoreBase.getLkl_merchant_no() : lklMerchantNo; + lklTermNo = StrUtil.isBlank(lklTermNo) ? shopStoreBase.getLkl_term_no() : lklTermNo; } // TODO 重要的逻辑,获取是否已经分账?已分账:分账退回;查商家账户余额够不够退回?够就执行退回 - if (StrUtil.isBlank(refundReason)) { refundReason = "商家与买方协商退款"; } @@ -585,17 +587,16 @@ public class LakalaPayServiceImpl implements LakalaPayService { V3LabsRelationRefundRequest refundRequest = new V3LabsRelationRefundRequest(); refundRequest.setOutTradeNo(outTradeNo); refundRequest.setOriginTradeNo(originTradeNo); - lklMerchantNo = StrUtil.isBlank(lklMerchantNo) ? shopStoreBase.getLkl_merchant_no() : lklMerchantNo; - lklTermNo = StrUtil.isBlank(lklTermNo) ? shopStoreBase.getLkl_term_no() : lklTermNo; refundRequest.setMerchantNo(lklMerchantNo); refundRequest.setTermNo(lklTermNo); refundRequest.setRefundAmount(refundAmount); refundRequest.setRefundReason(refundReason); - refundRequest.setLocationInfo(new V3LabsTradeLocationInfo(requestIp, null, "")); log.info("[拉卡拉退款] 请求参数: {}", JSONUtil.toJsonStr(refundRequest)); + // 3. 初始化拉卡拉SDK + initLKLSDK(); String responseString = LKLSDK.httpPost(refundRequest); // 6. 处理响应 if (StrUtil.isBlank(responseString)) { diff --git a/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/PayConsumeTradeServiceImpl.java b/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/PayConsumeTradeServiceImpl.java index a8678096..3cc53738 100644 --- a/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/PayConsumeTradeServiceImpl.java +++ b/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/PayConsumeTradeServiceImpl.java @@ -188,7 +188,7 @@ public class PayConsumeTradeServiceImpl extends BaseServiceImpl 0) { + // 注意:商家配置的配送费 if (order_data_row != null && - order_data_row.getOrder_shipping_fee_inner() != null && - order_data_row.getOrder_shipping_fee_inner().compareTo(BigDecimal.ZERO) > 0) { + order_data_row.getOrder_shipping_fee() != null && + order_data_row.getOrder_shipping_fee().compareTo(BigDecimal.ZERO) > 0) { // 运费大于0的, 执行退运费操作, 有两种方案,1、生成退运费售后服务单; 2、直接执行退款 // 1、生成独立退运费售后服务单,需注意运费是退给运费代理商的,需要获取代理商的交易单号 @@ -1631,13 +1636,16 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl + @@ -782,13 +783,14 @@ oi.payment_time, od.order_shipping_fee, IFNULL(od.order_shipping_fee_inner, 0) as order_shipping_fee_inner, + IFNULL(od.lkl_fee, 0) as lkl_fee, (od.order_discount_amount + od.voucher_price + od.order_points_fee + od.order_adjust_fee) as total_discount_amount, - - (ob.order_product_amount-od.order_discount_amount-od.voucher_price-od.order_points_fee-od.order_adjust_fee-od.platform_fee-order_shipping_fee_inner+od.packing_fee) + + (ob.order_product_amount-od.order_discount_amount-od.voucher_price-od.order_points_fee-od.order_adjust_fee-od.platform_fee-order_shipping_fee_inner-lkl_fee+od.packing_fee) as order_income_amount, - od.platform_fee, + (od.platform_fee+lkl_fee) as platform_fee, od.packing_fee, od.order_message, sb.store_id,