Cui Zhi Feng
2024-10-09 d5ac79bab214c69931f9726a437946c2f6cf4ebd
src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java
@@ -276,27 +276,31 @@
        VSP503:微信支付退款
        */
        String trxstatus = params.get("trxstatus");//支付状态
        if("VSP501".equals(trxcode) && "0000".equals(trxstatus)){
            String status = Constants.PAYMENT_STATUS.SUCCESS.name();
            UserPaymentDTO dto = new UserPaymentDTO();
            dto.setOrderId(orderId);
            dto.setTransactionId(transactionId);
            dto.setOutTradeNo(outTradeNo);
            dto.setOriginalXml(originalXml);
            String trxamtStr = params.get("trxamt");//交易金额 单位:分
            log.info("======trxamt: " + trxamtStr);
            dto.setPaymentAmountCallback(trxamtStr);
        if("VSP501".equals(trxcode)){
            if("0000".equals(trxstatus)) {
                String status = Constants.PAYMENT_STATUS.SUCCESS.name();
                UserPaymentDTO dto = new UserPaymentDTO();
                dto.setOrderId(orderId);
                dto.setTransactionId(transactionId);
                dto.setOutTradeNo(outTradeNo);
                dto.setOriginalXml(originalXml);
                String trxamtStr = params.get("trxamt");//交易金额 单位:分
                log.info("======trxamt: " + trxamtStr);
                dto.setPaymentAmountCallback(trxamtStr);
            dto.setStatus(status);
                dto.setStatus(status);
            String orderStatus = Constants.ORDER_STATUS_BACKEND.PAYMENT.name();
                String orderStatus = Constants.ORDER_STATUS_BACKEND.PAYMENT.name();
            saveCallbackInfo(dto, orderStatus);
                saveCallbackInfo(dto, orderStatus);
            return true;
                return true;
            }
        }
        return !("2008".equals(trxstatus) || "2000".equals(trxstatus));
        return !("1001".equals(trxstatus) || StringUtils.isEmpty(trxstatus)
                || "2008".equals(trxstatus)
                || "2000".equals(trxstatus));
    }
    public boolean checkOrderStatusRefund(String outTradeNo) throws Exception {
@@ -319,7 +323,7 @@
        VSP502:微信支付撤销
        VSP503:微信支付退款
        */
        if ("VSP502".equals(trxcode)|| "VSP503".equals(trxcode)){
        if ("VSP502".equals(trxcode) || "VSP503".equals(trxcode)){
            String trxid = params.get("trxid");
            updateOrderRefund(outTradeNo, trxid);
@@ -337,12 +341,28 @@
        }
        SybPayService service = new SybPayService();
        Map<String,String> map = service.close(null, orderId);
        log.info("======关闭订单结果" + toJSONString(map));
        String retcode = map.get("retcode");
        if(!"SUCCESS".equals(retcode)){
            throw new ValidationException("取消订单失败: " + map.get("retmsg"));
        Map<String,String> params = service.query(orderId, up.getTransactionId());
        String trxstatus = params.get("trxstatus");//支付状态
        if("1001".equals(trxstatus) || "3088".equals(trxstatus)){
            //3088-交易未支付(在查询时间区间内未成功支付,如已影响资金24小时内会做差错退款处理)
            //1001:交易不存在
            //直接取消
        } else if (StringUtils.isEmpty(trxstatus)
                || "2008".equals(trxstatus)
                || "2000".equals(trxstatus)) {
            String trxid = params.get("trxid");
            //2008或者2000 : 交易处理中,请查询交易,如果是实时交易(例如刷卡支付,交易撤销,退货),建议每隔一段时间(10秒)查询交易
            Map<String,String> map = service.close(trxid, orderId);
            log.info("======关闭订单结果" + toJSONString(map));
            String retcode = map.get("retcode");
            if(!"SUCCESS".equals(retcode)){
                throw new ValidationException("取消订单失败: " + map.get("retmsg"));
            }
        } else {
            throw new ValidationException("订单不可取消");
        }
        Order order = orderMapper.selectById(orderId);
@@ -425,7 +445,7 @@
        long trxamt = up.getPaymentAmount().longValue();
        String reqsn = orderId;
        String oldtrxid = up.getTransactionId();
        String oldreqsn = null;
        String oldreqsn = orderId;
        SybPayService service = new SybPayService();
        Map<String,String> map = service.cancel(trxamt, reqsn, oldtrxid, oldreqsn);
@@ -452,7 +472,7 @@
        long trxamt = up.getPaymentAmount().longValue();
        String reqsn = orderId;
        String oldtrxid = up.getTransactionId();
        String oldreqsn = null;
        String oldreqsn = orderId;
        SybPayService service = new SybPayService();
        Map<String,String> map = service.refund(trxamt, reqsn, oldtrxid, oldreqsn);