Przeglądaj źródła

微信收款分账

ct 1 dzień temu
rodzic
commit
0727fa29d8

+ 1 - 0
fs-service/src/main/java/com/fs/his/service/IFsStorePaymentService.java

@@ -125,4 +125,5 @@ public interface IFsStorePaymentService
 
     R getWxaCodeByPayment(FsStorePaymentGetWxaCodeParam param);
 
+    String payConfirm(String payCode,String tradeNo,String bankTransactionId,String bankSerialNo);
 }

+ 1 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java

@@ -1024,7 +1024,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
                         try {
                             HuiFuUtils.doDiv(o,fsPackageOrder.getCompanyId());
                             //存储分账明细
-                            HuiFuUtils.saveDivItem(o, fsPackageOrder, storePayment);
+                            HuiFuUtils.saveDivItem(o, fsPackageOrder.getOrderSn(), storePayment.getPayCode());
                         } catch (Exception e) {
                             logger.error("-------------分账出错:{}", e.getMessage());
                         }

+ 48 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java

@@ -56,6 +56,8 @@ import com.fs.his.service.IFsStorePaymentService;
 import com.fs.his.utils.PhoneUtil;
 import com.fs.his.vo.FsStorePaymentExcelVO;
 import com.fs.his.vo.FsStorePaymentVO;
+import com.fs.hisStore.domain.FsStorePaymentScrm;
+import com.fs.hisStore.mapper.FsStorePaymentScrmMapper;
 import com.fs.hisStore.param.FsStorePaymentGetWxaCodeParam;
 import com.fs.hisStore.param.FsStorePaymentPayParam;
 import com.fs.huifuPay.domain.HuiFuCreateOrder;
@@ -64,6 +66,7 @@ import com.fs.huifuPay.domain.HuiFuRefundResult;
 import com.fs.huifuPay.domain.HuifuCreateOrderResult;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
+import com.fs.huifuPay.sdk.opps.core.utils.HuiFuUtils;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
@@ -126,6 +129,8 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
     @Autowired
     private FsStorePaymentMapper fsStorePaymentMapper;
     @Autowired
+    private FsStorePaymentScrmMapper fsStorePaymentScrmMapper;
+    @Autowired
     private TzBankService tzBankService;
     @Autowired
     private IFsInquiryOrderService inquiryOrderService;
@@ -1473,6 +1478,41 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
         }
     }
 
