Преглед изворни кода

1、红包根据返回code值返回正确提示

yys пре 3 дана
родитељ
комит
9bb7e056cd

+ 103 - 2
fs-user-app/src/main/java/com/fs/app/controller/course/CourseFsUserController.java

@@ -30,6 +30,7 @@ import com.fs.his.enums.FsUserOperationEnum;
 import com.fs.his.service.IFsUserService;
 import com.fs.im.dto.OpenImResponseDTO;
 import com.fs.im.service.OpenIMService;
+import com.github.binarywang.wxpay.exception.WxPayException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
@@ -170,7 +171,17 @@ public class CourseFsUserController extends AppBaseController {
             param.setUserId(userId);
         }
         logger.info("zyp \n【发放奖励】2:{}",param);
-        return courseVideoService.sendRewardByFsUser(param);
+        try {
+            return courseVideoService.sendRewardByFsUser(param);
+        } catch (Exception e) {
+            if (e.getCause() instanceof WxPayException) {
+                WxPayException wxEx = (WxPayException) e.getCause();
+                logger.error("【发放奖励】微信支付转账异常(包装),用户ID:{},错误码:{},错误信息:{}", param.getUserId(), wxEx.getErrCode(), wxEx.getErrCodeDes(), e);
+                return R.error(resolveWxPayTransferErrorMsg(wxEx));
+            }
+            logger.error("【发放奖励】奖励发放异常,用户ID:{}", param.getUserId(), e);
+            return R.error("奖励发放失败,请稍后重试");
+        }
     }
 
 
@@ -202,7 +213,97 @@ public class CourseFsUserController extends AppBaseController {
             return R.error("请先登录!");
         }
         param.setUserId(Long.parseLong(userId));
-        return R.ok(courseVideoService.withdrawal(param));
+        try {
+            return R.ok(courseVideoService.withdrawal(param));
+        } catch (Exception e) {
+            if (e.getCause() instanceof WxPayException) {
+                WxPayException wxEx = (WxPayException) e.getCause();
+                logger.error("【积分提现】微信支付转账异常(包装),用户ID:{},错误码:{},错误信息:{}", param.getUserId(), wxEx.getErrCode(), wxEx.getErrCodeDes(), e);
+                return R.error(resolveWxPayTransferErrorMsg(wxEx));
+            }
+            logger.error("【积分提现】提现异常,用户ID:{}", param.getUserId(), e);
+            return R.error("提现失败,请稍后重试");
+        }
+    }
+
+    /**
+     * 根据微信支付转账接口错误码解析用户可读的错误信息
+     */
+    private String resolveWxPayTransferErrorMsg(WxPayException e) {
+        String errCode = e.getErrCode();
+        String customErrorMsg = e.getCustomErrorMsg();
+        // 优先处理自定义错误信息(如"商户运营账户资金不足")
+        if (customErrorMsg != null && !customErrorMsg.isEmpty()) {
+            if (customErrorMsg.contains("资金不足") || customErrorMsg.contains("余额不足")) {
+                return "商户账户余额不足,请联系管理员充值";
+            }
+            return customErrorMsg;
+        }
+        if (errCode == null || errCode.isEmpty()) {
+            return "微信支付服务异常,请稍后重试";
+        }
+        switch (errCode) {
+            // 系统级错误
+            case "SYSTEMERROR":
+                return "微信支付系统繁忙,请稍后重试";
+            case "INVALID_REQUEST":
+                return "请求参数不合法,请联系管理员";
+            case "PARAM_ERROR":
+                return "请求参数错误,请联系管理员";
+            case "NOTENOUGH":
+                return "商户账户余额不足,请联系管理员充值";
+            case "ORDERNOTEXIST":
+                return "转账订单不存在";
+            case "ORDER_PAID":
+                return "转账订单已支付,请勿重复操作";
+            case "FREQUENCY_LIMITED":
+                return "操作过于频繁,请稍后再试";
+            case "EXCEED_QTY_LIMIT":
+                return "超过转账数量限制,请稍后再试";
+            case "EXCEED_QUOTA_LIMIT":
+                return "超过转账额度限制,请稍后再试";
+            case "PAY_FAIL":
+                return "转账失败,请稍后重试";
+            case "PAYER_ACCOUNT_ERROR":
+                return "付款账户异常,请联系管理员";
+            case "PAYEE_ACCOUNT_ERROR":
+            case "PAYEE_NOT_EXIST":
+                return "收款账户异常,请重新授权后重试";
+            case "TRANSFER_RISK":
+                return "转账存在风险,请稍后重试";
+            case "REALNAME_CHECK_ERROR":
+                return "收款人实名信息不匹配,请核实后重试";
+            case "OPENID_ERROR":
+                return "收款人openid不正确,请重新授权";
+            case "APPID_OPENID_ERROR":
+                return "appid与openid不匹配,请重新授权";
+            case "MCH_NOT_EXISTS":
+                return "商户号不存在,请联系管理员";
+            case "NO_AUTH":
+                return "商户无此接口权限,请联系管理员";
+            case "NOT_PERMISSION":
+                return "商户无此接口权限,请联系管理员";
+            case "MCH_ERROR":
+                return "商户配置异常,请联系管理员";
+            case "SIGN_ERROR":
+                return "签名错误,请联系管理员";
+            case "RECV_ACCOUNT_NOT_ALLOWED":
+                return "收款账户不允许,请核实后重试";
+            case "PAYEE_USER_INFO_ERROR":
+                return "收款人信息错误,请重新授权";
+            case "PAYER_USER_INFO_ERROR":
+                return "付款方信息错误,请联系管理员";
+            case "USER_BANNED":
+                return "收款账号被限制,请联系客服";
+            case "TRANSFER_QUOTA_OVER_LIMIT":
+                return "转账金额超限,请联系管理员";
+            default:
+                String errCodeDes = e.getErrCodeDes();
+                if (errCodeDes != null && !errCodeDes.isEmpty()) {
+                    return "支付失败:" + errCodeDes;
+                }
+                return "微信支付服务异常,请稍后重试";
+        }
     }
 
 }