wjj 2 settimane fa
parent
commit
292720ffdf

+ 27 - 0
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -2182,4 +2182,31 @@ public class Task {
             }
         }
     }
+
+    public void noConfirm(){
+        List<FsStorePayment> payments = storePaymentMapper.selectNoConfirm();
+        if (CollectionUtils.isNotEmpty(payments)) {
+            for (FsStorePayment storePayment : payments) {
+
+                try {
+                    Thread.sleep(1000);
+                    HuifuOrderConfirm confirm = new HuifuOrderConfirm();
+                    String orderCode = OrderCodeUtils.getOrderSn();
+                    if (StringUtils.isEmpty(orderCode)) {
+                        throw new CustomException("订单生成失败,请重试");
+                    }
+                    confirm.setReqSeqId(orderCode);
+                    confirm.setQueryDate(DateTools.formatYYYYMMDD(storePayment.getPayTime()));
+                    confirm.setQueryCode("store-"+storePayment.getPayCode());
+                    confirm.setAppId("wx0d1a3dd485268521");
+                    huiFuService.selfConfirmOrder(confirm);
+                    Thread.sleep(1000);
+                } catch (Exception e) {
+                    logger.info("确认分账失败,订单号:{},原因:{}", storePayment.getBusinessCode(),e.getMessage());
+                    continue;
+                    //throw new RuntimeException(e);
+                }
+            }
+        }
+    }
 }

+ 5 - 0
fs-service/src/main/java/com/fs/huifuPay/domain/HuifuOrderConfirm.java

@@ -35,4 +35,9 @@ public class HuifuOrderConfirm {
 
     //分账商户号
     String divHfId;
+
+    String queryCode;
+
+    String queryDate;
+
 }

+ 10 - 0
fs-service/src/main/java/com/fs/huifuPay/sdk/opps/core/request/V2TradePaymentScanpayQueryRequest.java

