Bläddra i källkod

支付与收款

chao 3 år sedan
förälder
incheckning
066d1e970e

+ 51 - 57
src/main/java/com/caimei365/order/service/impl/PayNonOrderServiceImpl.java

@@ -13,6 +13,7 @@ import com.caimei365.order.model.po.DiscernReceiptPo;
 import com.caimei365.order.model.po.OrderReceiptRelationPo;
 import com.caimei365.order.model.po.SplitAccountPo;
 import com.caimei365.order.model.po.UserVipPo;
+import com.caimei365.order.model.vo.OrderPayLinkVo;
 import com.caimei365.order.service.PayNonOrderService;
 import com.caimei365.order.utils.MathUtil;
 import com.caimei365.order.utils.PayUtil;
@@ -266,7 +267,8 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         // 附加数据,下单时若有传输则原样返回,下单时为空,则不返回该数据
         String attach = json.getString("attach");
         // 订单金额,以元为单位
-        BigDecimal amount = json.getBigDecimal("amount");
+        Double amount = json.getDouble("amount");
+        String payFormData = json.toJSONString();
         log.info("【二手发布支付异步回调】>>>>>>>>>>>>>>支付订单状态:" + orderStatus);
         if ("FAILED".equals(orderStatus)) {
             return "支付失败";
@@ -277,9 +279,7 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         Integer productId = Integer.valueOf(split[0]);
         // 支付类型
         String payType = split[1];
-        double payAmount = amount.doubleValue();
-        String payFormData = json.toJSONString();
-        payOrderMapper.updateSeconHandDetail(productId, payType, payAmount, payFormData);
+        payOrderMapper.updateSeconHandDetail(productId, payType, amount, payFormData);
         //修改分账付款状态
         payOrderMapper.updateSplitAccountByPay(mbOrderId);
         return "SUCCESS";
@@ -444,7 +444,9 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
             //商品名称
             String product = "采美订单" + orderId;
             json.put("product", product);
-            String attach = payParam.getVipId() + "," + payParam.getUserId() + "," + payParam.getVipRecordId() + "," + payParam.getPayWay() + "," + payParam.getPayType();
+            //支付类型
+            String payType = PayUtil.getPayTypeId(payParam.getPayType(), payParam.getUserType());
+            String attach = payParam.getVipId() + "," + payParam.getUserId() + "," + payParam.getVipRecordId() + "," + payType;
             json.put("attach", attach);
             // 升级超级会员默认公账
             List<Map<String, String>> list = new ArrayList<>();
@@ -499,6 +501,7 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         splitAccount.setPayStatus(0);
         // 保存分账详情
         payOrderMapper.insertSplitAccount(splitAccount);
+        log.info("【升级超级会员支付成功!】>>>>>>>>>>>vipRecordId:" + payParam.getVipRecordId() + ",data:" +data.toJSONString());
         return ResponseJson.success(result);
     }
 
@@ -527,7 +530,8 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         // 商户唯一订单号
         String orderRequestNo = json.getString("orderId");
         // 金额,以元为单位
