Commit 65b619a2 by 程裕兵

feat:pay

parent 4730d1bf
...@@ -25,6 +25,7 @@ public enum FinanceErrorEnums implements BaseBizError { ...@@ -25,6 +25,7 @@ public enum FinanceErrorEnums implements BaseBizError {
NOT_SUPPORT_FILE_TYPE("不支持的文件类型"), NOT_SUPPORT_FILE_TYPE("不支持的文件类型"),
EXIST_PROCESS_APPLY("存在处理中的申请"), EXIST_PROCESS_APPLY("存在处理中的申请"),
EXIST_BIND_RECORD("存在已经绑定的流水"), EXIST_BIND_RECORD("存在已经绑定的流水"),
PAY_FAIL("支付失败"),
; ;
@Getter @Getter
......
package com.jiejing.fitness.finance.service.pay.enums;
import java.util.Arrays;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author chengyubing
* @since 2024/4/19 12:17
*/
@Getter
@AllArgsConstructor
public enum PayFailMessageReplaceEnums {
/**
*
*/
E1("交易失败,结算账户状态异常", "收款账户状态异常,请联系场馆工作人员处理。"),
E2("参数buyerId和buyerLongId不能同时为空", "网络异常支付失败,请重新支付。"),
E3("参数openId不能为空", "网络异常支付失败,请重新支付。"),
E4("特约子商户该产品权限已被冻结,请前往商户平台>产品中心检查后重试", "支付失败,请联系场馆工作人员处理。"),
E5("当前商户需补齐相关资料后,才可进行相应的支付交易,请商户联系对接的微信支付服务商",
"支付失败,请联系场馆工作人员进行微信授权。"),
E6("当前商户需补齐相关资料后,才可进行相应的支付交易,请商户联系对接的支付宝服务商",
"支付失败,请联系场馆工作人员进行支付宝授权。"),
E7("商户不存在", "支付失败,请联系场馆工作人员处理。"),
E8("风控拦截[单笔限额拦截]", "该场馆单笔收款有额度限制,请联系场馆提升收款额度或者分多笔订单支付。"),
E9("风控拦截[单日限额拦截]", "该场馆单日收款有额度限制,请联系场馆提升收款额度。"),
E10("交易失败,请重试cashCode:38 cashDesc: 该商户无此通道入驻记录或商户不可用!",
"支付失败,请联系场馆工作人员处理。"),
OTHER("OTHER", "支付失败,请联系场馆工作人员处理。"),
;
private final String source;
private final String target;
public static String convertBySource(String source) {
if (null == source) {
return OTHER.getTarget();
}
return Arrays.stream(PayFailMessageReplaceEnums.values())
.filter(e -> e.getSource().contains(source) || source.contains(e.getSource())).findFirst()
.orElse(OTHER).getTarget();
}
}
...@@ -34,6 +34,7 @@ import com.jiejing.fitness.finance.service.enums.FinanceErrorEnums; ...@@ -34,6 +34,7 @@ import com.jiejing.fitness.finance.service.enums.FinanceErrorEnums;
import com.jiejing.fitness.finance.service.enums.GlobalConfigEnums; import com.jiejing.fitness.finance.service.enums.GlobalConfigEnums;
import com.jiejing.fitness.finance.service.pay.PayService; import com.jiejing.fitness.finance.service.pay.PayService;
import com.jiejing.fitness.finance.service.pay.convert.PayConvert; import com.jiejing.fitness.finance.service.pay.convert.PayConvert;
import com.jiejing.fitness.finance.service.pay.enums.PayFailMessageReplaceEnums;
import com.jiejing.fitness.finance.service.pay.params.BrandMerchantRefundParams; import com.jiejing.fitness.finance.service.pay.params.BrandMerchantRefundParams;
import com.jiejing.fitness.finance.service.pay.params.NativePayParams; import com.jiejing.fitness.finance.service.pay.params.NativePayParams;
import com.jiejing.fitness.finance.service.pay.params.StudioMerchantPayParams; import com.jiejing.fitness.finance.service.pay.params.StudioMerchantPayParams;
...@@ -185,7 +186,7 @@ public class PayServiceImpl implements PayService { ...@@ -185,7 +186,7 @@ public class PayServiceImpl implements PayService {
StudioVO studio = studioRpcService.getStudio(params.getStudioId()); StudioVO studio = studioRpcService.getStudio(params.getStudioId());
PartyToMerchant relation = partyToMerchantRpService.getByStudioId(studio.getId(), config.getCashier()); PartyToMerchant relation = partyToMerchantRpService.getByStudioId(studio.getId(), config.getCashier());
if (null == relation) { if (null == relation) {
throw new BizException(FinanceErrorEnums.MERCHANT_NOT_OPEN); throw new BizException(FinanceErrorEnums.PAY_FAIL, PayFailMessageReplaceEnums.E7.getTarget());
} }
MerchantVO merchant = merchantRpcService.getByMerchantId(relation.getMerchantId()); MerchantVO merchant = merchantRpcService.getByMerchantId(relation.getMerchantId());
...@@ -197,9 +198,17 @@ public class PayServiceImpl implements PayService { ...@@ -197,9 +198,17 @@ public class PayServiceImpl implements PayService {
studioCashierRecordRpService.insert(record); studioCashierRecordRpService.insert(record);
PayVO vo = payRpcService.pay(request); PayVO vo = payRpcService.pay(request);
this.payCallback(PayConvert.convertEvent(request, vo)); this.payCallback(PayConvert.convertEvent(request, vo));
if (PayStateEnums.FAILED == PayStateEnums.getByCode(vo.getPayState())) {
throw new BizException(FinanceErrorEnums.PAY_FAIL, replaceFailMessage(vo.getFailMsg()));
}
return vo; return vo;
} }
private String replaceFailMessage(String failMsg) {
return PayFailMessageReplaceEnums.convertBySource(failMsg);
}
@Override @Override
public void payCallback(PayEvent event) { public void payCallback(PayEvent event) {
if (!event.getChannelNo().equals(config.getCashier())) { if (!event.getChannelNo().equals(config.getCashier())) {
......
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