Commit e833516b by 周晓航

Merge branch 'KA-新增同意退款回调逻辑处理' into qa

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
parents 77a4b4d7 a068ef59
package com.freemud.sdk.api.assortment.order.response.order; package com.freemud.sdk.api.assortment.order.response.order;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -22,7 +23,16 @@ public class MultiOrderRefundResponse<T> { ...@@ -22,7 +23,16 @@ public class MultiOrderRefundResponse<T> {
} }
@Data @Data
public static class RefundPlatformResponse{ public static class RefundPlatformResponse {
/**
* 退款中状态码需要单独处理
*/
public static Integer REFUNDED_RESULTCODE = 8200305;
/**
* 退款成功
*/
public static Integer REFUND_SUCCESS = 100;
private String endTransTradeNo; private String endTransTradeNo;
private String fmRefundNo; private String fmRefundNo;
private String fmTradeNo; private String fmTradeNo;
...@@ -39,5 +49,11 @@ public class MultiOrderRefundResponse<T> { ...@@ -39,5 +49,11 @@ public class MultiOrderRefundResponse<T> {
private Integer totalAmount; private Integer totalAmount;
private String transId; private String transId;
private String ebcode; private String ebcode;
@ApiModelProperty(value = "业务返回码 8200305 代表退款中 100是成功 其他 都是失败")
private Integer resultCode;
@ApiModelProperty(value = "业务返回消息")
private String resultMsg;
} }
} }
\ No newline at end of file
...@@ -556,5 +556,16 @@ public class OrderController { ...@@ -556,5 +556,16 @@ public class OrderController {
return ResponseUtil.success(orderAdapterService.getOrderConfig(request)); return ResponseUtil.success(orderAdapterService.getOrderConfig(request));
} }
/**
* 同意退款, 支付服务退款失败的补偿接口
*
* 退款成功会回调该接口进行后续流程补偿
*/
@IsConvertEN
@ApiAnnotation(logMessage = "/order/refund/callback")
@PostMapping("/refund/callback")
public BaseResponse refundSuccessCallback(@Validated @LogParams @RequestBody RefundSuccessCallbackVo req) {
return orderAdapterService.refundSuccessCallback(req);
}
} }
package cn.freemud.entities.vo;
import javax.validation.constraints.NotBlank;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/6/8 17:38
* @description :
*/
public class RefundSuccessCallbackVo {
/**
* 商户号
*/
@NotBlank(message = "商户号不能为空")
private String partnerId;
/**
* 订单号
*/
@NotBlank(message = "订单编号不能为空")
private String orderCode;
/**
* 退款序列号
*/
private String refundId;
}
...@@ -2342,7 +2342,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2342,7 +2342,10 @@ public class OrderServiceImpl implements Orderservice {
try { try {
messageTemplateRequest = messageNoticeAdapter.convent2MessageTemplateRequest(orderBean); messageTemplateRequest = messageNoticeAdapter.convent2MessageTemplateRequest(orderBean);
messageTemplateRequest.setMessageEventType(messageEventType); messageTemplateRequest.setMessageEventType(messageEventType);
this.messageTemplatePushService.sendTemplateMsg(messageTemplateRequest); com.freemud.application.sdk.api.base.BaseResponse baseResponse = this.messageTemplatePushService.sendTemplateMsg(messageTemplateRequest);
if (!Objects.equals(baseResponse.getCode(), ResponseResultEnum.SUCCESS.getCode())) {
AppLogUtil.errorLog("发送支付成功模板消息 失败",orderBean.getOid(),JSON.toJSONString(baseResponse),null);
}
} catch (Exception e) { } catch (Exception e) {
AppLogUtil.errorLog("sendTemplateMsg_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(messageTemplateRequest), e); AppLogUtil.errorLog("sendTemplateMsg_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(messageTemplateRequest), e);
} }
......
package cn.freemud.management.adapter; package cn.freemud.management.adapter;
import cn.freemud.management.entities.dto.request.pay.AgentPayRefundReq;
import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto; import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
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.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
...@@ -76,6 +78,21 @@ public class PaymentSdkAdapter { ...@@ -76,6 +78,21 @@ public class PaymentSdkAdapter {
return multiQueryRequest; return multiQueryRequest;
} }
@SneakyThrows
public AgentPayRefundReq getAgentPayefundReq(OrderBeanV1 orderBean, BigDecimal refundAmount) {
OrderExtInfoDto ext = JSON.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
AgentPayRefundReq req = new AgentPayRefundReq();
req.setPartnerId(orderBean.getCompanyId());
req.setStoreId(orderBean.getShopId());
req.setFmTradeNo(ext.getPayTransId());
req.setOutOrderNo(orderBean.getOid());
req.setRefundTradeNo(this.getRefundSerialNo().toString());
req.setRefundAmount(refundAmount.longValue());
req.setNotifyUrl(refundNotifyCallback);
req.setVer("V1");
return req;
}
public Long getRefundSerialNo() { public Long getRefundSerialNo() {
return System.currentTimeMillis() + (int) (Math.random() * 9000) + 1000; return System.currentTimeMillis() + (int) (Math.random() * 9000) + 1000;
} }
......
package cn.freemud.management.entities.dto.response.pay; package cn.freemud.management.entities.dto.response.pay;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -20,6 +21,7 @@ public class AgentPayRefundResp { ...@@ -20,6 +21,7 @@ public class AgentPayRefundResp {
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class DataDTO { public static class DataDTO {
private String fmTradeNo; private String fmTradeNo;
private String endTransTradeNo; private String endTransTradeNo;
private String platformTradeNo; private String platformTradeNo;
...@@ -35,6 +37,12 @@ public class AgentPayRefundResp { ...@@ -35,6 +37,12 @@ public class AgentPayRefundResp {
private String refundTime; private String refundTime;
private String transId; private String transId;
private String ebcode; private String ebcode;
@ApiModelProperty(value = "业务返回码")
private Integer resultCode;
@ApiModelProperty(value = "业务返回消息")
private String resultMsg;
} }
public boolean isOk() { public boolean isOk() {
......
...@@ -181,6 +181,8 @@ public enum ResponseResult { ...@@ -181,6 +181,8 @@ public enum ResponseResult {
REFUND_EXCEPTION("58004", "支付退款异常"), REFUND_EXCEPTION("58004", "支付退款异常"),
REFUND_FAIL("58005", "支付退款失败"), REFUND_FAIL("58005", "支付退款失败"),
NOT_SUFFICIENT_FUNDS("8200201", "商户余额不足"), NOT_SUFFICIENT_FUNDS("8200201", "商户余额不足"),
CHECK_PARAM_ERROR("58006", "支付退款请求参数校验异常"),
REFUND_FAIL_WAIT_CALLBACK("58007", "支付退款失败,等待回调补偿中"),
/** /**
* 优惠券活动 * 优惠券活动
*/ */
......
...@@ -221,6 +221,7 @@ public class SaasOrderHandle { ...@@ -221,6 +221,7 @@ public class SaasOrderHandle {
if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) { if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) {
baseOrderResponse = orderCenterSdkService.refundComplete(refundAgreeRequest); baseOrderResponse = orderCenterSdkService.refundComplete(refundAgreeRequest);
} else { } else {
// fisherman 这里有缺陷 退款失败也是最终状态, 基础服务售后状态不能为 4 不然用户无法重新发起售后单
baseOrderResponse = orderCenterSdkService.refundReturn(refundAgreeRequest); baseOrderResponse = orderCenterSdkService.refundReturn(refundAgreeRequest);
} }
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) { if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
......
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