Browse Source

feat: 进件状态主动同步 — createAccount前查支付宝+手动刷新端点

- createAccount: 开通前先调queryOnboard同步最新状态
- POST /onboard/refresh: 手动拉到支付宝最新进件状态写DB
alphaH 1 day ago
parent
commit
51f183d786

+ 21 - 0
java/src/main/java/com/payment/platform/module/payment/account/controller/AccountController.java

@@ -142,6 +142,27 @@ public class AccountController {
         return Result.ok(alipayTransferService.queryOnboard(enterpriseId, orderId));
     }
 
+    /** 手动同步进件状态 — 调支付宝拉最新状态并更新DB */
+    @PostMapping("/onboard/refresh")
+    public Result<Map<String, String>> refreshOnboardStatus(@RequestBody Map<String, Object> b) {
+        String enterpriseId = (String) b.get("enterprise_id");
+        AccountEntity account = accountMapper.selectOne(
+                new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<AccountEntity>()
+                        .eq(AccountEntity::getEnterpriseId, enterpriseId));
+        if (account == null || account.getOnboardOrderId() == null)
+            return Result.fail(400, "未找到进件记录");
+        Map<String, String> result = alipayTransferService.queryOnboard(enterpriseId, account.getOnboardOrderId());
+        String status = result.get("status");
+        if (status != null && !status.equals(account.getOnboardStatus())) {
+            account.setOnboardStatus(status);
+            accountMapper.updateById(account);
+        }
+        return Result.ok(Map.of(
+                "order_id", account.getOnboardOrderId(),
+                "old_status", account.getOnboardStatus(),
+                "alipay_status", status));
+    }
+
     /** 查询本地进件状态(不走支付宝,直接读DB) */
     @GetMapping("/onboard/status")
     public Result<Map<String, String>> onboardStatus(

+ 12 - 0
java/src/main/java/com/payment/platform/module/payment/account/service/AlipayTransferService.java

@@ -347,6 +347,18 @@ public class AlipayTransferService {
                 new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<AccountEntity>()
                         .eq(AccountEntity::getEnterpriseId, enterpriseId));
 
+        // 先调支付宝同步最新进件状态(通知可能没到)
+        if (account != null && account.getOnboardOrderId() != null
+                && !"VALID".equals(account.getOnboardStatus())) {
+            Map<String, String> latest = queryOnboard(enterpriseId, account.getOnboardOrderId());
+            String s = latest.get("status");
+            if (s != null && !s.equals(account.getOnboardStatus())) {
+                account.setOnboardStatus(s);
+                accountMapper.updateById(account);
+                log.info("同步进件状态: enterpriseId={}, {} -> {}", enterpriseId, account.getOnboardStatus(), s);
+            }
+        }
+
         // 进件必须审核通过才允许开通记账本
         if (account != null && account.getOnboardStatus() != null
                 && !"VALID".equals(account.getOnboardStatus()))

+ 2 - 0
logs/payment-platform.log

@@ -1919,3 +1919,5 @@ Caused by: java.io.EOFException: null
 2026-07-15 14:58:13.869 [tomcat-handler-1] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 14:58:13^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.expandindirect.create&sign=GZtD8ihAc7kj1WHyJzUIw9P1034kKNprpeaQhASTSiUfH8CMVwandwOtctxXPIz3FknxXGLSzvNQLQjeMbPL4qYGI01ngMHJbHOfFVfMFWOtAreV78V7ERkMg2sKsUj1w2lCfYwM/X62hQ1Mp+4abF1/zQqkdC8ppu39Yj5bjIv8lllP7nQ3FDVuu8WOl7CRuBvVpG22L6PBGkrYboLs/lV/b+U7XM8hJ/eAUZ1Fiq91LUGzmcgheDS99kvLi7jHm8KhA3tNg1LyYeP8dT5kzoOijSoUtKSYkc4vh1WPaxtY01tdwiPDruli6XGSFqfu7zgV/NV3XJm3yAVFThwUOw==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 14:58:13^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21d56bcc17840986941441967e69ab&biz_content={"biz_scene":"ENTRUST_SATF_TRANSFER","biz_type":"CREATE","out_biz_no":"1274784159717396480","product_code":"MERCHANT_TRANSFER_EXPAND_INDIRECT","scene_code":"XIANJIN_YINGXIAO","scene_directions":"测试提交","scene_image":"XFQ3Qoy2eAcAAAAATvAAAAgAp8JGAAFr.png","secondary_partner_info":{"identity":"2088351626760143","identity_type":"ALIPAY_USER_ID","name":"湖南花米惠科技有限公司"}}^_^Body:{"alipay_fund_expandindirect_create_response":{"code":"40004","msg":"Business Failed","sub_code":"INVALID_PARAMETER","sub_msg":"参数有误商户行业资质图片\/协议文本不能为空"},"sign":"fi1/hhQ8xupjRax49sAPY8eCxX4iyfS72clAy+RIYgZIIiBd9e+k90H0M39VGgseLV1ocY2KxBIshscaIKZ1EFpQKRM3EBGBtQRgOQXmL6qrb6zS29RP1qOrbAOQ5pndQ7LcJkVmCCZAG1I8NrDOjbKSnKF/RCQoELrVBfcoDWKW6Pt43sbnpAPjs+PFwu89SEvsZ5GUFKZMUzfkcCrYaN0iM0djJ/AqWBY/0KLEBtFgt+9tTYXeJQIer1R1jMnIPBgdxHcVuG+MIHNZXBwPUIuvcIfJTO2etIgJGlfBCO9rAq2LuPlPMW8MlM1OZ8D7McJ+itsP4d/M+lzYdZZ8nw=="}^_^12ms,112ms,14ms^_^trace_id:21d56bcc17840986941441967e69ab
 2026-07-15 14:58:13.873 [tomcat-handler-1] WARN  c.p.p.c.e.GlobalExceptionHandler - 业务异常 [/api/v1/payment/account/onboard/create] 400: 创建进件单失败: Business Failed
 2026-07-15 15:01:32.323 [tomcat-handler-2] INFO  sdk.biz.info - Summary^_^10000^_^null^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.expandindirect.create&sign=cpmWFUQmmmYrLIFSmHaDH6/0zALkH4K4q4GxejyIzGOPGNpQ+KNULRR9G+c+HWjfwU1g9onzLY4TG+JmalJ5iP0E0kbB/bO7BU9QU4ROxj1mheLCQpuUwWLmLjU5XcKBX/wfa3ZnpKncPB9Uc+D/NWl8lBvFM1aa8iPO8XJAdGaDp0op3utUF/8uZsoax3Tl9FG/Gz5NBUTBk6HA0JZVljfwgGsylgT9WTVkk+jkAR452jMZABAwND+4iwOMGhPC3u3PtGilcu9GHZjLkTFS3BGnoSSLZWkE9rhqQErRJr2ecat12QJ8/Y0Mos43PtITDO3J3nHUiAhrmB00efViRQ==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 15:01:31^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=0b27639617840988922553850e0e0d&biz_content={"biz_scene":"ENTRUST_SATF_TRANSFER","biz_type":"CREATE","out_biz_no":"1274784990424469504","product_code":"MERCHANT_TRANSFER_EXPAND_INDIRECT","scene_code":"ZHUANZHANG_QITA","scene_directions":"测试提交","scene_image":"XFQ3Qoy2eAcAAAAATvAAAAgAp8JGAAFr.png","secondary_partner_info":{"identity":"2088351626760143","identity_type":"ALIPAY_USER_ID","name":"湖南花米惠科技有限公司"}}^_^11ms,518ms,12ms^_^trace_id:0b27639617840988922553850e0e0d
+2026-07-15 15:31:52.965 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ...
+2026-07-15 15:31:52.968 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed