Browse Source

fix: 银行卡信息过滤空字符串避免传空值到支付宝

alphaH 4 days ago
parent
commit
06cfc64cc1

+ 3 - 1
java/src/main/java/com/payment/platform/module/payment/account/service/AlipayTransferService.java

@@ -553,9 +553,11 @@ public class AlipayTransferService {
                 BankcardExtInfo bce = new BankcardExtInfo();
                 Class<?> bceClass = bce.getClass();
                 for (var entry : bankcardInfo.entrySet()) {
+                    Object val = entry.getValue();
+                    if (val == null || (val instanceof String s && s.isBlank())) continue;
                     String setter = "set" + Character.toUpperCase(entry.getKey().charAt(0))
                             + entry.getKey().substring(1);
-                    try { bceClass.getMethod(setter, String.class).invoke(bce, entry.getValue()); }
+                    try { bceClass.getMethod(setter, String.class).invoke(bce, val.toString()); }
                     catch (Exception ignored) {}
                 }
                 payee.setBankcardExtInfo(bce);

+ 34 - 0
logs/payment-platform.log

@@ -936,3 +936,37 @@ org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
 2026-07-17 21:50:50.689 [tomcat-handler-9] WARN  c.p.p.c.e.GlobalExceptionHandler - 业务异常 [/api/v1/payment/account/transfer] 400: 转账失败: 请求参数有误,请检查后重试
 2026-07-17 21:52:23.501 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ...
 2026-07-17 21:52:23.504 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2026-07-17 21:52:28.446 [background-preinit] INFO  o.h.validator.internal.util.Version - HV000001: Hibernate Validator 8.0.1.Final
+2026-07-17 21:52:28.512 [main] INFO  c.p.platform.PaymentApplication - Starting PaymentApplication using Java 21.0.11 with PID 13232 (D:\project2\payment-platform\java\target\classes started by 1 in D:\project2\payment-platform)
+2026-07-17 21:52:28.513 [main] INFO  c.p.platform.PaymentApplication - The following 1 profile is active: "dev"
+2026-07-17 21:52:30.622 [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode
+2026-07-17 21:52:30.625 [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+2026-07-17 21:52:30.730 [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 79 ms. Found 0 Redis repository interfaces.
+2026-07-17 21:52:31.530 [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8001 (http)
+2026-07-17 21:52:31.542 [main] INFO  o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8001"]
+2026-07-17 21:52:31.545 [main] INFO  o.a.catalina.core.StandardService - Starting service [Tomcat]
+2026-07-17 21:52:31.545 [main] INFO  o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.20]
+2026-07-17 21:52:31.665 [main] INFO  o.a.c.c.C.[.[localhost].[/api/v1] - Initializing Spring embedded WebApplicationContext
+2026-07-17 21:52:31.666 [main] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 2921 ms
+2026-07-17 21:52:31.710 [main] INFO  c.a.d.s.b.a.DruidDataSourceAutoConfigure - Init DruidDataSource
+2026-07-17 21:52:33.232 [main] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited
+2026-07-17 21:52:34.037 [main] WARN  c.p.p.c.alipay.AlipayClientFactory - 支付宝默认配置不完整,将仅使用服务商/租户专属客户端
+2026-07-17 21:52:34.201 [main] INFO  c.p.platform.core.oss.OssService - OSS client initialized: bucket=hunanxiaojunzioss, endpoint=oss-cn-beijing.aliyuncs.com
+2026-07-17 21:52:34.504 [main] INFO  c.p.p.m.p.e.s.EnterpriseNameSyncScheduler - [企业名称同步] 调度器启动
+2026-07-17 21:52:34.764 [main] INFO  c.p.p.m.p.n.s.NotificationService - 已注册 7 个通知处理器: [AccountHandler, BillHandler, EmployeeHandler, EnterpriseHandler, InstitutionHandler, OrderHandler, VoucherHandler]
+2026-07-17 21:52:35.245 [main] INFO  o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@59172d2, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@77d42ed7, org.springframework.security.web.context.SecurityContextHolderFilter@34a482d0, org.springframework.security.web.header.HeaderWriterFilter@6bf34912, org.springframework.web.filter.CorsFilter@54da736e, org.springframework.security.web.authentication.logout.LogoutFilter@493489dd, com.payment.platform.core.security.JwtAuthFilter@3bf40c74, com.payment.platform.core.security.TenantApiKeyAuthFilter@54a033b8, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6939f18a, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@8bd9d08, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2d398cfb, org.springframework.security.web.session.SessionManagementFilter@648f48d3, org.springframework.security.web.access.ExceptionTranslationFilter@7151dd9d, org.springframework.security.web.access.intercept.AuthorizationFilter@3ae91bcc]
+2026-07-17 21:52:35.625 [main] INFO  o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8001"]
+2026-07-17 21:52:35.636 [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8001 (http) with context path '/api/v1'
+2026-07-17 21:52:35.752 [main] INFO  c.p.platform.PaymentApplication - Started PaymentApplication in 7.809 seconds (process running for 8.384)
+2026-07-17 21:52:37.636 [main] INFO  c.p.p.core.config.AppStartupRunner - 系统配置缓存初始化完成
+2026-07-17 21:52:38.744 [main] INFO  c.p.p.core.config.AppStartupRunner - 数据字典缓存初始化完成 (10 个字典类型)
+2026-07-17 21:56:20.187 [tomcat-handler-0] INFO  o.a.c.c.C.[.[localhost].[/api/v1] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2026-07-17 21:56:20.187 [tomcat-handler-0] INFO  o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2026-07-17 21:56:20.189 [tomcat-handler-0] INFO  o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
+2026-07-17 21:56:21.129 [tomcat-handler-0] INFO  c.p.p.c.alipay.AlipayClientFactory - 服务商[3]客户端创建成功, appId=2021006160682088, name=跨境服务商, mode=cert
+2026-07-17 21:56:21.533 [tomcat-handler-0] INFO  sdk.biz.info - Summary^_^10000^_^null^_^ProtocalMustParams:app_cert_sn=7623ba694d161128309dd7c2ae0ffc56&charset=UTF-8&alipay_root_cert_sn=687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6&method=alipay.fund.accountbook.query&sign=TLf3y6hkPEiXq2w+vb/y3F1JJ3F8OFh1haoFbbjXDlx3Vt0SZxAZB714984oZEzicNDoMf52mRzPiS8HqBcGTJryca/uiP5WJzEnzz33FkqFubei6Y7wwqNDp8B4/URO/+qAFux/TIef+aRZg0favS1ZH9p4kr8Hy4c/ZPTyV+oMwGQ8bL3Ww0l5OqO4wQjd7lUdFxC/JyWJ04iEMLrxfbCkqtKAeq07Z4snUV2Hix8FzguiIA+2aZEPo7JIaOSRe8bM862MoGmHSztiAwEVOZKq2pInUv6+5fg71WydZQFZDDmgU+KfofqJ6jumUbViLJavJD/M0ha14cDlbr+eWw==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-17 21:56:21^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21b86fb817842965822021177e6003&biz_content={"account_book_id":"2088780672080547","ext_info":"{\"agreement_no\":\"20265516346110445222\"}","scene_code":"SATF_FUND_BOOK"}^_^18ms,374ms,12ms^_^trace_id:21b86fb817842965822021177e6003
+2026-07-17 21:56:22.478 [tomcat-handler-3] INFO  sdk.biz.info - Summary^_^10000^_^null^_^ProtocalMustParams:app_cert_sn=7623ba694d161128309dd7c2ae0ffc56&charset=UTF-8&alipay_root_cert_sn=687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6&method=alipay.fund.accountbook.query&sign=GNHyCd/QmVHKmGnlr+wnlzrXmFBaU8XO7HdmJvH3I+38AhJrDCBSgU6Bne06lTwtjzA8sntGvDLwSIwY037DDFOSl63WENNS2tblfyfdJGgD8skf9oLsm3yI6Os5XfWSs+e+GdGYRZdREeC22zcYVI8tjnNetgD2HNDVdNWREyICODtLnclr/XW+EwMXFybXtq7wUvUkpgTGi5uiC68eVg5bLEsNqtb8MZNImlESzvI5gcunogGhl4YkOlmUNroPoYvC7jBpjg6sCOZRoErcVfulR/pYEBh8rjBF4nt0tCA59gjRWM3oK1/iaCanMh4mcL96ocRs352tiAu/t31SvQ==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-17 21:56:22^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21b86fb817842965830021258e6003&biz_content={"account_book_id":"2088780672080547","ext_info":"{\"agreement_no\":\"20265516346110445222\"}","scene_code":"SATF_FUND_BOOK"}^_^9ms,349ms,1ms^_^trace_id:21b86fb817842965830021258e6003
+2026-07-17 21:56:43.516 [tomcat-handler-7] INFO  sdk.biz.info - Summary^_^10000^_^null^_^ProtocalMustParams:app_cert_sn=7623ba694d161128309dd7c2ae0ffc56&charset=UTF-8&alipay_root_cert_sn=687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6&method=alipay.fund.accountbook.query&sign=GTfMvUSU7OOKEbF8WdfboFFJlIB5S7EBuLSgNgxehxPJXeRI/Y4rMcgRqZ+Y8EgovoipWZ15mqEVugthTUHWj0Z48YJ3EEd7XGcOTy0bba/fJpezPhaQs60ZTaQ/e3UBKXYjPcaKDauBhrJOATaN0sx/NHwFMwPrG8bvV1PiTFrTwIGQXZ+vSZDK3AymMB5cr2Wr/H4H/KVXEzfBK6hQQzGjKunHzN8hid+f3zw1OTzH+hrtsDMy8S2zr8MDKMNcRk04w7ivX517Gw/0fXjWlkBxIj935vX7ImqC+xMJD8CcUtpi1bVBRoNAZ1rEn81p9dTF8V9836smYinbnYGnrw==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-17 21:56:43^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21ba1e5e17842966041041136e8571&biz_content={"account_book_id":"2088780672080547","ext_info":"{\"agreement_no\":\"20265516346110445222\"}","scene_code":"SATF_FUND_BOOK"}^_^8ms,345ms,1ms^_^trace_id:21ba1e5e17842966041041136e8571
+2026-07-17 21:56:44.366 [tomcat-handler-9] INFO  sdk.biz.info - Summary^_^10000^_^null^_^ProtocalMustParams:app_cert_sn=7623ba694d161128309dd7c2ae0ffc56&charset=UTF-8&alipay_root_cert_sn=687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6&method=alipay.fund.accountbook.query&sign=R5pnFmeV6x94z2AQ/YMNzN2YpIk44LiVwNbjhK6voi0x0MAZosSgZiVOe1Nydaw2oNkzJ692LphsSEtQ0kwHENFr8qDAoSZMHg6BxtNn6d2NRtHSE0MpVHfXGUnFnB4444bH3z+6vZZoLVmgnFzkYEmJYsDDCS1Mld+9/v7q7J4L75JivuXzAKMpPfy+v9/vOKZi9gVbHa6onSy9fq7W3za9dqgLJlXNVendVDensNY56JBnsEthtxyZN+AFjo+rqJqBjld+cfnf4NWRFNLKNZ/9K2TLDTZKzsWStRlFZa8/wUio8MCwjT7EX5EsZJBp+aBKpf6l1GdILhoSSgYPDg==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-17 21:56:44^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21ba1e5e17842966049721212e8571&biz_content={"account_book_id":"2088780672080547","ext_info":"{\"agreement_no\":\"20265516346110445222\"}","scene_code":"SATF_FUND_BOOK"}^_^9ms,271ms,1ms^_^trace_id:21ba1e5e17842966049721212e8571
+2026-07-17 21:57:34.531 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ...
+2026-07-17 21:57:34.532 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed