Kaynağa Gözat

多汇付支付和退款

xw 2 hafta önce
ebeveyn
işleme
c4c2a47568

+ 31 - 1
fs-company/src/main/java/com/fs/hisStore/controller/FsStorePaymentScrmController.java

@@ -1,6 +1,7 @@
 package com.fs.hisStore.controller;
 
 import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.domain.AlipayTradeRefundModel;
 import com.fs.common.annotation.Log;
@@ -16,6 +17,9 @@ import com.fs.company.controller.pay.bean.AliPayBean;
 import com.fs.company.service.ICompanyService;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
+import com.fs.his.domain.FsHfpayConfig;
+import com.fs.his.mapper.FsHfpayConfigMapper;
+import com.fs.hisStore.domain.FsPayConfigScrm;
 import com.fs.hisStore.domain.FsStorePaymentScrm;
 import com.fs.hisStore.param.FsStorePaymentParam;
 import com.fs.hisStore.service.IFsStorePaymentScrmService;
@@ -61,6 +65,9 @@ public class FsStorePaymentScrmController extends BaseController
 
     @Autowired
     HuiFuService huiFuService;
+    
+    @Autowired
+    private FsHfpayConfigMapper fsHfpayConfigMapper;
     /**
      * 查询支付明细列表
      */
@@ -212,12 +219,35 @@ public class FsStorePaymentScrmController extends BaseController
         if(payment.getPayTypeCode().equals("weixin")){
 
             if (payment.getPayMode()!=null&&payment.getPayMode().equals("hf")){
+                // 根据 appId 获取对应的汇付商户号
+                String huifuId = "";
+                logger.info("开始退款,支付记录ID:{},appId:{}", payment.getPaymentId(), payment.getAppId());
+                
+                if (payment.getAppId() != null && !payment.getAppId().isEmpty()) {
+                    FsHfpayConfig fsHfpayConfig = fsHfpayConfigMapper.selectByAppId(payment.getAppId());
+                    logger.info("根据appId查询汇付配置,appId:{},查询结果:{}", payment.getAppId(), fsHfpayConfig);
+                    if (fsHfpayConfig != null) {
+                        huifuId = fsHfpayConfig.getHuifuId();
+                        logger.info("获取到huifuId:{}", huifuId);
+                    } else {
+                        logger.error("未找到appId对应的汇付配置,appId:{}", payment.getAppId());
+                    }
+                } else {
+                    logger.error("支付记录的appId为空,支付记录ID:{}", payment.getPaymentId());
+                }
+                
+                // 如果没有获取到 huifuId,返回错误
+                if (huifuId == null || huifuId.isEmpty()) {
+                    return R.error("未找到对应的汇付配置信息,请检查支付记录的appId:" + payment.getAppId());
+                }
+                
                 V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
+                request.setHuifuId(huifuId);
                 request.setOrdAmt(payment.getPayMoney().toString());
                 request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
                 request.setReqSeqId("refund-"+payment.getPayCode());
                 Map<String, Object> extendInfoMap = new HashMap<>();
-                extendInfoMap.put("org_party_order_id", payment.getBankSerialNo());
+                extendInfoMap.put("org_req_seq_id", "payment-"+payment.getPayCode());
                 request.setExtendInfo(extendInfoMap);
                 HuiFuRefundResult refund = huiFuService.refund(request);
                 logger.info("退款:"+refund);