forked from angelo/java-retail-app
## Opt - 手动补偿异常回调
This commit is contained in:
parent
b9e3491a76
commit
8f2e7e34fd
|
@ -2,6 +2,7 @@ package com.hzs.third.pay.controller.manage;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.hzs.common.core.annotation.AccessPermissions;
|
import com.hzs.common.core.annotation.AccessPermissions;
|
||||||
import com.hzs.common.core.annotation.Log;
|
import com.hzs.common.core.annotation.Log;
|
||||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
||||||
|
@ -21,6 +22,7 @@ import com.hzs.common.service.ITransactionCommonService;
|
||||||
import com.hzs.common.util.TransactionUtils;
|
import com.hzs.common.util.TransactionUtils;
|
||||||
import com.hzs.third.pay.param.OnlinePaymentParam;
|
import com.hzs.third.pay.param.OnlinePaymentParam;
|
||||||
import com.hzs.third.pay.param.OnlinePaymentRetryParam;
|
import com.hzs.third.pay.param.OnlinePaymentRetryParam;
|
||||||
|
import com.hzs.third.pay.service.IJdPayService;
|
||||||
import com.hzs.third.pay.service.IPayService;
|
import com.hzs.third.pay.service.IPayService;
|
||||||
import com.hzs.third.pay.service.ITOnlinePaymentService;
|
import com.hzs.third.pay.service.ITOnlinePaymentService;
|
||||||
import com.hzs.third.pay.vo.OnlinePaymentVO;
|
import com.hzs.third.pay.vo.OnlinePaymentVO;
|
||||||
|
@ -48,6 +50,8 @@ public class OnlinePaymentController extends BaseController {
|
||||||
private ITOnlinePaymentService itOnlinePaymentService;
|
private ITOnlinePaymentService itOnlinePaymentService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IPayService iPayService;
|
private IPayService iPayService;
|
||||||
|
@Autowired
|
||||||
|
private IJdPayService iJdPayService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ITransactionCommonService iTransactionCommonService;
|
private ITransactionCommonService iTransactionCommonService;
|
||||||
|
@ -144,4 +148,16 @@ public class OnlinePaymentController extends BaseController {
|
||||||
return toAjax(iPayService.retryHandle(tOnlinePayment, false));
|
return toAjax(iPayService.retryHandle(tOnlinePayment, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 补偿支付回调
|
||||||
|
*
|
||||||
|
* @param param 业务重试入参
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Log(module = EOperationModule.ONLINE_PAY_DETAIL, business = EOperationBusiness.ONLINE_PAY_DETAIL, method = EOperationMethod.SUBMIT)
|
||||||
|
@GetMapping("/compensationCallBack")
|
||||||
|
public AjaxResult compensationCallBack(@RequestParam("businessCode") String businessCode) {
|
||||||
|
return iJdPayService.compensationCallBack(businessCode);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.hzs.third.pay.jdpay.dto;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class JdPayQueryOrderRequest implements Serializable {
|
||||||
|
/**
|
||||||
|
* 商户订单号
|
||||||
|
*/
|
||||||
|
private String outTradeNo;
|
||||||
|
|
||||||
|
|
||||||
|
public String getOutTradeNo() {
|
||||||
|
return outTradeNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOutTradeNo(String outTradeNo) {
|
||||||
|
this.outTradeNo = outTradeNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "{ \"outTradeNo\":\"" + outTradeNo + "\""
|
||||||
|
+ "}"
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,197 @@
|
||||||
|
package com.hzs.third.pay.jdpay.dto;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class JdPayQueryOrderResponse implements Serializable {
|
||||||
|
/**
|
||||||
|
* 京东交易订单号
|
||||||
|
*/
|
||||||
|
private String tradeNo;
|
||||||
|
/**
|
||||||
|
* 商户订单号
|
||||||
|
*/
|
||||||
|
private String outTradeNo;
|
||||||
|
/**
|
||||||
|
* 订单总金额
|
||||||
|
*/
|
||||||
|
private String tradeAmount;
|
||||||
|
/**
|
||||||
|
* 支付完成时间
|
||||||
|
*/
|
||||||
|
private String finishDate;
|
||||||
|
/**
|
||||||
|
* 交易类型
|
||||||
|
*/
|
||||||
|
private String tradeType;
|
||||||
|
/**
|
||||||
|
* 交易状态
|
||||||
|
*/
|
||||||
|
private String tradeStatus;
|
||||||
|
/**
|
||||||
|
* 回传字段
|
||||||
|
*/
|
||||||
|
private String returnParams;
|
||||||
|
/**
|
||||||
|
* 商户用户标识
|
||||||
|
*/
|
||||||
|
private String userId;
|
||||||
|
/**
|
||||||
|
* 优惠金额
|
||||||
|
*/
|
||||||
|
private String discountAmount;
|
||||||
|
/**
|
||||||
|
* 支付工具
|
||||||
|
*/
|
||||||
|
private String payTool;
|
||||||
|
/**
|
||||||
|
* ]
|
||||||
|
* 掩码卡号
|
||||||
|
*/
|
||||||
|
private String maskCardNo;
|
||||||
|
/**
|
||||||
|
* 卡类型
|
||||||
|
*/
|
||||||
|
private String cardType;
|
||||||
|
/**
|
||||||
|
* 银行编码
|
||||||
|
*/
|
||||||
|
private String bankCode;
|
||||||
|
/**
|
||||||
|
* 白条分期数
|
||||||
|
*/
|
||||||
|
private String installmentNum;
|
||||||
|
|
||||||
|
|
||||||
|
public String getTradeNo() {
|
||||||
|
return tradeNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTradeNo(String tradeNo) {
|
||||||
|
this.tradeNo = tradeNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOutTradeNo() {
|
||||||
|
return outTradeNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOutTradeNo(String outTradeNo) {
|
||||||
|
this.outTradeNo = outTradeNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTradeAmount() {
|
||||||
|
return tradeAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTradeAmount(String tradeAmount) {
|
||||||
|
this.tradeAmount = tradeAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFinishDate() {
|
||||||
|
return finishDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFinishDate(String finishDate) {
|
||||||
|
this.finishDate = finishDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTradeType() {
|
||||||
|
return tradeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTradeType(String tradeType) {
|
||||||
|
this.tradeType = tradeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTradeStatus() {
|
||||||
|
return tradeStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTradeStatus(String tradeStatus) {
|
||||||
|
this.tradeStatus = tradeStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReturnParams() {
|
||||||
|
return returnParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReturnParams(String returnParams) {
|
||||||
|
this.returnParams = returnParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getUserId() {
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserId(String userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDiscountAmount() {
|
||||||
|
return discountAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDiscountAmount(String discountAmount) {
|
||||||
|
this.discountAmount = discountAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPayTool() {
|
||||||
|
return payTool;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPayTool(String payTool) {
|
||||||
|
this.payTool = payTool;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMaskCardNo() {
|
||||||
|
return maskCardNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaskCardNo(String maskCardNo) {
|
||||||
|
this.maskCardNo = maskCardNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCardType() {
|
||||||
|
return cardType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCardType(String cardType) {
|
||||||
|
this.cardType = cardType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBankCode() {
|
||||||
|
return bankCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBankCode(String bankCode) {
|
||||||
|
this.bankCode = bankCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInstallmentNum() {
|
||||||
|
return installmentNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInstallmentNum(String installmentNum) {
|
||||||
|
this.installmentNum = installmentNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "{\"tradeNo\":\"" + tradeNo + "\""
|
||||||
|
+ ", \"outTradeNo\":\"" + outTradeNo + "\""
|
||||||
|
+ ", \"tradeAmount\":\"" + tradeAmount + "\""
|
||||||
|
+ ", \"finishDate\":\"" + finishDate + "\""
|
||||||
|
+ ", \"tradeType\":\"" + tradeType + "\""
|
||||||
|
+ ", \"tradeStatus\":\"" + tradeStatus + "\""
|
||||||
|
+ ", \"returnParams\":\"" + returnParams + "\""
|
||||||
|
+ ", \"userId\":\"" + userId + "\""
|
||||||
|
+ ", \"discountAmount\":\"" + discountAmount + "\""
|
||||||
|
+ ", \"payTool\":\"" + payTool + "\""
|
||||||
|
+ ", \"maskCardNo\":\"" + maskCardNo + "\""
|
||||||
|
+ ", \"cardType\":\"" + cardType + "\""
|
||||||
|
+ ", \"bankCode\":\"" + bankCode + "\""
|
||||||
|
+ ", \"installmentNum\":\"" + installmentNum + "\""
|
||||||
|
+ "}"
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
|
@ -56,9 +56,9 @@ public class JdPay {
|
||||||
// * @return JdPayQueryOrderResponse 返回数据
|
// * @return JdPayQueryOrderResponse 返回数据
|
||||||
// * @throws Exception
|
// * @throws Exception
|
||||||
// */
|
// */
|
||||||
// public JdPayQueryOrderResponse queryOrder(JdPayQueryOrderRequest request) throws Exception {
|
public JdPayQueryOrderResponse queryOrder(JdPayQueryOrderRequest request) throws Exception {
|
||||||
// return this.baseExecute(JdPayConstant.TRADE_QUERY_URL, request, JdPayQueryOrderResponse.class);
|
return this.baseExecute(JdPayConstant.TRADE_QUERY_URL, request, JdPayQueryOrderResponse.class);
|
||||||
// }
|
}
|
||||||
//
|
//
|
||||||
// /**
|
// /**
|
||||||
// * 作用:代扣
|
// * 作用:代扣
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.hzs.third.pay.service;
|
||||||
|
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.core.enums.EDataSource;
|
import com.hzs.common.core.enums.EDataSource;
|
||||||
|
import com.hzs.common.core.web.domain.AjaxResult;
|
||||||
import com.hzs.common.domain.third.pay.TOnlinePayment;
|
import com.hzs.common.domain.third.pay.TOnlinePayment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,4 +19,12 @@ public interface IJdPayService {
|
||||||
*/
|
*/
|
||||||
R<String> cashRegister(TOnlinePayment onlinePayment, EDataSource dataSource);
|
R<String> cashRegister(TOnlinePayment onlinePayment, EDataSource dataSource);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收银台支付
|
||||||
|
*
|
||||||
|
* @param onlinePayment
|
||||||
|
* @param dataSource
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
AjaxResult compensationCallBack(String businessCode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,12 @@ package com.hzs.third.pay.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.hzs.common.core.config.BdConfig;
|
import com.hzs.common.core.config.BdConfig;
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.core.enums.EDataSource;
|
import com.hzs.common.core.enums.*;
|
||||||
import com.hzs.common.core.enums.EEnv;
|
|
||||||
import com.hzs.common.core.utils.DateUtils;
|
import com.hzs.common.core.utils.DateUtils;
|
||||||
|
import com.hzs.common.core.web.domain.AjaxResult;
|
||||||
import com.hzs.common.domain.third.pay.TOnlinePayment;
|
import com.hzs.common.domain.third.pay.TOnlinePayment;
|
||||||
import com.hzs.common.domain.third.pay.TOnlinePaymentSepAcc;
|
import com.hzs.common.domain.third.pay.TOnlinePaymentSepAcc;
|
||||||
import com.hzs.common.domain.third.pay.TOnlinePaymentSepAccD;
|
import com.hzs.common.domain.third.pay.TOnlinePaymentSepAccD;
|
||||||
|
@ -15,16 +16,10 @@ import com.hzs.third.pay.config.JdPayBankProperties;
|
||||||
import com.hzs.third.pay.config.JdPayConfig;
|
import com.hzs.third.pay.config.JdPayConfig;
|
||||||
import com.hzs.third.pay.config.JdPaySeparateAccountConfig;
|
import com.hzs.third.pay.config.JdPaySeparateAccountConfig;
|
||||||
import com.hzs.third.pay.config.JdPayWechatAlipayProperties;
|
import com.hzs.third.pay.config.JdPayWechatAlipayProperties;
|
||||||
import com.hzs.third.pay.jdpay.dto.JdPayAggregateCreateOrderRequest;
|
import com.hzs.third.pay.jdpay.dto.*;
|
||||||
import com.hzs.third.pay.jdpay.dto.JdPayAggregateCreateOrderResponse;
|
|
||||||
import com.hzs.third.pay.jdpay.dto.JdPayDivisionAccount;
|
|
||||||
import com.hzs.third.pay.jdpay.dto.JdPayDivisionAccountTradeInfo;
|
|
||||||
import com.hzs.third.pay.jdpay.sdk.JdPay;
|
import com.hzs.third.pay.jdpay.sdk.JdPay;
|
||||||
import com.hzs.third.pay.jdpay.util.GsonUtil;
|
import com.hzs.third.pay.jdpay.util.GsonUtil;
|
||||||
import com.hzs.third.pay.service.IJdPayService;
|
import com.hzs.third.pay.service.*;
|
||||||
import com.hzs.third.pay.service.ITOnlineCardService;
|
|
||||||
import com.hzs.third.pay.service.ITOnlinePaymentSepAccService;
|
|
||||||
import com.hzs.third.pay.service.ITOnlinePaymentService;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
@ -35,6 +30,7 @@ import java.math.BigDecimal;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -59,6 +55,8 @@ public class JdPayServiceImpl implements IJdPayService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ITOnlinePaymentService itOnlinePaymentService;
|
private ITOnlinePaymentService itOnlinePaymentService;
|
||||||
|
@Autowired
|
||||||
|
private IPayService iPayService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private JdPayWechatAlipayProperties jdPayWechatAlipayProperties;
|
private JdPayWechatAlipayProperties jdPayWechatAlipayProperties;
|
||||||
|
@ -196,4 +194,94 @@ public class JdPayServiceImpl implements IJdPayService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AjaxResult compensationCallBack(String businessCode) {
|
||||||
|
LambdaQueryWrapper<TOnlinePayment> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(TOnlinePayment::getBusinessCode, businessCode);
|
||||||
|
queryWrapper.eq(TOnlinePayment::getDelFlag, EDelFlag.UN_DELETE.getValue());
|
||||||
|
TOnlinePayment tOnlinePayment = itOnlinePaymentService.getOne(queryWrapper, false);
|
||||||
|
if(ObjectUtil.isEmpty(tOnlinePayment)){
|
||||||
|
return AjaxResult.error("订单不存在");
|
||||||
|
}
|
||||||
|
JdPayQueryOrderRequest request = new JdPayQueryOrderRequest();
|
||||||
|
request.setOutTradeNo(tOnlinePayment.getBusinessCode());
|
||||||
|
JdPayQueryOrderResponse response = null;
|
||||||
|
try {
|
||||||
|
response = jdPay.queryOrder(request);
|
||||||
|
if (ObjectUtil.isEmpty(response.getTradeNo()) || EPayStatus.PAID.getValue() == tOnlinePayment.getPayStatus()) {
|
||||||
|
log.error("支付信息不存在或已支付");
|
||||||
|
return AjaxResult.success("已支付订单 无需补偿回调!");
|
||||||
|
}
|
||||||
|
log.info("queryOrder : {}", JSONUtil.toJsonStr(response));
|
||||||
|
{
|
||||||
|
// 支付成功处理
|
||||||
|
|
||||||
|
// 商户订单号
|
||||||
|
String payNumber = response.getTradeNo();
|
||||||
|
// 渠道流水号
|
||||||
|
String channelNumber = "";
|
||||||
|
// 支付完成时间
|
||||||
|
Date payTime = DateUtils.parseDateOne(response.getFinishDate(), DateUtils.YAMMERERS);
|
||||||
|
|
||||||
|
// 回调订单编号
|
||||||
|
String thirdOrderCode = response.getOutTradeNo();
|
||||||
|
// 订单编号
|
||||||
|
String acqOrderId = "compensationCallBack";
|
||||||
|
|
||||||
|
// 订单金额
|
||||||
|
int tradeAmount = Integer.parseInt(response.getTradeAmount());
|
||||||
|
BigDecimal payMoney = new BigDecimal(tradeAmount).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
|
||||||
|
Integer payType = convertPayType(response.getPayTool());
|
||||||
|
// 支付后续业务处理
|
||||||
|
if (iPayService.notifyHandle(tOnlinePayment.getBusinessType().toString() , thirdOrderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.JD, channelNumber, payType, acqOrderId)) {
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 京东收银台处理成功返回
|
||||||
|
*/
|
||||||
|
private static final String SUCCESS = "SUCCESS";
|
||||||
|
/**
|
||||||
|
* 京东收银台处理失败返回
|
||||||
|
*/
|
||||||
|
private static final String ERROR = "ERROR";
|
||||||
|
private Integer convertPayType(String payName){
|
||||||
|
Integer result = EPayType.WECHAT.getValue();
|
||||||
|
switch (payName){
|
||||||
|
case "XJK":
|
||||||
|
result = EPayType.MINI_TREASURY.getValue();
|
||||||
|
break;
|
||||||
|
case "JIOU":
|
||||||
|
result = EPayType.CREDIT_LINE.getValue();
|
||||||
|
break;
|
||||||
|
case "SJIOU":
|
||||||
|
result = EPayType.SUPER_CREDIT_LINE.getValue();
|
||||||
|
break;
|
||||||
|
case "ACCT":
|
||||||
|
result = EPayType.WALLET_BALANCE.getValue();
|
||||||
|
break;
|
||||||
|
case "EXPR":
|
||||||
|
result = EPayType.BANK_CARD.getValue();
|
||||||
|
break;
|
||||||
|
case "WX":
|
||||||
|
result = EPayType.WECHAT.getValue();
|
||||||
|
break;
|
||||||
|
case "ALIPAY":
|
||||||
|
result = EPayType.ALIPAY.getValue();
|
||||||
|
break;
|
||||||
|
case "YSF":
|
||||||
|
result = EPayType.CLOUD_PAY.getValue();
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,12 @@ package com.hzs.third.pay.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.hzs.common.core.constant.CacheConstants;
|
||||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||||
import com.hzs.common.core.constant.RabbitMqConstants;
|
import com.hzs.common.core.constant.RabbitMqConstants;
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.core.enums.*;
|
import com.hzs.common.core.enums.*;
|
||||||
|
import com.hzs.common.core.service.RedisService;
|
||||||
import com.hzs.common.domain.third.pay.TOnlinePayment;
|
import com.hzs.common.domain.third.pay.TOnlinePayment;
|
||||||
import com.hzs.member.account.IMemberTradeServiceApi;
|
import com.hzs.member.account.IMemberTradeServiceApi;
|
||||||
import com.hzs.retail.sale.IRetailOrderServiceApi;
|
import com.hzs.retail.sale.IRetailOrderServiceApi;
|
||||||
|
@ -34,6 +36,8 @@ public class PayServiceImpl implements IPayService {
|
||||||
private ITOnlinePaymentService itOnlinePaymentService;
|
private ITOnlinePaymentService itOnlinePaymentService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private RabbitTemplate rabbitTemplate;
|
private RabbitTemplate rabbitTemplate;
|
||||||
|
@Autowired
|
||||||
|
private RedisService redisService;
|
||||||
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IRetailOrderServiceApi iRetailOrderServiceApi;
|
IRetailOrderServiceApi iRetailOrderServiceApi;
|
||||||
|
@ -119,8 +123,11 @@ public class PayServiceImpl implements IPayService {
|
||||||
log.error("支付信息不存在或已支付");
|
log.error("支付信息不存在或已支付");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
String redisKey = CacheConstants.ONLINE_PAY_KEY + businessCode;
|
||||||
try {
|
try {
|
||||||
|
if(!redisService.lockKeyOnce(redisKey, 10)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (!PayUtil.checkAmount(onlinePayment.getBusinessMoney(), payMoney)) {
|
if (!PayUtil.checkAmount(onlinePayment.getBusinessMoney(), payMoney)) {
|
||||||
// 业务金额 大于 实际支付金额
|
// 业务金额 大于 实际支付金额
|
||||||
log.error("业务金额大于实际支付金额,支付编号:{}, 支付金额:{}", onlinePayment.getPaymentCode(), payMoney);
|
log.error("业务金额大于实际支付金额,支付编号:{}, 支付金额:{}", onlinePayment.getPaymentCode(), payMoney);
|
||||||
|
@ -157,6 +164,8 @@ public class PayServiceImpl implements IPayService {
|
||||||
.set(TOnlinePayment::getCallbackStatus, ECallbackStatus.FAIL.getValue())
|
.set(TOnlinePayment::getCallbackStatus, ECallbackStatus.FAIL.getValue())
|
||||||
.set(TOnlinePayment::getCallbackInfo, e.getMessage())
|
.set(TOnlinePayment::getCallbackInfo, e.getMessage())
|
||||||
);
|
);
|
||||||
|
} finally {
|
||||||
|
redisService.unlock(redisKey);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class OnlinePaymentVO {
|
||||||
/**
|
/**
|
||||||
* 支付状态(0=未支付,1=已支付)
|
* 支付状态(0=未支付,1=已支付)
|
||||||
*/
|
*/
|
||||||
@JsonIgnore
|
// @JsonIgnore
|
||||||
@Transaction(transactionKey = EnumsPrefixConstants.PAY_STATUS)
|
@Transaction(transactionKey = EnumsPrefixConstants.PAY_STATUS)
|
||||||
private Integer payStatus;
|
private Integer payStatus;
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue