Commit 7861350a by 查志伟

Merge branch 'feature/v1.0.14'

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
#	order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
parents 2090312c 2038741f
...@@ -1442,6 +1442,8 @@ public class OrderSdkAdapter { ...@@ -1442,6 +1442,8 @@ public class OrderSdkAdapter {
.spellGroupCode(orderExtended.getSpellGroupCode()) .spellGroupCode(orderExtended.getSpellGroupCode())
.userPhone(orderExtended.getUserPhone()) .userPhone(orderExtended.getUserPhone())
.sendWord(orderExtended.getSendWord()) .sendWord(orderExtended.getSendWord())
.agentPayerId(orderExtended.getAgentPayerId())
.agentPayerName(orderExtended.getAgentPayerName())
.build(); .build();
} }
......
package cn.freemud; package cn.freemud;
import cn.freemud.amp.service.OrderCallBackMQService;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.WechatReportOrderDto;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import org.junit.Test; import org.junit.Test;
import java.io.File; import java.io.File;
...@@ -16,6 +24,28 @@ import java.util.Set; ...@@ -16,6 +24,28 @@ import java.util.Set;
public class AllTests { public class AllTests {
/**
* 该方法 用于测试 推送微信支付上报获取参数
* @param args
*/
public static void main(String[] args) {
String str = "{\"abnormalDesc\":\"\",\"abnormalState\":0,\"actualPayAmount\":1.0,\"afterSalesOrderList\":[],\"appId\":\"wxfa229ba41652df7f\",\"barCounter\":\"005\",\"bizType\":1,\"businessDay\":1652371200000,\"canRefund\":true,\"cancelReason\":\"\",\"companySelfCode\":\"\",\"createTime\":1652446892000,\"daySeq\":4,\"deliveryContactInfoList\":[{\"addressDetail\":\"上海市虹口区塘沽路456号\",\"city\":\"\",\"contactsName\":\"\",\"expressNo\":\"0\",\"extInfo\":\"\",\"infoType\":1,\"latitude\":0E-7,\"longitude\":0E-7,\"mobile\":\"13166430721\",\"province\":\"\",\"region\":\"\",\"relateObjectType\":1,\"street\":\"\",\"telephone\":\"\",\"thirdDeliveryId\":\"0\",\"tripDist\":0}],\"deliveryPromise\":0,\"deliveryState\":0,\"dinersNumber\":0,\"dispenseStatus\":1,\"downstreamPosCode\":\"0\",\"downstreamThirdOrderCode\":\"0\",\"evaluationState\":0,\"expressChannelCode\":\"\",\"expressChannelName\":\"\",\"expressNo\":\"\",\"expressType\":0,\"extInfo\":\"{\\\"appid\\\":\\\"wxfa229ba41652df7f\\\",\\\"deliveryHoursDayStart\\\":\\\"\\\",\\\"endTransId\\\":\\\"20220513100000210002111094704150\\\",\\\"fmId\\\":\\\"8802865243694612136531288\\\",\\\"openid\\\":\\\"oHZsJ5d-gbBvUNBoVrhZCV1rWcJE\\\",\\\"paidMember\\\":false,\\\"payDate\\\":\\\"2022-05-13 21:01:39\\\",\\\"payTransId\\\":\\\"8802865243694612136531288\\\",\\\"prepayId\\\":\\\"wx132101331091569eff3057deaf2fb50000\\\",\\\"serviceTime\\\":30,\\\"sessionKey\\\":\\\"rsGu1d6PwtARrxIYzkHxxg==\\\"}\",\"immediately\":true,\"isParent\":false,\"localTableKey\":\"\",\"marketingCode\":\"\",\"marketingType\":0,\"needInvoice\":false,\"note\":\"\",\"operator\":\"\",\"orderArea\":\"0\",\"orderClient\":2,\"orderCode\":\"24369461192889072600004\",\"orderCostDetailList\":[],\"orderExtended\":{\"createTime\":1652446892000,\"id\":243694611928890726,\"isDeleted\":false,\"orderClientGroup\":\"\",\"orderClientGroupCode\":\"\",\"orderCode\":\"24369461192889072600004\",\"orderId\":243694611928890726,\"partnerId\":\"2865\",\"sendWord\":\"\",\"spellGroupCode\":\"\",\"storeId\":\"8630021001941262-8630021001941262\",\"storeNameEn\":\"\",\"updateTime\":1652446892000,\"userPhone\":\"\",\"version\":0},\"orderInvoice\":{\"address\":\"\",\"bankCardNo\":\"\",\"content\":\"\",\"invoiceBank\":\"\",\"invoiceNo\":\"\",\"invoiceUrl\":\"\",\"itemId\":\"\",\"partnerId\":\"\",\"phoneNo\":\"\",\"pickUpNo\":\"\",\"taxNo\":\"\",\"title\":\"\",\"userId\":\"\"},\"orderItemList\":[{\"canRefund\":true,\"categoryId\":\"0\",\"categoryName\":\"0\",\"extInfo\":\"{\\\"score\\\": 0, \\\"linkedId\\\": \\\"\\\", \\\"showPrice\\\": 1, \\\"isSendGoods\\\": false, \\\"cartGoodsUid\\\": \\\"8c31801197f747e4ae9780c8d248e965\\\"}\",\"id\":243694611948813672,\"ignoreInOrderClose\":false,\"marketingCode\":\"0\",\"marketingType\":0,\"nickName\":\"\",\"note\":\"\",\"openId\":\"\",\"originalProductType\":0,\"parentProductId\":\"0\",\"photoUrl\":\"\",\"productCode\":\"20220424001\",\"productForeignName\":\"\",\"productForeignProperty\":\"\",\"productForeignSpecName\":\"\",\"productId\":\"239055192095472910\",\"productName\":\"可乐\",\"productPicUrl\":\"https://picture.sandload.cn/1650780459062.jpg\",\"productPrice\":1.0,\"productProperty\":\"\",\"productQuantity\":1,\"productSeq\":0,\"productSharePrice\":0.0,\"productSpec\":\"239055192095472910\",\"productSpecName\":\"可乐\",\"productType\":1,\"productUnit\":\"\",\"productUpc\":\"\",\"productWeightUnit\":0,\"salePrice\":1.0,\"settlementPrice\":1.0,\"thirdProductId\":\"20220424001\",\"userId\":\"\",\"weight\":0.00}],\"orderSendCouponRespList\":[],\"orderSettlementDetailList\":[{\"agentDiscountAmount\":0.0,\"carrierDiscountAmount\":0.0,\"extInfo\":\"\",\"externalObjectId\":\"\",\"externalObjectName\":\"优惠总金额\",\"externalObjectSubId\":\"\",\"ignoreInDiscountAmount\":false,\"isOnline\":true,\"note\":\"\",\"number\":0,\"platformDiscountAmount\":0.0,\"platformServiceAmount\":0.0,\"productId\":\"0\",\"productSeq\":0,\"prospectiveAmount\":0.0,\"settlementAmount\":1.0,\"settlementType\":205,\"shopAmount\":0.0,\"shopDiscountAmount\":0.0}],\"orderState\":1,\"orderSubState\":0,\"orderType\":1,\"originalAmount\":1.0,\"parentCode\":\"0\",\"partnerId\":\"2865\",\"partnerName\":\"\",\"payChannel\":\"10211\",\"payChannelName\":\"微信\",\"payChannelType\":1,\"payRequestNo\":\"8802865243694612136531288\",\"payState\":2,\"payTime\":1652446899684,\"payType\":1,\"pickUpGoodsNo\":\"5055\",\"posCode\":\"\",\"posTableKey\":\"\",\"printNum\":0,\"settlementAmount\":1.0,\"sourceType\":0,\"storeId\":\"8630021001941262-8630021001941262\",\"storeName\":\"沙县小吃\",\"storeUnifyId\":\"0\",\"suspendDesc\":\"\",\"suspendState\":0,\"thirdOrderCode\":\"24369461192889072600004\",\"thirdStoreId\":\"\",\"toStoreId\":\"0\",\"updateTime\":1652446892000,\"userId\":\"3647332017865482101\",\"userName\":\"\",\"weight\":0.00}";
OrderCallBackRequestVo body = new OrderCallBackRequestVo();
body.setContent(str);
body.setOperateType(0);
body.setMsgType("1");
OrderInfoReqs orderInfoReqs = JSONObject.parseObject(body.getContent(), OrderInfoReqs.class);
OrderCallBackMQService orderCallBackMQService = new OrderCallBackMQService();
OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(orderInfoReqs.getExtInfo(), OrderExtInfoDto.class);
orderExtInfoDto.setPlatformMchId("null");
UserLoginInfoDto userLoginInfoDto = new UserLoginInfoDto();
userLoginInfoDto.setWxAppid(orderInfoReqs.getAppId());
userLoginInfoDto.setOpenId(orderExtInfoDto.getOpenid());
userLoginInfoDto.setSessionKey(orderExtInfoDto.getSessionId());
// WechatReportOrderDto wechatReportOrderDto = orderCallBackMQService.getWechatReportOrderDto(orderInfoReqs, orderExtInfoDto, userLoginInfoDto);
// System.out.println(JSON.toJSONString(wechatReportOrderDto));
}
@Test @Test
public void entityTest() throws Exception { public void entityTest() throws Exception {
int i = 0; int i = 0;
......
...@@ -2,22 +2,21 @@ package cn.freemud.controller; ...@@ -2,22 +2,21 @@ package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.OrderTackCodeFactory; import cn.freemud.entities.vo.order.PayConfigVo;
import cn.freemud.enums.TakeCodeOrderType; import cn.freemud.entities.vo.order.PaySuccessDataVo;
import cn.freemud.manager.OrderTackCodeManager; import cn.freemud.service.ExposureOrderService;
import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.business.impl.OrderBusinessServiceImpl;
import cn.freemud.service.impl.OrderQueueService; import cn.freemud.service.impl.OrderQueueService;
import cn.freemud.service.impl.OrderServiceImpl; import cn.freemud.service.impl.OrderServiceImpl;
import cn.freemud.service.impl.PayServiceImpl; import cn.freemud.service.impl.PayServiceImpl;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.freemud.application.sdk.api.log.ApiAnnotation; import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams; import com.freemud.application.sdk.api.log.LogParams;
import com.freemud.application.sdk.api.ordercenter.adapter.OrderCenterSdkAdapter;
import com.freemud.sdk.api.assortment.message.enums.OrderType;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/** /**
* 暴露订单相关的业务接口,提供给applet项目 * 暴露订单相关的业务接口,提供给applet项目
...@@ -29,10 +28,7 @@ public class ExposureOrderController { ...@@ -29,10 +28,7 @@ public class ExposureOrderController {
@Autowired @Autowired
private PayServiceImpl payService; private PayServiceImpl payService;
@Autowired @Autowired
private OrderTackCodeManager orderTackCodeManager; private ExposureOrderService exposureOrderService;
@Autowired
private OrderBusinessServiceImpl orderBusinessService;
@Autowired @Autowired
private OrderServiceImpl orderService; private OrderServiceImpl orderService;
...@@ -40,38 +36,13 @@ public class ExposureOrderController { ...@@ -40,38 +36,13 @@ public class ExposureOrderController {
@Autowired @Autowired
private OrderQueueService orderQueueService; private OrderQueueService orderQueueService;
@Autowired
private OrderCenterSdkAdapter orderCenterSdkAdapter;
/** /**
* 创建支付单,查询支付配置 * 创建支付单,查询支付配置
*/ */
@ApiAnnotation(logMessage = "创建支付单,查询支付配置") @ApiAnnotation(logMessage = "创建支付单,查询支付配置")
@PostMapping("/getPayConfig") @PostMapping("/getPayConfig")
public BaseResponse<String> getPayConfig(@Validated @LogParams @RequestBody GetPayConfigVo getPayConfigVo) { public BaseResponse<PayConfigVo> getPayConfig(@Validated @LogParams @RequestBody GetPayConfigVo req) {
String payConfig = payService.getPayConfig(getPayConfigVo.getPartnerId(), getPayConfigVo.getAppId()); return ResponseUtil.success(exposureOrderService.getPayConfig(req));
return ResponseUtil.success(payConfig);
}
/**
* 创建支付单,查询超时时间
*/
@ApiAnnotation(logMessage = "创建支付单,查询超时时间")
@PostMapping("/getPayTimeout")
public BaseResponse<String> getPayTimeout(@Validated @LogParams @RequestBody GetPayTimeoutVo getPayTimeoutVo) {
String partnerPayOvertime = payService.getPartnerPayOvertime(getPayTimeoutVo.getPartnerId());
return ResponseUtil.success(partnerPayOvertime);
}
/**
* 创建支付单,查询payCode
*/
@ApiAnnotation(logMessage = "创建支付单,查询payCode")
@PostMapping("/getPayCodeByChanel")
public BaseResponse<String> getPayCodeByChanel(@Validated @LogParams @RequestBody GetPayCodeByChanelVo getPayCodeByChanelVo) {
String payCodeByCondition = payService.getPayCodeByCondition(getPayCodeByChanelVo.getAppId(), getPayCodeByChanelVo.getStoreId(), getPayCodeByChanelVo.getChannel());
return ResponseUtil.success(payCodeByCondition);
} }
/** /**
...@@ -84,34 +55,14 @@ public class ExposureOrderController { ...@@ -84,34 +55,14 @@ public class ExposureOrderController {
return ResponseUtil.success(); return ResponseUtil.success();
} }
/**
* 生成取餐码
*/
@ApiAnnotation(logMessage = "生成取餐码")
@PostMapping("/generateTackCode")
public BaseResponse<String> generateTackCode(@Validated @LogParams @RequestBody GenerateTackCodeVo generateTackCodeVo) {
Integer orderTye = TakeCodeOrderType.getTakeCodeOrderType(generateTackCodeVo.getOrderType());
String tackCode = orderTackCodeManager.generateTackCode(orderTye,
generateTackCodeVo.getPartnerId(),
generateTackCodeVo.getStoreId(),
null,
OrderTackCodeFactory.getByOrderClient(generateTackCodeVo.getOrderClient()).getGenerateTackCodeFunc());
return ResponseUtil.success(tackCode);
}
/** @ApiAnnotation(logMessage = "获取超时时间, 生成取餐码")
* 从支付成功开始计时,超时未接单的时间(单位:分钟) @PostMapping("/getPaySuccessData")
*/ public BaseResponse<PaySuccessDataVo> generateTackCode(@Validated @LogParams @RequestBody GetPaySuccessDataRequest request) {
@ApiAnnotation(logMessage = "获取超时时间") return ResponseUtil.success(exposureOrderService.getPaySuccessData(request));
@PostMapping("/paySuccessTimeout")
public BaseResponse<Integer> generateTackCode(@Validated @LogParams @RequestBody GetPaySuccessTimeoutVo getPaySuccessTimeoutVo) {
Integer orderTye = orderCenterSdkAdapter.getOldOrderType(getPaySuccessTimeoutVo.getOrderType());
Integer tackCode = orderBusinessService.getPaySuccessTimeout(getPaySuccessTimeoutVo.getPartnerId(),
getPaySuccessTimeoutVo.getStoreId(),
orderTye);
return ResponseUtil.success(tackCode);
} }
/** /**
* 发送支付成功模板消息 * 发送支付成功模板消息
*/ */
...@@ -122,15 +73,6 @@ public class ExposureOrderController { ...@@ -122,15 +73,6 @@ public class ExposureOrderController {
return ResponseUtil.success(); return ResponseUtil.success();
} }
/**
* 生成0元支付fmId
*/
@ApiAnnotation(logMessage = "生成0元支付fmId")
@GetMapping("/generateZeroPayFmId")
public BaseResponse generateZeroPayFmId() {
String fmId = payService.generateZeroPayFmId();
return ResponseUtil.success(fmId);
}
/** /**
* 现金支付,设置轮循队列 * 现金支付,设置轮循队列
......
...@@ -10,6 +10,11 @@ public class GetPayConfigVo { ...@@ -10,6 +10,11 @@ public class GetPayConfigVo {
@NotBlank(message = "商户号不能为空") @NotBlank(message = "商户号不能为空")
private String partnerId; private String partnerId;
@NotBlank(message = "门店id不能为空")
private String storeId;
@NotBlank(message = "小程序id不能为空") @NotBlank(message = "小程序id不能为空")
private String appId; private String appId;
private String channel;
} }
...@@ -3,7 +3,7 @@ package cn.freemud.entities.vo; ...@@ -3,7 +3,7 @@ package cn.freemud.entities.vo;
import lombok.Data; import lombok.Data;
@Data @Data
public class GenerateTackCodeVo { public class GetPaySuccessDataRequest {
private Integer orderType; private Integer orderType;
......
package cn.freemud.entities.vo;
import lombok.Data;
@Data
public class GetPaySuccessTimeoutVo {
private Integer orderType;
private String partnerId;
private String storeId;
}
package cn.freemud.entities.vo.order;
import lombok.Data;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
@Data
public class PayConfigVo {
/**
* 商户支付主体名称
*/
private String principalName;
/**
* 支付超时时间
*/
private String payTimeOut;
/**
* 门店支付编号
*/
private String payCode;
}
package cn.freemud.entities.vo.order;
import lombok.Data;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
@Data
public class PaySuccessDataVo {
/**
* 取餐码
*/
private String takeCode;
/**
* 从支付成功开始计时,超时未接单的时间(单位:分钟)
*/
private Integer timeout;
}
package cn.freemud.service;
import cn.freemud.entities.vo.GetPayConfigVo;
import cn.freemud.entities.vo.GetPaySuccessDataRequest;
import cn.freemud.entities.vo.order.PayConfigVo;
import cn.freemud.entities.vo.order.PaySuccessDataVo;
import cn.freemud.enums.OrderTackCodeFactory;
import cn.freemud.enums.TakeCodeOrderType;
import cn.freemud.manager.OrderTackCodeManager;
import cn.freemud.service.business.impl.OrderBusinessServiceImpl;
import cn.freemud.service.impl.PayServiceImpl;
import com.freemud.application.sdk.api.ordercenter.adapter.OrderCenterSdkAdapter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
@Service
@RequiredArgsConstructor
public class ExposureOrderService {
private final PayServiceImpl payService;
private final OrderTackCodeManager orderTackCodeManager;
private final OrderBusinessServiceImpl orderBusinessService;
private final OrderCenterSdkAdapter orderCenterSdkAdapter;
public PayConfigVo getPayConfig(GetPayConfigVo req) {
PayConfigVo vo = new PayConfigVo();
vo.setPrincipalName(payService.getPaymentPrincipalName(req.getPartnerId(), req.getAppId()));
vo.setPayTimeOut(payService.getPartnerPayOvertime(req.getPartnerId()));
vo.setPayCode(payService.getPayCodeByCondition(req.getAppId(), req.getStoreId(), req.getChannel()));
return vo;
}
public PaySuccessDataVo getPaySuccessData(GetPaySuccessDataRequest reqVo) {
Integer type = TakeCodeOrderType.getTakeCodeOrderType(reqVo.getOrderType());
String takeCode = orderTackCodeManager.generateTackCode(type,
reqVo.getPartnerId(),
reqVo.getStoreId(),
null,
OrderTackCodeFactory.getByOrderClient(reqVo.getOrderClient()).getGenerateTackCodeFunc());
Integer v1Type = orderCenterSdkAdapter.getOldOrderType(reqVo.getOrderType());
Integer timeout = orderBusinessService.getPaySuccessTimeout(reqVo.getPartnerId(),
reqVo.getStoreId(),
v1Type);
PaySuccessDataVo vo = new PaySuccessDataVo();
vo.setTakeCode(takeCode);
vo.setTimeout(timeout);
return vo;
}
}
...@@ -44,6 +44,7 @@ import org.apache.commons.collections4.MapUtils; ...@@ -44,6 +44,7 @@ import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.MessageFormat; import java.text.MessageFormat;
...@@ -140,6 +141,7 @@ public class OrderAdapterServiceImpl { ...@@ -140,6 +141,7 @@ public class OrderAdapterServiceImpl {
private SellCouponOrderServiceImpl sellCouponOrderServiceImpl; private SellCouponOrderServiceImpl sellCouponOrderServiceImpl;
@Autowired @Autowired
private ApolloVariableConfig apolloVariable; private ApolloVariableConfig apolloVariable;
@Lazy
@Autowired @Autowired
private CashierOrderService cashierOrderService; private CashierOrderService cashierOrderService;
@Autowired @Autowired
......
...@@ -101,6 +101,7 @@ import com.freemud.application.sdk.api.ordercenter.enums.*; ...@@ -101,6 +101,7 @@ import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.*; import com.freemud.application.sdk.api.ordercenter.enums.orderv1.*;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType; import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1; import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1;
import com.freemud.application.sdk.api.ordercenter.request.*; import com.freemud.application.sdk.api.ordercenter.request.*;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq; import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse; import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
...@@ -3919,4 +3920,6 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3919,4 +3920,6 @@ public class OrderServiceImpl implements Orderservice {
this.sendPaySuccessMessage(orderBean); this.sendPaySuccessMessage(orderBean);
} }
} }
...@@ -459,7 +459,7 @@ public class PayServiceImpl { ...@@ -459,7 +459,7 @@ public class PayServiceImpl {
/** /**
* 查询支付配置 * 查询支付配置
*/ */
private String getPaymentPrincipalName(String partnerId, String appId) { public String getPaymentPrincipalName(String partnerId, String appId) {
String redisKey = MessageFormat.format(OrderRedisKeyConstant.PARTNER_PAYMENT_PRINCIPAL_NAME, partnerId); String redisKey = MessageFormat.format(OrderRedisKeyConstant.PARTNER_PAYMENT_PRINCIPAL_NAME, partnerId);
// 先从redis中查询支付商户名称 // 先从redis中查询支付商户名称
String principalName = redisCache.hashGet(redisKey, appId); String principalName = redisCache.hashGet(redisKey, appId);
...@@ -483,10 +483,6 @@ public class PayServiceImpl { ...@@ -483,10 +483,6 @@ public class PayServiceImpl {
return principalName; return principalName;
} }
public String getPayConfig(String partnerId, String appId) {
return this.getPaymentPrincipalName(partnerId, appId);
}
/** /**
* 电子风味卡支付 * 电子风味卡支付
...@@ -1531,10 +1527,6 @@ public class PayServiceImpl { ...@@ -1531,10 +1527,6 @@ public class PayServiceImpl {
return checkSvcAmountResponse; return checkSvcAmountResponse;
} }
public String generateZeroPayFmId() {
String fmId = "SPAY" + ValidationCode.getRandomUuid();
return fmId;
}
public void putRoundRobin(PutRoundRobinVo putRoundRobinVo) { public void putRoundRobin(PutRoundRobinVo putRoundRobinVo) {
//加入轮训队列 //加入轮训队列
......
...@@ -76,7 +76,7 @@ public class PaymentSdkAdapter { ...@@ -76,7 +76,7 @@ public class PaymentSdkAdapter {
return multiQueryRequest; return multiQueryRequest;
} }
private 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.request.pay;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
@NoArgsConstructor
@Data
public class AgentPayQueryReq {
private String outOrderNo;
private String partnerId;
private String storeId;
private String fmTradeNo;
private String platformTradeNo;
private String endTransTradeNo;
private String ver;
}
package cn.freemud.management.entities.dto.request.pay;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
@NoArgsConstructor
@Data
public class AgentPayRefundReq {
private String refundTradeNo;
private String partnerId;
private String storeId;
private String fmTradeNo;
private String outOrderNo;
private String endTransTradeNo;
private String platformTradeNo;
private Long refundAmount;
private String refundDesc;
private String notifyUrl;
private String ver;
}
package cn.freemud.management.entities.dto.response.pay;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Objects;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
@NoArgsConstructor
@Data
public class AgentPayQueryResp {
private Integer code;
private DataDTO data;
private String msg;
@NoArgsConstructor
@Data
public static class DataDTO {
private String ebCode;
private String fmTradeNo;
private String transId;
private String platformTradeNo;
private String outOrderNo;
private Integer payAmount;
private String endTransTradeNo;
private Integer mcouponAmount;
private Integer pcouponAmount;
private String status;
private String ver;
private String openId;
private String transCurrency;
private String tradeTime;
private String platformMchId;
}
public boolean isOk() {
return Objects.equals(code, 100);
}
}
package cn.freemud.management.entities.dto.response.pay;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Objects;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
@NoArgsConstructor
@Data
public class AgentPayRefundResp {
private Integer code;
private DataDTO data;
private String msg;
@NoArgsConstructor
@Data
public static class DataDTO {
private String fmTradeNo;
private String endTransTradeNo;
private String platformTradeNo;
private String fmRefundNo;
private String refundEndTransTradeNo;
private Integer refundAmount;
private Integer settleRefundAmount;
private Integer mcouponAmount;
private Integer pcouponAmount;
private Integer totalAmount;
private String refundCurrency;
private String refundDesc;
private String refundTime;
private String transId;
private String ebcode;
}
public boolean isOk() {
return Objects.equals(code, 200);
}
}
...@@ -2,6 +2,7 @@ package cn.freemud.management.service.handle; ...@@ -2,6 +2,7 @@ package cn.freemud.management.service.handle;
import cn.freemud.management.adapter.PaymentSdkAdapter; import cn.freemud.management.adapter.PaymentSdkAdapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
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 cn.freemud.management.entities.dto.request.pay.PaymentQueryOrderRequestDto; import cn.freemud.management.entities.dto.request.pay.PaymentQueryOrderRequestDto;
import cn.freemud.management.entities.dto.response.pay.*; import cn.freemud.management.entities.dto.response.pay.*;
...@@ -12,6 +13,7 @@ import cn.freemud.management.thirdparty.MulitiPaymentClient; ...@@ -12,6 +13,7 @@ import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.management.thirdparty.OMSPaymentClient; import cn.freemud.management.thirdparty.OMSPaymentClient;
import cn.freemud.management.util.RedisUtil; import cn.freemud.management.util.RedisUtil;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager;
...@@ -118,6 +120,37 @@ public class PaymentHandle { ...@@ -118,6 +120,37 @@ public class PaymentHandle {
} }
/** /**
* 代付订单退款
*
* @param request
* @param orderBean
* @return
*/
public PayRefundResponse agentPayRefund(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundResponse ret = new PayRefundResponse();
try {
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(paymentSdkAdapter.getRefundSerialNo().toString());
req.setRefundAmount(this.getRefundAmount(orderBean).longValue());
req.setVer("V1");
AgentPayRefundResp resp = mulitiPaymentClient.agentPayRefund(req);
logUtil.info("fisherman refundRespons ---> "+orderBean.getOid() + "---", JSON.toJSONString(req), JSON.toJSONString(resp));
if (!resp.isOk()) throw new Exception("退款失败");
ret.setRefundId(resp.getData().getFmRefundNo());
ret.setPayRefundStatus(PayRefundStatus.SUCCESS);
} catch (Throwable e) {
ret.setPayRefundStatus(PayRefundStatus.FAIL);
}
return ret;
}
/**
* 卖券调用退款 * 卖券调用退款
* @param reason * @param reason
* @param orderBean * @param orderBean
......
...@@ -6,9 +6,9 @@ import cn.freemud.management.entities.dto.request.console.*; ...@@ -6,9 +6,9 @@ import cn.freemud.management.entities.dto.request.console.*;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.*;
import cn.freemud.management.enums.OperateType; import cn.freemud.management.enums.OperateType;
import cn.freemud.management.handler.AssisantApplicationHandler; import cn.freemud.management.handler.AssisantApplicationHandler;
import cn.freemud.management.enums.*;
import cn.freemud.management.intercept.OrderServiceException; import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService; import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.OrderManagerService; import cn.freemud.management.service.OrderManagerService;
...@@ -16,7 +16,6 @@ import cn.freemud.management.service.handle.*; ...@@ -16,7 +16,6 @@ import cn.freemud.management.service.handle.*;
import cn.freemud.management.thirdparty.ConsoleApiClient; import cn.freemud.management.thirdparty.ConsoleApiClient;
import cn.freemud.management.thirdparty.OrderCallbackClient; import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
...@@ -29,14 +28,13 @@ import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1; ...@@ -29,14 +28,13 @@ import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1;
import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq; import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExpressReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExpressReq;
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.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
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.service.EmailAlertService; import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus; import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.ByteOrderMark;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -249,7 +247,14 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -249,7 +247,14 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){ if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){
refundResponse = paymentHandle.multiRefund(orderBean); refundResponse = paymentHandle.multiRefund(orderBean);
}else{ }else{
refundResponse = paymentHandle.refund(request, orderBean); OrderExtendedReq ext = orderBean.getOrderExtended();
if (StringUtils.isNotBlank(ext.getAgentPayerId()) && !Objects.equals(ext.getAgentPayerId(), orderBean.getUserId())) {
//代付人信息不为空 并且和订单创建人不一样,表示代付单
refundResponse = paymentHandle.agentPayRefund(request, orderBean);
} else {
//正常订单现金退款
refundResponse = paymentHandle.refund(request, orderBean);
}
} }
} catch (OrderServiceException orderEx){ // 爱马哥兼容,不抛错 } catch (OrderServiceException orderEx){ // 爱马哥兼容,不抛错
return ResponseUtil.error(orderEx.getResult()); return ResponseUtil.error(orderEx.getResult());
......
...@@ -17,6 +17,10 @@ import cn.freemud.management.annotations.LogIgnoreFeign; ...@@ -17,6 +17,10 @@ import cn.freemud.management.annotations.LogIgnoreFeign;
import cn.freemud.management.constant.ResponseCodeConstant; import cn.freemud.management.constant.ResponseCodeConstant;
import cn.freemud.management.constant.ResponseCodeKeyConstant; import cn.freemud.management.constant.ResponseCodeKeyConstant;
import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request; import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request;
import cn.freemud.management.entities.dto.request.pay.AgentPayQueryReq;
import cn.freemud.management.entities.dto.request.pay.AgentPayRefundReq;
import cn.freemud.management.entities.dto.response.pay.AgentPayQueryResp;
import cn.freemud.management.entities.dto.response.pay.AgentPayRefundResp;
import cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest; import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse; import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse;
...@@ -42,4 +46,19 @@ public interface MulitiPaymentClient { ...@@ -42,4 +46,19 @@ public interface MulitiPaymentClient {
@PostMapping("/payment/application/batch/refund") @PostMapping("/payment/application/batch/refund")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR}, messageFieldName = ResponseCodeKeyConstant.MSG, printLog = true) @LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR}, messageFieldName = ResponseCodeKeyConstant.MSG, printLog = true)
PayBatchRefundResponse batchRefund(BatchOrderRefundV2Request batchOrderRefundV2Request); PayBatchRefundResponse batchRefund(BatchOrderRefundV2Request batchOrderRefundV2Request);
/**
* 代付退款
*/
@PostMapping("/payment/application/agentRefund")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR}, messageFieldName = ResponseCodeKeyConstant.MSG, printLog = true)
AgentPayRefundResp agentPayRefund(AgentPayRefundReq req);
/**
* 代付查询
*/
@PostMapping("/payment/application/agentQuery")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR}, messageFieldName = ResponseCodeKeyConstant.MSG, printLog = true)
AgentPayQueryResp agentPayQuery(AgentPayQueryReq req);
} }
...@@ -696,6 +696,8 @@ public class OrderCenterSdkAdapter { ...@@ -696,6 +696,8 @@ public class OrderCenterSdkAdapter {
.spellGroupCode(orderExtended.getSpellGroupCode()) .spellGroupCode(orderExtended.getSpellGroupCode())
.userPhone(orderExtended.getUserPhone()) .userPhone(orderExtended.getUserPhone())
.sendWord(orderExtended.getSendWord()) .sendWord(orderExtended.getSendWord())
.agentPayerId(orderExtended.getAgentPayerId())
.agentPayerName(orderExtended.getAgentPayerName())
.build(); .build();
} }
......
...@@ -12,11 +12,15 @@ ...@@ -12,11 +12,15 @@
*/ */
package com.freemud.application.sdk.api.ordercenter.request; package com.freemud.application.sdk.api.ordercenter.request;
import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
@Builder @Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderExtendedReq { public class OrderExtendedReq {
/** /**
...@@ -48,15 +52,14 @@ public class OrderExtendedReq { ...@@ -48,15 +52,14 @@ public class OrderExtendedReq {
*/ */
private String sendWord; private String sendWord;
public OrderExtendedReq() { /**
} * 代付人userId
*/
public OrderExtendedReq(String orderClientGroup, String orderClientGroupCode, String storeNameEn, String spellGroupCode, String userPhone, String sendWord) { private String agentPayerId;
this.orderClientGroup = orderClientGroup;
this.orderClientGroupCode = orderClientGroupCode; /**
this.storeNameEn = storeNameEn; * 代付人用户名称
this.spellGroupCode = spellGroupCode; */
this.userPhone = userPhone; private String agentPayerName;
this.sendWord = sendWord;
}
} }
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