Commit 9da7ecdc by 查志伟

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

parent 1bea5f4a
......@@ -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.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import lombok.SneakyThrows;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
......@@ -32,7 +33,7 @@ public class PaymentSdkAdapter {
private String refundNotifyCallback;
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();
refundRequestDTO.setPartnerId(partnerId);
refundRequestDTO.setStoreId(storeCode);
......@@ -44,6 +45,7 @@ public class PaymentSdkAdapter {
refundRequestDTO.setOrgPayFmId(payNo);
refundRequestDTO.setOpenid(orderExtInfoDto.getOpenid());
refundRequestDTO.setRefundId(getRefundSerialNo().toString());
refundRequestDTO.setRefundDesc(StringUtils.isNotBlank(reason) ? reason : "商家退款");
return refundRequestDTO;
}
......
......@@ -18,11 +18,14 @@ import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.BaseResponse;
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.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.OrderExtendedReq;
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.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.util.LogUtil;
import com.freemud.application.sdk.api.util.ResponseUtils;
......@@ -36,9 +39,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
......@@ -95,7 +101,17 @@ public class PaymentHandle {
refundResponse = this.agentPayRefund(orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getOid(), getRefundAmount(orderBean), ext.getPayTransId());
} else {
//正常订单现金退款 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) {
......@@ -137,7 +153,17 @@ public class PaymentHandle {
refundResponse = this.agentPayRefund(order.getPartnerId(), order.getStoreId(), order.getOrderCode(), order.getActualPayAmount(), ext.getPayTransId());
} else {
//正常订单现金退款 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) {
......@@ -160,19 +186,15 @@ public class PaymentHandle {
/**
* 纯现金支付退款,非代付和混合支付退款
*
* @param reason 退款原因
* @return
* @param refundReq 退款请求
* @return 退款结果
*/
private PayRefundResponse payRefund(String partnerId, String storeCode, String orderCode,
BigDecimal refundAmount, String payNo, String extInfoStr, String reason) {
private PayRefundResponse payRefund(PayRefundRequestDto refundReq) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
PayRefundRequestDto req = paymentSdkAdapter.getOrderRefundRequest(partnerId, storeCode, orderCode, refundAmount, payNo, extInfoStr);
//抖音支付必传
req.setRefundDesc(reason == null ? "商家退款" : reason);
if (refundAmount.longValue() <= 0) {
return handlePayRefundResponse(refundStatus, req.getRefundId());
if (refundReq.getRefundAmount() <= 0) {
return handlePayRefundResponse(refundStatus, refundReq.getRefundId());
}
BaseResponse<OrderRefundResponse> orderRefundResponse = this.orderPayRefund(req);
BaseResponse<OrderRefundResponse> orderRefundResponse = this.orderPayRefund(refundReq);
String message = null;
if (orderRefundResponse == null) {
refundStatus = PayRefundStatus.RUNNING;
......@@ -180,7 +202,7 @@ public class PaymentHandle {
refundStatus = this.getFinalRefundStatus(Integer.valueOf(orderRefundResponse.getCode()));
message = orderRefundResponse.getMessage();
}
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, req.getRefundId());
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, refundReq.getRefundId());
if (message != null) {
payRefundResponse.setMessage(message);
}
......@@ -334,9 +356,7 @@ public class PaymentHandle {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
PayRefundRequestDto orderRefundRequest = paymentSdkAdapter
.getOrderRefundRequest(orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getOid(), getRefundAmount(orderBean), orderBean.getPayVoucher(), orderBean.getExtInfo());
//抖音支付必传
orderRefundRequest.setRefundDesc(reason);
.getOrderRefundRequest(orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getOid(), getRefundAmount(orderBean), orderBean.getPayVoucher(), orderBean.getExtInfo(), reason);
if (ObjectUtils.equals(orderBean.getAmount(), 0L)) {
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