Commit 9da7ecdc by 查志伟

抖音退款增加拓展参数赋值

parent 1bea5f4a
...@@ -7,6 +7,7 @@ import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; ...@@ -7,6 +7,7 @@ import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest; import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -32,7 +33,7 @@ public class PaymentSdkAdapter { ...@@ -32,7 +33,7 @@ public class PaymentSdkAdapter {
private String refundNotifyCallback; private String refundNotifyCallback;
public PayRefundRequestDto getOrderRefundRequest(String partnerId, String storeCode, String orderCode, public PayRefundRequestDto getOrderRefundRequest(String partnerId, String storeCode, String orderCode,
BigDecimal refundAmount, String payNo, String extInfoStr) { BigDecimal refundAmount, String payNo, String extInfoStr, String reason) {
PayRefundRequestDto refundRequestDTO = new PayRefundRequestDto(); PayRefundRequestDto refundRequestDTO = new PayRefundRequestDto();
refundRequestDTO.setPartnerId(partnerId); refundRequestDTO.setPartnerId(partnerId);
refundRequestDTO.setStoreId(storeCode); refundRequestDTO.setStoreId(storeCode);
...@@ -44,6 +45,7 @@ public class PaymentSdkAdapter { ...@@ -44,6 +45,7 @@ public class PaymentSdkAdapter {
refundRequestDTO.setOrgPayFmId(payNo); refundRequestDTO.setOrgPayFmId(payNo);
refundRequestDTO.setOpenid(orderExtInfoDto.getOpenid()); refundRequestDTO.setOpenid(orderExtInfoDto.getOpenid());
refundRequestDTO.setRefundId(getRefundSerialNo().toString()); refundRequestDTO.setRefundId(getRefundSerialNo().toString());
refundRequestDTO.setRefundDesc(StringUtils.isNotBlank(reason) ? reason : "商家退款");
return refundRequestDTO; return refundRequestDTO;
} }
......
...@@ -18,11 +18,14 @@ import com.alibaba.fastjson.JSONObject; ...@@ -18,11 +18,14 @@ import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.ordercenter.util.LogUtil; import com.freemud.application.sdk.api.ordercenter.util.LogUtil;
import com.freemud.application.sdk.api.util.ResponseUtils; import com.freemud.application.sdk.api.util.ResponseUtils;
...@@ -36,9 +39,12 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -36,9 +39,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/** /**
...@@ -95,7 +101,17 @@ public class PaymentHandle { ...@@ -95,7 +101,17 @@ public class PaymentHandle {
refundResponse = this.agentPayRefund(orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getOid(), getRefundAmount(orderBean), ext.getPayTransId()); refundResponse = this.agentPayRefund(orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getOid(), getRefundAmount(orderBean), ext.getPayTransId());
} else { } else {
//正常订单现金退款 paymentcenter/refund //正常订单现金退款 paymentcenter/refund
refundResponse = this.payRefund(orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getOid(), getRefundAmount(orderBean), orderBean.getPayVoucher(), orderBean.getExtInfo(), request.getReason()); PayRefundRequestDto req = paymentSdkAdapter.getOrderRefundRequest(orderBean.getCompanyId(), orderBean.getShopId(),
orderBean.getOid(), getRefundAmount(orderBean), orderBean.getPayVoucher(), orderBean.getExtInfo(), request.getReason());
// 抖音订单,退款时需要传递商品信息
if (OrderClientType.TIKTOKPAY.getIndex().toString().equals(orderBean.getOrderClient())) {
Map<String, String> extParam = new HashMap<>();
List<String> goodsIds = orderBean.getProductList().stream().map(ProductBeanV1::getProductId).collect(Collectors.toList());
extParam.put("tt_goods", JSON.toJSONString(goodsIds));
extParam.put("tt_oid", orderBean.getOid());
req.setExtendParams(extParam);
}
refundResponse = this.payRefund(req);
} }
} }
} catch (OrderServiceException orderEx) { } catch (OrderServiceException orderEx) {
...@@ -137,7 +153,17 @@ public class PaymentHandle { ...@@ -137,7 +153,17 @@ public class PaymentHandle {
refundResponse = this.agentPayRefund(order.getPartnerId(), order.getStoreId(), order.getOrderCode(), order.getActualPayAmount(), ext.getPayTransId()); refundResponse = this.agentPayRefund(order.getPartnerId(), order.getStoreId(), order.getOrderCode(), order.getActualPayAmount(), ext.getPayTransId());
} else { } else {
//正常订单现金退款 paymentcenter/refund //正常订单现金退款 paymentcenter/refund
refundResponse = this.payRefund(order.getPartnerId(), order.getStoreId(), order.getOrderCode(), order.getActualPayAmount(), order.getPayRequestNo(), order.getExtInfo(), reason); PayRefundRequestDto req = paymentSdkAdapter.getOrderRefundRequest(order.getPartnerId(), order.getStoreId(),
order.getOrderCode(), order.getActualPayAmount(), order.getPayRequestNo(), order.getExtInfo(), reason);
// 抖音订单,退款时需要传递商品信息
if (OrderClientType.TIKTOKPAY.getIndex().equals(order.getOrderClient())) {
Map<String, String> extParam = new HashMap<>();
List<String> goodsIds = order.getOrderItemList().stream().map(OrderItemResp::getProductSpec).collect(Collectors.toList());
extParam.put("tt_goods", JSON.toJSONString(goodsIds));
extParam.put("tt_oid", order.getOrderCode());
req.setExtendParams(extParam);
}
refundResponse = this.payRefund(req);
} }
} }
} catch (OrderServiceException orderEx) { } catch (OrderServiceException orderEx) {
...@@ -160,19 +186,15 @@ public class PaymentHandle { ...@@ -160,19 +186,15 @@ public class PaymentHandle {
/** /**
* 纯现金支付退款,非代付和混合支付退款 * 纯现金支付退款,非代付和混合支付退款
* *
* @param reason 退款原因 * @param refundReq 退款请求
* @return * @return 退款结果
*/ */
private PayRefundResponse payRefund(String partnerId, String storeCode, String orderCode, private PayRefundResponse payRefund(PayRefundRequestDto refundReq) {
BigDecimal refundAmount, String payNo, String extInfoStr, String reason) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS; PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
PayRefundRequestDto req = paymentSdkAdapter.getOrderRefundRequest(partnerId, storeCode, orderCode, refundAmount, payNo, extInfoStr); if (refundReq.getRefundAmount() <= 0) {
//抖音支付必传 return handlePayRefundResponse(refundStatus, refundReq.getRefundId());
req.setRefundDesc(reason == null ? "商家退款" : reason);
if (refundAmount.longValue() <= 0) {
return handlePayRefundResponse(refundStatus, req.getRefundId());
} }
BaseResponse<OrderRefundResponse> orderRefundResponse = this.orderPayRefund(req); BaseResponse<OrderRefundResponse> orderRefundResponse = this.orderPayRefund(refundReq);
String message = null; String message = null;
if (orderRefundResponse == null) { if (orderRefundResponse == null) {
refundStatus = PayRefundStatus.RUNNING; refundStatus = PayRefundStatus.RUNNING;
...@@ -180,7 +202,7 @@ public class PaymentHandle { ...@@ -180,7 +202,7 @@ public class PaymentHandle {
refundStatus = this.getFinalRefundStatus(Integer.valueOf(orderRefundResponse.getCode())); refundStatus = this.getFinalRefundStatus(Integer.valueOf(orderRefundResponse.getCode()));
message = orderRefundResponse.getMessage(); message = orderRefundResponse.getMessage();
} }
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, req.getRefundId()); PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, refundReq.getRefundId());
if (message != null) { if (message != null) {
payRefundResponse.setMessage(message); payRefundResponse.setMessage(message);
} }
...@@ -334,9 +356,7 @@ public class PaymentHandle { ...@@ -334,9 +356,7 @@ public class PaymentHandle {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS; PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
PayRefundRequestDto orderRefundRequest = paymentSdkAdapter PayRefundRequestDto orderRefundRequest = paymentSdkAdapter
.getOrderRefundRequest(orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getOid(), getRefundAmount(orderBean), orderBean.getPayVoucher(), orderBean.getExtInfo()); .getOrderRefundRequest(orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getOid(), getRefundAmount(orderBean), orderBean.getPayVoucher(), orderBean.getExtInfo(), reason);
//抖音支付必传
orderRefundRequest.setRefundDesc(reason);
if (ObjectUtils.equals(orderBean.getAmount(), 0L)) { if (ObjectUtils.equals(orderBean.getAmount(), 0L)) {
return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment