Browse Source

分账处理

Evan 2 years ago
parent
commit
2b33bacc8f

+ 13 - 10
mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/YsPayCallBackController.java

@@ -199,23 +199,22 @@ public class YsPayCallBackController {
         req.setYsPublicKeyFilePath(publicKeyPath);
         req.setYsPublicKeyFilePath(publicKeyPath);
         // 分账登记业务参数
         // 分账登记业务参数
         Map<String, Object> bizContent = new HashMap<>();
         Map<String, Object> bizContent = new HashMap<>();
-        String divTradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
-        divTradeNo = orderNo;
+        String divTradeNo = order.getTradeNo();
         bizContent.put("out_trade_no", divTradeNo);
         bizContent.put("out_trade_no", divTradeNo);
         bizContent.put("payee_usercode", partnerId);
         bizContent.put("payee_usercode", partnerId);
         bizContent.put("total_amount", request.getParameter("total_amount"));
         bizContent.put("total_amount", request.getParameter("total_amount"));
-        bizContent.put("is_divistion", "01");
+        bizContent.put("is_divistion", "02");
         bizContent.put("is_again_division", "N");
         bizContent.put("is_again_division", "N");
         bizContent.put("division_mode", "01");
         bizContent.put("division_mode", "01");
         // 分账明细
         // 分账明细
-        JSONArray divList = new JSONArray();
-        JSONObject divObject = new JSONObject();
-        divObject.put("division_mer_usercode", partnerId);
-        divObject.put("div_ratio", "1");
-        divObject.put("is_chargeFee", "02");
-        divList.add(divObject);
+//        JSONArray divList = new JSONArray();
+//        JSONObject divObject = new JSONObject();
+//        divObject.put("division_mer_usercode", partnerId);
+//        divObject.put("div_ratio", "1");
+//        divObject.put("is_chargeFee", "02");
+//        divList.add(divObject);
         //分账明细
         //分账明细
-        bizContent.put("div_list", divList);
+//        bizContent.put("div_list", divList);
         req.setParamData(bizContent);
         req.setParamData(bizContent);
         String result = null;
         String result = null;
         DivisionLog divisionLog = new DivisionLog();
         DivisionLog divisionLog = new DivisionLog();
@@ -228,6 +227,10 @@ public class YsPayCallBackController {
         try{
         try{
             logger.info("分账登记调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(req));
             logger.info("分账登记调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(req));
             result = MercFundApi.divisionOnlineAccept(req);
             result = MercFundApi.divisionOnlineAccept(req);
+            JSONObject resultJson = JSON.parseObject(result);
+            if (!"Success".equals(resultJson.get("msg"))) {
+                divisionLog.setStatus(DivisionStatusEnum.SUBMIT_FAIL);
+            }
             ysCallLog.setResJson(result);
             ysCallLog.setResJson(result);
             logger.info("分账登记调用addScanMerc出参为:"+ result);
             logger.info("分账登记调用addScanMerc出参为:"+ result);
             //根据返回结果处理自己的业务逻辑,result内容详见接口文档
             //根据返回结果处理自己的业务逻辑,result内容详见接口文档

+ 52 - 0
mp-admin/src/test/java/com/qs/mp/task/MyTest.java

@@ -11,6 +11,7 @@ import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
 import cn.hutool.crypto.symmetric.SymmetricCrypto;
 import cn.hutool.crypto.symmetric.SymmetricCrypto;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpRequest;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.parser.Feature;
 import com.alibaba.fastjson.parser.Feature;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.alibaba.fastjson.serializer.SerializerFeature;
@@ -35,7 +36,10 @@ import com.qs.mp.admin.service.IGoodsCardService;
 import com.qs.mp.common.constant.YsServerApiConstants;
 import com.qs.mp.common.constant.YsServerApiConstants;
 import com.qs.mp.common.core.redis.DistributedLocker;
 import com.qs.mp.common.core.redis.DistributedLocker;
 import com.qs.mp.common.core.redis.RedisCache;
 import com.qs.mp.common.core.redis.RedisCache;
+import com.qs.mp.common.domain.YsCallLog;
+import com.qs.mp.common.enums.DivisionStatusEnum;
 import com.qs.mp.common.enums.UserTypeEnum;
 import com.qs.mp.common.enums.UserTypeEnum;
+import com.qs.mp.common.enums.YsCallBizTypeEnum;
 import com.qs.mp.common.utils.AESUtil;
 import com.qs.mp.common.utils.AESUtil;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.common.utils.RSAUtil;
 import com.qs.mp.common.utils.RSAUtil;
@@ -45,6 +49,7 @@ import com.qs.mp.common.utils.http.OkHttpUtil;
 import com.qs.mp.common.utils.uuid.IdUtils;
 import com.qs.mp.common.utils.uuid.IdUtils;
 import com.qs.mp.common.utils.uuid.UUID;
 import com.qs.mp.common.utils.uuid.UUID;
 import com.qs.mp.framework.service.IWxSubscribeMessage;
 import com.qs.mp.framework.service.IWxSubscribeMessage;
+import com.qs.mp.pay.domain.DivisionLog;
 import com.qs.mp.pay.service.IWalletService;
 import com.qs.mp.pay.service.IWalletService;
 import com.qs.mp.quartz.task.DayStatTask;
 import com.qs.mp.quartz.task.DayStatTask;
 import com.qs.mp.quartz.task.MarketingTask;
 import com.qs.mp.quartz.task.MarketingTask;
@@ -141,6 +146,53 @@ public class MyTest {
     private String ysWithdrawNotifyUrl;
     private String ysWithdrawNotifyUrl;
 
 
 
 
+    /**
+     * 分账测试
+     */
+    @Test
+    void test21() {
+        // 调用分账登记接口
+        OnlineReqDataVo req = new OnlineReqDataVo();
+        req.setReqUrl(YsServerApiConstants.COMMON_API);
+        req.setNotifyUrl("https://test-mp.quanshu123.com/service/notify/ysDivCallback");
+        req.setPartnerId(partnerId);
+        req.setPrivateKeyFilePath(privateKeyPath);
+        req.setPrivateKeyPassword(privateKeyPass);
+        req.setYsPublicKeyFilePath(publicKeyPath);
+        // 分账登记业务参数
+        Map<String, Object> bizContent = new HashMap<>();
+        String divTradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
+        divTradeNo = "2023041335526144";
+        bizContent.put("out_trade_no", divTradeNo);
+        bizContent.put("payee_usercode", partnerId);
+        bizContent.put("total_amount", "0.10");
+        bizContent.put("is_divistion", "02");
+        bizContent.put("is_again_division", "N");
+        bizContent.put("division_mode", "01");
+        // 分账明细
+//        JSONArray divList = new JSONArray();
+//        JSONObject divObject = new JSONObject();
+//        divObject.put("division_mer_usercode", partnerId);
+//        divObject.put("div_ratio", "1");
+//        divObject.put("is_chargeFee", "02");
+//        divList.add(divObject);
+        //分账明细
+//        bizContent.put("div_list", divList);
+        req.setParamData(bizContent);
+        String result = null;
+        DivisionLog divisionLog = new DivisionLog();
+        divisionLog.setStatus(DivisionStatusEnum.INIT);
+        try{
+            logger.info("分账登记调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(req));
+            result = MercFundApi.divisionOnlineAccept(req);
+            logger.info("分账登记调用addScanMerc出参为:"+ result);
+            //根据返回结果处理自己的业务逻辑,result内容详见接口文档
+        }catch (Exception e){
+            divisionLog.setStatus(DivisionStatusEnum.SUBMIT_FAIL);
+            logger.error("线上分账登记接口失败:"+ e.getMessage());
+        }
+    }
+
     /**
     /**
      * 提现测试方法
      * 提现测试方法
      */
      */