Browse Source

mq优化,支付请求添加重试机制,统一异常管理,并添加统一订单推送

feature-1.1
wuxicheng 3 years ago
parent
commit
286f3eef54
  1. 23
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java
  2. 25
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java
  3. 2
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/exception/PayException.java
  4. 13
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/listener/ThirdPayOrderPushConsumer.java
  5. 2
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/manager/DyPayManager.java
  6. 2
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java

23
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java

@ -50,8 +50,6 @@ public class DYPayStrategy extends AbstractPayStrategy{
private static DypayConfigMapper dypayConfigMapper; private static DypayConfigMapper dypayConfigMapper;
private final static String failThirdCode = "-1";
@Autowired @Autowired
public void setBean(DYPayUtil dyPayUtil, public void setBean(DYPayUtil dyPayUtil,
PayInfoService payInfoService, DypayConfigMapper dypayConfigMapper) { PayInfoService payInfoService, DypayConfigMapper dypayConfigMapper) {
@ -81,6 +79,8 @@ public class DYPayStrategy extends AbstractPayStrategy{
String backurl = dypayConfig.getBackurl(); String backurl = dypayConfig.getBackurl();
String salt = dypayConfig.getSalt(); String salt = dypayConfig.getSalt();
String requestStr = ""; String requestStr = "";
ThirdUnifiedOrderVo thirdUnifiedOrderVo = new ThirdUnifiedOrderVo();
thirdUnifiedOrderVo.setAppId(appId);
try { try {
//加签验签的参数需要排序 //加签验签的参数需要排序
Map<String, Object> params = new TreeMap<>(); Map<String, Object> params = new TreeMap<>();
@ -122,28 +122,16 @@ public class DYPayStrategy extends AbstractPayStrategy{
result = dyPayManager.postRequest(requestStr, DYPayConstants.CREATE_ORDER); result = dyPayManager.postRequest(requestStr, DYPayConstants.CREATE_ORDER);
} catch (PayException e) { } catch (PayException e) {
log.error("抖音支付:支付异常,payId:{},error{}", bo.getPayId(), e.getMessage()); log.error("抖音支付:支付异常,payId:{},error{}", bo.getPayId(), e.getMessage());
throw new ServiceException(ResponseEnum.PAY_FAILS); thirdUnifiedOrderVo.setThirdCode(e.getErrCode());
thirdUnifiedOrderVo.setThirdMsg(StringUtils.isNoneBlank(e.getErrCodeDes())?e.getErrCodeDes():e.getCustomErrorMsg());
return thirdUnifiedOrderVo;
} }
log.info("=================================="); log.info("==================================");
log.info("抖音预下单result{}", result); log.info("抖音预下单result{}", result);
log.info("=================================="); log.info("==================================");
ThirdUnifiedOrderVo thirdUnifiedOrderVo = new ThirdUnifiedOrderVo();
thirdUnifiedOrderVo.setAppId(appId);
if (StringUtils.isBlank(result) || !result.startsWith("{")){
log.error("抖音支付:统一下单接口调用失败,payId:{},error{}", bo.getPayId(), "第三方返回格式有误!");
thirdUnifiedOrderVo.setThirdCode(failThirdCode);
thirdUnifiedOrderVo.setThirdMsg("第三方返回格式有误!");
return thirdUnifiedOrderVo;
}
JSONObject jsonObject = JSONObject.parseObject(result); JSONObject jsonObject = JSONObject.parseObject(result);
String errNo = jsonObject.getString("err_no"); String errNo = jsonObject.getString("err_no");
String errorMsg = jsonObject.getString("error_msg"); String errorMsg = jsonObject.getString("error_msg");
if (!"0".equals(errNo)) {
log.error("抖音支付:统一下单接口调用失败,payId:{},error{}", bo.getPayId(),errorMsg );
thirdUnifiedOrderVo.setThirdCode(errNo);
thirdUnifiedOrderVo.setThirdMsg(errorMsg);
return thirdUnifiedOrderVo;
}
JSONObject data = jsonObject.getJSONObject("data"); JSONObject data = jsonObject.getJSONObject("data");
String orderId = data.getString("order_id"); String orderId = data.getString("order_id");
String orderToken = data.getString("order_token"); String orderToken = data.getString("order_token");
@ -360,6 +348,7 @@ public class DYPayStrategy extends AbstractPayStrategy{
log.info("抖音支付:抖音订单推送接口调用成功,request:{},result:{}",requestStr,resultStr); log.info("抖音支付:抖音订单推送接口调用成功,request:{},result:{}",requestStr,resultStr);
}catch (PayException e){ }catch (PayException e){
log.error("抖音支付:抖音订单推送接口调用异常,request:{},error{}", requestStr, e.getMessage()); log.error("抖音支付:抖音订单推送接口调用异常,request:{},error{}", requestStr, e.getMessage());
throw new ServiceException(e.getErrCodeDes());
} }
} }

25
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java

@ -22,6 +22,7 @@ import com.bnyer.pay.bean.vo.ThirdUnifiedOrderVo;
import com.bnyer.pay.constant.KSPayConstants; import com.bnyer.pay.constant.KSPayConstants;
import com.bnyer.pay.enums.EnumPayChannel; import com.bnyer.pay.enums.EnumPayChannel;
import com.bnyer.pay.enums.EnumPayConfigStatus; import com.bnyer.pay.enums.EnumPayConfigStatus;
import com.bnyer.pay.exception.PayException;
import com.bnyer.pay.manager.KsPayManager; import com.bnyer.pay.manager.KsPayManager;
import com.bnyer.pay.mapper.KspayConfigMapper; import com.bnyer.pay.mapper.KspayConfigMapper;
import com.bnyer.pay.service.PayInfoService; import com.bnyer.pay.service.PayInfoService;
@ -53,8 +54,6 @@ public class KSPayStrategy extends AbstractPayStrategy{
private static KspayConfigMapper kspayConfigMapper; private static KspayConfigMapper kspayConfigMapper;
private final static String failThirdCode = "-1";
@Autowired @Autowired
public void setBean(KSPayUtil ksPayUtil, public void setBean(KSPayUtil ksPayUtil,
PayInfoService payInfoService, KspayConfigMapper kspayConfigMapper) { PayInfoService payInfoService, KspayConfigMapper kspayConfigMapper) {
@ -84,6 +83,8 @@ public class KSPayStrategy extends AbstractPayStrategy{
String appId = kspayConfig.getAppid(); String appId = kspayConfig.getAppid();
String backurl = kspayConfig.getBackurl(); String backurl = kspayConfig.getBackurl();
String secret = kspayConfig.getSecret(); String secret = kspayConfig.getSecret();
ThirdUnifiedOrderVo thirdUnifiedOrderVo = new ThirdUnifiedOrderVo();
thirdUnifiedOrderVo.setAppId(appId);
try { try {
//加签验签的参数需要排序 //加签验签的参数需要排序
Map<String, Object> params = new TreeMap<>(); Map<String, Object> params = new TreeMap<>();
@ -126,16 +127,10 @@ public class KSPayStrategy extends AbstractPayStrategy{
log.info("=================================="); log.info("==================================");
log.info("快手预下单result{}", result); log.info("快手预下单result{}", result);
log.info("=================================="); log.info("==================================");
} catch (Exception e) { } catch (PayException e) {
log.error("快手支付:支付异常,payId:{},error{}", bo.getPayId(), e.getMessage()); log.error("快手支付:支付异常,payId:{},error{}", bo.getPayId(), e);
throw new ServiceException(ResponseEnum.PAY_FAILS); thirdUnifiedOrderVo.setThirdCode(e.getErrCode());
} thirdUnifiedOrderVo.setThirdMsg(StringUtils.isNoneBlank(e.getErrCodeDes())?e.getErrCodeDes():e.getCustomErrorMsg());
ThirdUnifiedOrderVo thirdUnifiedOrderVo = new ThirdUnifiedOrderVo();
thirdUnifiedOrderVo.setAppId(appId);
if (StringUtils.isBlank(result) || !result.startsWith("{")){
log.error("快手支付:统一下单接口调用失败,payId:{},error{}", bo.getPayId(), "第三方返回格式有误!");
thirdUnifiedOrderVo.setThirdCode(failThirdCode);
thirdUnifiedOrderVo.setThirdMsg("第三方返回格式有误!");
return thirdUnifiedOrderVo; return thirdUnifiedOrderVo;
} }
log.info("=================================="); log.info("==================================");
@ -144,12 +139,6 @@ public class KSPayStrategy extends AbstractPayStrategy{
JSONObject jsonObject = JSONObject.parseObject(result); JSONObject jsonObject = JSONObject.parseObject(result);
String resultCode = jsonObject.getString("result"); String resultCode = jsonObject.getString("result");
String errorMsg = jsonObject.getString("error_msg"); String errorMsg = jsonObject.getString("error_msg");
if (!"1".equals(resultCode)) {
log.error("快手支付:统一下单接口调用失败,payId:{},error{}", bo.getPayId(),errorMsg);
thirdUnifiedOrderVo.setThirdCode(resultCode);
thirdUnifiedOrderVo.setThirdMsg(errorMsg);
return thirdUnifiedOrderVo;
}
JSONObject data = jsonObject.getJSONObject("order_info"); JSONObject data = jsonObject.getJSONObject("order_info");
String orderNo = data.getString("order_no"); String orderNo = data.getString("order_no");
String orderToken = data.getString("order_info_token"); String orderToken = data.getString("order_info_token");

2
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/exception/PayException.java

@ -20,7 +20,7 @@ public class PayException extends Exception {
/** /**
* 错误代码. * 错误代码.
*/ */
private String errCode; private String errCode = "-1";
/** /**
* 错误代码描述. * 错误代码描述.

13
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/listener/ThirdPayOrderPushConsumer.java

@ -1,5 +1,6 @@
package com.bnyer.pay.listener; package com.bnyer.pay.listener;
import com.bnyer.common.core.enums.ResponseEnum;
import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.rocketmq.constant.RocketMqTopic; import com.bnyer.common.rocketmq.constant.RocketMqTopic;
import com.bnyer.common.rocketmq.domain.BnyerMessage; import com.bnyer.common.rocketmq.domain.BnyerMessage;
@ -30,14 +31,10 @@ public class ThirdPayOrderPushConsumer extends EnhanceMessageHandler implements
@Override @Override
protected void handleMessage(BnyerMessage message) throws Exception { protected void handleMessage(BnyerMessage message) throws Exception {
super.dispatchMessage(message); super.dispatchMessage(message);
try { ThirdPayOrderPushMessage thirdPayOrderPushMessage = message.getObject(ThirdPayOrderPushMessage.class);
ThirdPayOrderPushMessage thirdPayOrderPushMessage = message.getObject(ThirdPayOrderPushMessage.class); PushOrderDto pushOrderDto = new PushOrderDto();
PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setPayId(thirdPayOrderPushMessage.getPayId());
pushOrderDto.setPayId(thirdPayOrderPushMessage.getPayId()); unifiedPayService.pushOrder(pushOrderDto);
unifiedPayService.pushOrder(pushOrderDto);
} catch (ServiceException e) {
log.error("订单推送失败:"+e.getMessage());
}
} }
@Override @Override

2
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/manager/DyPayManager.java

@ -72,7 +72,7 @@ public class DyPayManager {
requestStr = formEntity.getBody(); requestStr = formEntity.getBody();
if (StringUtils.isBlank(resultStr) || !resultStr.startsWith("{")){ if (StringUtils.isBlank(resultStr) || !resultStr.startsWith("{")){
log.info("\n【请求地址】:{}\n【请求数据】:{}\n【响应数据】:{}", url, requestStr, resultStr); log.info("\n【请求地址】:{}\n【请求数据】:{}\n【响应数据】:{}", url, requestStr, resultStr);
throw convertDyException(GsonParser.parse("第三方返回格式有误!")); throw new PayException("第三方返回格式有误!");
} }
JSONObject resultObj = JSONObject.parseObject(resultStr); JSONObject resultObj = JSONObject.parseObject(resultStr);
String errNo = StringUtils.isNotBlank(resultObj.getString("err_no"))?resultObj.getString("err_no"):resultObj.getString("err_code"); String errNo = StringUtils.isNotBlank(resultObj.getString("err_no"))?resultObj.getString("err_no"):resultObj.getString("err_code");

2
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java

@ -361,7 +361,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService {
} }
if (Objects.isNull(payInfo)){ if (Objects.isNull(payInfo)){
log.error("推送失败,订单信息不存在,pushOrderDto:{}",JSON.toJSONString(pushOrderDto)); log.error("推送失败,订单信息不存在,pushOrderDto:{}",JSON.toJSONString(pushOrderDto));
throw new ServiceException("订单信息不存在"); throw new ServiceException(ResponseEnum.NOT_EXIST,"支付订单");
} }
EnumSceneCode enumSceneCode = EnumSceneCode.getSceneCodeByCode(payInfo.getSceneCode()); EnumSceneCode enumSceneCode = EnumSceneCode.getSceneCodeByCode(payInfo.getSceneCode());
PushOrderBo pushOrderBo = null; PushOrderBo pushOrderBo = null;

Loading…
Cancel
Save