-        BigDecimal amount = json.getBigDecimal("amount");
+        Double amount = json.getDouble("amount");
+        String payFormData = json.toJSONString();
         log.info("【升级超级会员异步回调】>>>>>>>>>>>支付订单状态:" + orderStatus);
         if ("FAILED".equals(orderStatus)) {
             return "支付失败";
@@ -543,45 +547,7 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         // 购买历史记录Id
         Integer recordId = Integer.valueOf(split[2]);
         // 支付方式
-        String payWay = split[3];
-        // 区分微信支付
-        String payType = split[4];
-        // 金额
-        double payAmount = amount.doubleValue();
-        String payFormData = json.toJSONString();
-        Date date = new Date();
-        String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
-        // 保存收款记录
-        DiscernReceiptPo discernReceipt = new DiscernReceiptPo();
-        discernReceipt.setPayWay(1);
-        discernReceipt.setPayType(Integer.valueOf(payType));
-        discernReceipt.setReceiptType(6);
-        discernReceipt.setReceiptStatus(3);
-        discernReceipt.setReceiptAmount(payAmount);
-        discernReceipt.setConfirmType(4);
-        discernReceipt.setRePayFlag(1);
-        discernReceipt.setFormData(payFormData);
-        discernReceipt.setReceiptDate(curDateStr);
-        discernReceipt.setConfirmDate(curDateStr);
-        discernReceipt.setReviewDate(curDateStr);
-        discernReceipt.setUpdateDate(curDateStr);
-        discernReceipt.setDelFlag(0);
-        // 保存 收款记录
-        baseMapper.insertDiscernReceipt(discernReceipt);
-        log.info("【升级超级会员异步回调】>>>>>>>>>>>>>>保存识别款项(insert[cm_discern_receipt])id:" + discernReceipt.getId() + ",vipRecordId:" + recordId);
-        // 收款项和订单关系表
-        OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
-        relation.setReceiptId(discernReceipt.getId());
-        relation.setVipRecordId(recordId);
-        relation.setAssociateAmount(payAmount);
-        relation.setMbOrderId(mbOrderId);
-        relation.setOrderRequestNo(orderRequestNo);
-        relation.setSplitStatus(1);
-        relation.setRelationType(3);
-        relation.setDelFlag(0);
-        // 保存 收款项和订单关系
-        baseMapper.insertOrderReceiptRelation(relation);
-        log.info("【升级超级会员异步回调】>>>>>>>>>>>收款项和购买历史关系(insert[cm_receipt_order_relation])id:" + relation.getId() + ",vipRecordId:" + recordId);
+        String payType = split[3];
         //超级会员数据库修改
         UserVipPo userVip = new UserVipPo();
         UserVipPo dbUserVip = payOrderMapper.getUserVipInfo(userId);
@@ -614,19 +580,47 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         record.setBeginTime(beginTime);
         record.setEndTime(cal.getTime());
         record.setPayWay(1);
-        if ("WEIXIN".equals(payWay)){
-            record.setPayType(8);
-            if ("MINIAPP_WEIXIN".equals(payType)) {
-                record.setPayType(15);
-            } else if ("JSAPI_WEIXIN".equals(payType)) {
-                record.setPayType(13);
-            }
-        } else if ("ALIPAY".equals(payWay)) {
-            record.setPayType(7);
-        }else if("UNIONPAY".equals(payWay)) {
-            record.setPayType(12);
-        }
+        record.setPayType(Integer.valueOf(payType));
         payOrderMapper.updateVipPackageRecord(recordId);
+        // 修改支付链接状态
+        OrderPayLinkVo orderPayLink = payOrderMapper.getVipPayLink(recordId, amount);
+        if (null != orderPayLink && ("12".equals(payType) || "17".equals(payType))) {
+            orderPayLink.setPayStatus(1);
+            payOrderMapper.updateOrderPayLinkStatus(orderPayLink);
+        }
+        Date date = new Date();
+        String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
+        // 保存收款记录
+        DiscernReceiptPo discernReceipt = new DiscernReceiptPo();
+        discernReceipt.setPayWay(1);
+        discernReceipt.setPayType(record.getPayType());
+        discernReceipt.setReceiptType(6);
+        discernReceipt.setReceiptStatus(3);
+        discernReceipt.setReceiptAmount(amount);
+        discernReceipt.setConfirmType(4);
+        discernReceipt.setRePayFlag(1);
+        discernReceipt.setFormData(payFormData);
+        discernReceipt.setReceiptDate(curDateStr);
+        discernReceipt.setConfirmDate(curDateStr);
+        discernReceipt.setReviewDate(curDateStr);
+        discernReceipt.setUpdateDate(curDateStr);
+        discernReceipt.setDelFlag(0);
+        // 保存 收款记录
+        baseMapper.insertDiscernReceipt(discernReceipt);
+        log.info("【升级超级会员异步回调】>>>>>>>>>>>>>>保存识别款项(insert[cm_discern_receipt])id:" + discernReceipt.getId() + ",vipRecordId:" + recordId);
+        // 收款项和订单关系表
+        OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
+        relation.setReceiptId(discernReceipt.getId());
+        relation.setVipRecordId(recordId);
+        relation.setAssociateAmount(amount);
+        relation.setMbOrderId(mbOrderId);
+        relation.setOrderRequestNo(orderRequestNo);
+        relation.setSplitStatus(1);
+        relation.setRelationType(3);
+        relation.setDelFlag(0);
+        // 保存 收款项和订单关系
+        baseMapper.insertOrderReceiptRelation(relation);
+        log.info("【升级超级会员异步回调】>>>>>>>>>>>收款项和购买历史关系(insert[cm_receipt_order_relation])id:" + relation.getId() + ",vipRecordId:" + recordId);
         //修改分账付款状态
         payOrderMapper.updateSplitAccountByPay(mbOrderId);
         return "SUCCESS";