@@ -47,6 +47,8 @@ public class V2TradePaymentScanpayQueryRequest extends BaseRequest {
     @JSONField(name = "party_order_id")
     private String partyOrderId;
 
+    private String appId;
+
     @Override
     public FunctionCodeEnum getFunctionCode() {
         return FunctionCodeEnum.V2_TRADE_PAYMENT_SCANPAY_QUERY;
@@ -121,4 +123,12 @@ public class V2TradePaymentScanpayQueryRequest extends BaseRequest {
         this.partyOrderId = partyOrderId;
     }
 
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
 }

+ 2 - 0
fs-service/src/main/java/com/fs/huifuPay/service/HuiFuService.java

@@ -43,4 +43,6 @@ public interface HuiFuService {
     HuifuOrderConfirmResult confirmOrder(HuifuOrderConfirm request);
 
     HuifuConfirmrefundResult confirmRefund(V2TradePaymentDelaytransConfirmrefundRequest request,String appId);
+
+    HuifuOrderConfirmResult selfConfirmOrder(HuifuOrderConfirm request);
 }

+ 62 - 1
fs-service/src/main/java/com/fs/huifuPay/service/impl/HuiFuServiceImpl.java

@@ -135,7 +135,19 @@ public class HuiFuServiceImpl implements HuiFuService {
 
     @Override
     public HuiFuQueryOrderResult queryOrder(V2TradePaymentScanpayQueryRequest request) throws Exception{
-        doInit(getMerConfig());
+        if (request.getAppId() != null) {
+            FsHfpayConfigMapper fsHfpayConfigMapper = SpringUtils.getBean(FsHfpayConfigMapper.class);
+            FsHfpayConfig fsHfpayConfig = fsHfpayConfigMapper.selectByAppId(request.getAppId());
+            if (fsHfpayConfig != null) {
+                //多汇付支付获取配置
+                doInit(getMerConfig(fsHfpayConfig));
+            } else {
+                //多小程序
+                doInit(getMerConfig());
+            }
+        } else {
+            doInit(getMerConfig());
+        }
         Map<String, Object> response = doExecute(request);
         String jsonString = JSONObject.toJSONString(response);
         HuiFuQueryOrderResult huiFuQueryOrderResult = JSON.parseObject(jsonString, HuiFuQueryOrderResult.class);
@@ -432,6 +444,55 @@ public class HuiFuServiceImpl implements HuiFuService {
         return huifuConfirmrefundResult;
     }
 
+    @Override
+    public HuifuOrderConfirmResult selfConfirmOrder(HuifuOrderConfirm confirm) {
+        V2TradePaymentScanpayQueryRequest request1 = new V2TradePaymentScanpayQueryRequest();
+        request1.setOrgReqDate(confirm.getQueryDate());
+        request1.setOrgReqSeqId(confirm.getQueryCode());
+        request1.setAppId(confirm.getAppId());
+        HuiFuQueryOrderResult queryOrderResult = null;
+        try {
+            queryOrderResult = queryOrder(request1);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        HuifuOrderConfirmResult huifuOrderConfirmResult = null;
+        if (queryOrderResult != null && queryOrderResult.getDelay_acct_flag().equals("Y") && new BigDecimal(queryOrderResult.getUnconfirm_amt()).compareTo(new BigDecimal("0.00")) > 0) {
+            logger.info("交易确认传参============>{}",confirm);
+            try {
+                V2TradePaymentDelaytransConfirmRequest request = new V2TradePaymentDelaytransConfirmRequest();
+                request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
+                request.setReqSeqId(confirm.getReqSeqId());
+                request.setOrgReqSeqId(queryOrderResult.getOrg_req_seq_id());
+                request.setOrgReqDate(queryOrderResult.getOrg_req_date());
+                Map<String, Object> extendInfoMap = new HashMap<>();
+                //分账对象
+
+                JSONObject acct_split_bunch = new JSONObject();
+                //其它三个分账信息(随机获取一个)
+                JSONArray acct_infos = new JSONArray();
+                JSONObject acct = new JSONObject();
+                acct.put("huifu_id",queryOrderResult.getHuifu_id());
+                acct.put("div_amt",queryOrderResult.getUnconfirm_amt());
+                acct_infos.add(acct);
+                acct_split_bunch.put("acct_infos",acct_infos);
+                extendInfoMap.put("acct_split_bunch",JSON.toJSONString(acct_split_bunch));
+                request.setExtendInfo(extendInfoMap);
+                logger.info("交易确认传参:"+JSON.toJSONString(request));
+                Map<String, Object> response = doExecute(request);
+                logger.info("交易确认返回:"+response);
+                String jsonString = JSONObject.toJSONString(response);
+                logger.info("交易确认返回:"+jsonString);
+                huifuOrderConfirmResult = JSON.parseObject(jsonString, HuifuOrderConfirmResult.class);
+            }catch (Exception e){
+                logger.info("交易确认失败 :"+e);
+                throw  new CustomException("交易确认失败");
+            }
+        }
+
+        return huifuOrderConfirmResult;
+    }
+
 
     public MerConfig getMerConfig(){
         SysConfigMapper sysConfigMapper= SpringUtils.getBean(SysConfigMapper.class);

+ 47 - 11
fs-service/src/main/java/com/fs/huifuPay/service/test.java

@@ -16,23 +16,58 @@ public class test {
     static HuiFuServiceImpl huiFuService = new HuiFuServiceImpl();
     public static void main(String[] args)throws Exception {
 //        onlinePay();
-        refund();
+       //refund();
        // busiOpen();
         //confirmOrder();
         //createOrder();
-        //queryOrder();
+
+        queryOrder();
+        //confirmRefund();
+        //selfConfirmOrder();
+    }
+
+    public static void  confirmRefund() {
+        V2TradePaymentDelaytransConfirmrefundRequest request = new V2TradePaymentDelaytransConfirmrefundRequest();
+        Map<String, Object> extendInfoMap = new HashMap<>();
+        request.setReqSeqId(OrderUtils.getOrderNo());
+        request.setOrgReqSeqId("202512021627470001");
+        request.setOrgReqDate("20251202");
+        //多汇付使用appID
+        HuifuConfirmrefundResult result = huiFuService.confirmRefund(request, null);
+        System.out.println(result);
     }
 
     public static void  confirmOrder(){
         HuifuOrderConfirm confirm = new HuifuOrderConfirm();
         String orderNo = OrderUtils.getOrderNo();
         confirm.setReqSeqId(orderNo);
-        confirm.setOrgReqSeqId("package-1976839880096874496");
-        confirm.setOrgReqDate(DateTools.getCurrentDateYYYYMMDD());
-        confirm.setDivAmt(BigDecimal.valueOf(0.01));
+        confirm.setOrgReqSeqId("store-1995762213280808960");
+        confirm.setOrgReqDate("20251202");
+        BigDecimal multiply = new BigDecimal("0.1").multiply(new BigDecimal("0.2"));
+        BigDecimal subtract = new BigDecimal("0.1").subtract(multiply);
+        confirm.setDivAmt(subtract);
+        confirm.setYsyDivAmt(multiply);
+        confirm.setMainHfId("6666000175632107");
+        confirm.setDivHfId("6666000177633376");
         HuifuOrderConfirmResult result = huiFuService.confirmOrder(confirm);
         System.out.println(result);
     }
+
+    public static void  selfConfirmOrder(){
+        HuifuOrderConfirm confirm = new HuifuOrderConfirm();
+        String orderNo = OrderUtils.getOrderNo();
+        confirm.setReqSeqId(orderNo);
+        confirm.setQueryCode("store-1979008212816363520");
+        confirm.setQueryDate("20251017");
+//        BigDecimal multiply = new BigDecimal("0.1").multiply(new BigDecimal("0.2"));
+//        BigDecimal subtract = new BigDecimal("0.1").subtract(multiply);
+//        confirm.setDivAmt(subtract);
+//        confirm.setYsyDivAmt(multiply);
+//        confirm.setMainHfId("6666000175632107");
+//        confirm.setDivHfId("6666000177633376");
+        HuifuOrderConfirmResult result = huiFuService.selfConfirmOrder(confirm);
+        System.out.println(result);
+    }
     public static void  busiOpen(){
         HuifuBusiOpen open = new HuifuBusiOpen();
         open.setShortName("沈阳久运天天好大药房有限公司");
@@ -58,10 +93,11 @@ public class test {
     public static void  queryOrder()throws Exception {
         V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
         //日期必须正确
-         request.setOrgReqDate("20251016");
+         request.setOrgReqDate("20251017");
         //选其一
         // request.setOrgHfSeqId("002900TOP2B251001170536P200ac139d2c00000");
-         request.setOrgReqSeqId("package-1978809332086603776");
+         //request.setOrgReqSeqId("package-1979870026462658560");
+         request.setOrgReqSeqId("store-1979008212816363520");
         HuiFuQueryOrderResult result = huiFuService.queryOrder(request);
         System.out.println(result);
     }
@@ -78,13 +114,13 @@ public class test {
 
     public static void  refund()throws Exception {
         V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
-        request.setOrdAmt("2370.00");
+        request.setOrdAmt("0.10");
         //订单创建日期
-        request.setOrgReqDate("20251016");
+        request.setOrgReqDate("20251202");
         //退款单号
-        request.setReqSeqId("package-1978809332086603776");
+        request.setReqSeqId("store-1995762213280808960");
         Map<String, Object> extendInfoMap = new HashMap<>();
-        extendInfoMap.put("org_req_seq_id", "package-1978809332086603776");
+        extendInfoMap.put("org_req_seq_id", "store-1995762213280808960");
         request.setExtendInfo(extendInfoMap);
         HuiFuRefundResult refund = huiFuService.refund(request);
         System.out.println(refund);