+    @Override
+    @Transactional
+    public String payConfirm(String payCode, String tradeNo, String bankTransactionId, String bankSerialNo) {
+        try {
+            //更新订单状态
+            FsStorePayment storePayment=fsStorePaymentMapper.selectFsStorePaymentByPaymentCode(payCode);
+            if(!storePayment.getStatus().equals(0)){
+                return "";
+            }
+            storePayment.setStatus(1);
+            storePayment.setPayTime(new Date());
+            storePayment.setTradeNo(tradeNo);
+            storePayment.setBankSerialNo(bankSerialNo);
+            storePayment.setBankTransactionId(bankTransactionId);
+            fsStorePaymentMapper.updateFsStorePayment(storePayment);
+            //增加佣金
+//        if(storePayment.getCompanyId()!=null&&storePayment.getCompanyId()>0){
+//            companyService.addCompanyPaymentMoney(storePayment);
+//        }
+        } catch (Exception e) {
+            //更新订单状态
+            FsStorePaymentScrm storePayment=fsStorePaymentScrmMapper.selectFsStorePaymentByPaymentCode(payCode);
+            if(!storePayment.getStatus().equals(0)){
+                return "";
+            }
+            storePayment.setStatus(1);
+            storePayment.setPayTime(new Date());
+            storePayment.setTradeNo(tradeNo);
+            storePayment.setBankSerialNo(bankSerialNo);
+            storePayment.setBankTransactionId(bankTransactionId);
+            fsStorePaymentScrmMapper.updateFsStorePayment(storePayment);
+        }
+        return "SUCCESS";
+    }
+
     @Override
     public R paymentByWxaCode(FsStorePaymentPayParam param) {
         FsUser user = userMapper.selectFsUserById(param.getUserId());
@@ -1549,6 +1589,14 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
         o.setTransAmt(storePayment.getPayMoney().toString());
         o.setGoodsDesc("商城订单支付");
         o.setAppId(appId);
+        //公司分账
+        try {
+            HuiFuUtils.doDiv(o,company.getCompanyId());
+            //存储分账明细
+            HuiFuUtils.saveDivItem(o, storePayment.getPayCode(), storePayment.getPayCode());
+        } catch (Exception e) {
+            logger.error("-------------微信收款分账出错:{}", e.getMessage());
+        }
         HuifuCreateOrderResult result = huiFuService.createOrder(o);
         if(result.getResp_code()!=null&&(result.getResp_code().equals("00000000")||result.getResp_code().equals("00000100"))){
             FsStorePayment mt=new FsStorePayment();

+ 9 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStorePaymentScrmServiceImpl.java

@@ -41,6 +41,7 @@ import com.fs.hisStore.enums.SysConfigEnum;
 import com.fs.hisStore.param.*;
 import com.fs.huifuPay.domain.HuiFuCreateOrder;
 import com.fs.huifuPay.domain.HuifuCreateOrderResult;
+import com.fs.huifuPay.sdk.opps.core.utils.HuiFuUtils;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.pay.pay.config.PayConfig;
 import com.fs.pay.pay.dto.WxJspayDTO;
@@ -891,6 +892,14 @@ public class FsStorePaymentScrmServiceImpl implements IFsStorePaymentScrmService
         o.setTransAmt(storePayment.getPayMoney().toString());
         o.setGoodsDesc("商城订单支付");
         o.setAppId(param.getAppId());
+        //公司分账
+        try {
+            HuiFuUtils.doDiv(o,company.getCompanyId());
+            //存储分账明细
+            HuiFuUtils.saveDivItem(o, storePayment.getPayCode(), storePayment.getPayCode());
+        } catch (Exception e) {
+            logger.error("-------------微信收款分账出错:{}", e.getMessage());
+        }
         HuifuCreateOrderResult result = huiFuService.createOrder(o);
         if(result.getResp_code()!=null&&(result.getResp_code().equals("00000000")||result.getResp_code().equals("00000100"))){
             FsStorePaymentScrm mt=new FsStorePaymentScrm();

+ 3 - 3
fs-service/src/main/java/com/fs/huifuPay/sdk/opps/core/utils/HuiFuUtils.java

@@ -144,11 +144,11 @@ public class HuiFuUtils {
         }
     }
 
-    public static void saveDivItem(HuiFuCreateOrder o, FsPackageOrder fsPackageOrder, FsStorePayment storePayment) {
+    public static void saveDivItem(HuiFuCreateOrder o, String orderCode, String payCode) {
         CompanyDivItem companyDivItem = new CompanyDivItem();
         if (StringUtils.isNotBlank(o.getAcctSplitBunch())){
-            companyDivItem.setOrderCode(fsPackageOrder.getOrderSn());
-            companyDivItem.setPayCode(storePayment.getPayCode());
+            companyDivItem.setOrderCode(orderCode);
+            companyDivItem.setPayCode(payCode);
             companyDivItem.setDetail(o.getAcctSplitBunch());
             companyDivItem.setIsRefund(0); //支付
             companyDivItem.setIsDelay(0); //延迟分账

+ 1 - 0
fs-service/src/main/resources/mapper/company/CompanyDivItemMapper.xml

@@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isDelay != null "> and is_delay = #{isDelay}</if>
             <if test="isRefund != null "> and is_refund = #{isRefund}</if>
         </where>
+        order by id desc
     </select>
 
     <select id="selectCompanyDivItemById" parameterType="Long" resultMap="CompanyDivItemResult">

+ 13 - 6
fs-user-app/src/main/java/com/fs/app/controller/HuifuPayController.java

@@ -6,10 +6,7 @@ import com.fs.company.service.ICompanyDivItemService;
 import com.fs.course.service.IFsCourseProductOrderService;
 import com.fs.course.service.IFsUserCourseOrderService;
 import com.fs.course.service.IFsUserVipOrderService;
-import com.fs.his.service.IFsInquiryOrderService;
-import com.fs.his.service.IFsIntegralOrderService;
-import com.fs.his.service.IFsPackageOrderService;
-import com.fs.his.service.IFsStoreOrderService;
+import com.fs.his.service.*;
 import com.fs.huifuPay.domain.HuiFuOnlinePay;
 import com.fs.huifuPay.domain.HuiFuOnlineRefund;
 import com.fs.huifuPay.domain.HuiFuResult;
@@ -36,6 +33,8 @@ public class HuifuPayController {
     private IFsIntegralOrderService integralOrderService;
     @Autowired
     private IFsCourseProductOrderService courseProductOrderService;
+    @Autowired
+    private IFsStorePaymentService storePaymentService;
 
     org.slf4j.Logger logger= LoggerFactory.getLogger(getClass());
     @Autowired
@@ -104,15 +103,23 @@ public class HuifuPayController {
                         logger.error("-------分账明细回调错误{}", e.getMessage());
                     }
                     break;
+                case "payment":
+                    storePaymentService.payConfirm(orderId[1],huiFuResult.getHf_seq_id(),huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
+                    try {
+                        updateDivItem(orderId[1]);
+                    } catch (Exception e) {
+                        logger.error("-------分账明细回调错误{}", e.getMessage());
+                    }
+                    break;
             }
         }
 
         return "ok";
     }
 
-    private void updateDivItem(String orderId) {
+    private void updateDivItem(String payCode) {
         //修改分账状态
-        CompanyDivItem companyDivItem = companyDivItemService.selectCompanyDivItemByPayCode(orderId);
+        CompanyDivItem companyDivItem = companyDivItemService.selectCompanyDivItemByPayCode(payCode);
         if (companyDivItem != null) {
             companyDivItem.setIsPay(1);
             companyDivItemService.updateCompanyDivItem(companyDivItem);