瀏覽代碼

临时分账处理,临时代码

chao 3 年之前
父節點
當前提交
c12495824e

+ 20 - 0
src/main/java/com/caimei365/order/controller/PayOrderApi.java

@@ -340,4 +340,24 @@ public class PayOrderApi {
         return payOrderService.delayedSplittingCallback(data);
     }
 
+//    /**
+//     * 手动临时分账
+//     */
+//    @PostMapping("/temp/split")
+//    public String temporarySplitting(){
+//        return payOrderService.temporarySplitting();
+//    }
+//
+//    /**
+//     * 手动临时分账异步通知回调
+//     */
+//    @ApiOperation("手动临时分账异步通知回调")
+//    @GetMapping("/temp/split/callback")
+//    public String tempSplittingCallback(String data) {
+//        if (StringUtils.isBlank(data)) {
+//            return "回调参数失败";
+//        }
+//        return payOrderService.tempSplittingCallback(data);
+//    }
+
 }

+ 9 - 1
src/main/java/com/caimei365/order/service/PayOrderService.java

@@ -136,7 +136,6 @@ public interface PayOrderService {
      * 二手发布支付回调
      */
     String paymentSecondCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException;
-
     /**
      * 延时分账
      */
@@ -145,4 +144,13 @@ public interface PayOrderService {
      * 延时分账异步通知回调
      */
     String delayedSplittingCallback(String data);
+//    /**
+//     * 手动临时分账
+//     */
+//    String temporarySplitting();
+//    /**
+//     * 手动临时分账异步通知回调
+//     */
+//    String tempSplittingCallback(String data);
+
 }

+ 137 - 2
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -1179,8 +1179,8 @@ public class PayOrderServiceImpl implements PayOrderService {
                     json.put("mbOrderId", orderRelation.getMbOrderId());
                     json.put("time", time);
                     json.put("splitBillDetail", parameters);
-                    json.put("notifyUrl", notifyUrl);
-                    log.info("回调接口>>>" + notifyUrl);
+                    json.put("notifyUrl", callUrl);
+                    log.info("回调接口>>>" + callUrl);
                     String sign = PayUtil.getPaySign(json, PayUtil.merKey);
                     json.put("sign", sign);
                     String data = PayUtil.privateKeyEncrypt(json, PayUtil.merKey);
@@ -1450,4 +1450,139 @@ public class PayOrderServiceImpl implements PayOrderService {
         }
         return "SUCCESS";
     }
+
+//    /**
+//     * 手动临时分账异步通知回调
+//     *
+//     * @param data
+//     */
+//    @Override
+//    public String tempSplittingCallback(String data) {
+//        try {
+//            log.info("******************** 临时手动分账异步通知回调 start *******************");
+//            // 公钥解密
+//            JSONObject json = PayUtil.publicKeyDecrypt(data, PayUtil.publicKey);
+//            log.info("公钥解密>>>>>>" + json);
+//            // 公钥验签
+//            String signaa = json.getString("sign");
+//            json.remove("sign");
+//            String signbb = PayUtil.getPaySign(json, PayUtil.publicKey);
+//            if (!signaa.equals(signbb)) {
+//                return "验签失败";
+//            }
+//            String mbOrderId = json.getString("mbOrderId");
+//            String status = json.getString("status");
+//            log.info("【临时手动分账回调】>>>>>>>>>>分账状态:" + status);
+//            if ("FAILED".equals(status)) {
+//                return "分账失败";
+//            }
+//            // 修改收款分账状态
+//            payOrderMapper.updateBySplitStatus(mbOrderId);
+//        } catch (Exception e) {
+//            log.error("【临时手动分账回调】>>>>>>>>>>分账异步通知异常", e);
+//            return "分账失败";
+//        }
+//        return "SUCCESS";
+//    }
+//
+//    /**
+//     * 临时手动分账
+//     *
+//     * 订单:14814
+//     *
+//     * ¥730.00 分账给 20001793 (米花分账号)      公账-专票     10033578851 (易宝商户号)
+//     * ¥740.00 分账给 20001924 (米花分账号)      私账-无票     10033806951 (易宝商户号)
+//     */
+//    @Override
+//    public String temporarySplitting(){
+//        log.info("【临时手动分账】订单Id:14814");
+//        // 订单信息
+//        List<SplitAccountPo> splitBillDetail = new ArrayList<>();
+//        double splitAmount0 = 1470.00d;
+//        double splitAmount1 = 730.00d;
+//        double splitAmount2 = 740.00d;
+//        // 手续费
+//        double procedureFee = MathUtil.mul(splitAmount0, 0.0038, 4).doubleValue();
+//        if (MathUtil.compare(splitAmount0, 0) == 0) {
+//            procedureFee = 0.01;
+//        }
+//        splitAmount1 = MathUtil.sub(splitAmount1, procedureFee).doubleValue();
+//
+//        SplitAccountPo splitAccount1 = new SplitAccountPo();
+//        splitAccount1.setOrderId(14814);
+//        splitAccount1.setSplitAccount(splitAmount1);
+//        splitAccount1.setProductType(3);
+//        splitAccount1.setType(1);
+//        splitAccount1.setSubUserNo(PayUtil.publicAccountNo);
+//        splitBillDetail.add(splitAccount1);
+//
+//        SplitAccountPo splitAccount2 = new SplitAccountPo();
+//        splitAccount2.setOrderId(14814);
+//        splitAccount2.setSplitAccount(splitAmount2);
+//        splitAccount2.setProductType(1);
+//        splitAccount2.setType(2);
+//        splitAccount2.setSubUserNo(PayUtil.privateAccountNo);
+//        splitBillDetail.add(splitAccount2);
+//
+//        List<Map<String, String>> maps = new ArrayList<>();
+//        //公账-专票总金额,私账-无票总金额,公账-普票总金额
+//        double totalAmount1 = 0.00d;
+//        double totalAmount2 = 0.00d;
+//        double totalAmount3 = 0.00d;
+//        for (SplitAccountPo account : splitBillDetail) {
+//            if (1 == account.getType()) {
+//                totalAmount1 = MathUtil.add(totalAmount1, account.getSplitAccount()).doubleValue();
+//            } else if (2 == account.getType()) {
+//                totalAmount2 = MathUtil.add(totalAmount2, account.getSplitAccount()).doubleValue();
+//            } else if (3 == account.getType()) {
+//                totalAmount3 = MathUtil.add(totalAmount3, account.getSplitAccount()).doubleValue();
+//            }
+//        }
+//        addMaps(maps, totalAmount1, PayUtil.publicAccountNo);
+//        addMaps(maps, totalAmount2, PayUtil.privateAccountNo);
+//        addMaps(maps, totalAmount3, PayUtil.commonInvoiceNo);
+//        String parameters = JSON.toJSONString(maps);
+//        log.info("【临时手动分账】>>>>>>>>>>分账参数: " + parameters);
+//
+//        //第三方分账接口
+//        JSONObject result = null;
+//        try {
+//            // 时间戳
+//            long time = System.currentTimeMillis() / 1000;
+//            JSONObject json = new JSONObject();
+//            json.put("merAccount", PayUtil.merAccount);
+//            json.put("orderId", "X162807235471784T1628072439");
+//            json.put("requestNo", "X162807235471784T1628072439");
+//            json.put("mbOrderId", "gpnpac79061628072439679010001720");
+//            json.put("time", time);
+//            json.put("splitBillDetail", parameters);
+//            json.put("notifyUrl", "https://core.caimei365.com/order/pay/temp/split/callback");
+//            log.info("回调接口>>>https://core.caimei365.com/order/pay/temp/split/callback");
+//            String sign = PayUtil.getPaySign(json, PayUtil.merKey);
+//            json.put("sign", sign);
+//            String data = PayUtil.privateKeyEncrypt(json, PayUtil.merKey);
+//            result = PayUtil.httpGet("https://platform.mhxxkj.com/paygateway/mbpay/splitOrder/v1", PayUtil.merAccount, data);
+//        } catch (Exception e) {
+//            log.error("【临时手动分账】>>>>>>>>>>错误信息", e);
+//        }
+//        if (result != null) {
+//            String code = result.getString("code");
+//            if (!"000000".equals(code)) {
+//                String msg = result.getString("msg");
+//                log.info("【临时手动分账】>>>>>>>>>>第三方延迟分账失败>>>>>>>msg:" + msg);
+//            } else {
+//                for (SplitAccountPo splitAccount : splitBillDetail) {
+//                    splitAccount.setMbOrderId("gpnpac79061628072439679010001720");
+//                    splitAccount.setOrderRequestNo("X162807235471784T1628072439");
+//                    splitAccount.setPayStatus(1);
+//                    // 保存分账详情
+//                    payOrderMapper.insertSplitAccount(splitAccount);
+//                    log.info("【临时手动分账】>>>>>>>>>>id:"+splitAccount.getId());
+//                }
+//                log.info("【临时手动分账】>>>>>>>>>>此订单分账结束");
+//            }
+//        }
+//        return "临时手动分账";
+//    };
+
 }