微信支付退款异常处理过程

向量数据库大模型关系型数据库

异常信息


 1. `javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification p`
2. `ath to requested target`
3. `at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)`
4. `at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)`
5. `at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279)`
6. `at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273)`
7. `at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1446)`
8. `at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)`
9. `at sun.security.ssl.Handshaker.processLoop(Handshaker.java:901)`
10. `at sun.security.ssl.Handshaker.process_record(Handshaker.java:837)`
11. `at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)`
12. `at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)`
13. `at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)`
14. `at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)`
15. `at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:275)`
16. `at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:254)`
17. `at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:123)`
18. `at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318)`
19. `at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)`
20. `at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)`
21. `at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)`
22. `at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)`
23. `at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)`
24. `at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)`
25. `at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)`
26. `at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)`
27. `at com.gemantic.wealth.admin.util.WxpayUtil.refund(WxpayUtil.java:111)`
28. `at com.gemantic.wealth.admin.controller.RefundsController.verifyDebt(RefundsController.java:520)`
29. `at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)`
30. `at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)`
31. `at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)`
32. `at java.lang.reflect.Method.invoke(Method.java:606)`
33. `at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)`
34. `at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)`
35. `at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)`
36. `at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)`
37. `at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)`
38. `at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)`
39. `at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)`
40. `at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)`
41. `at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)`
42. `at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)`
43. `at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)`
44. `at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)`
45. `at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)`
46. `at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)`
47. `at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)`
48. `at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)`
49. `at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)`
50. `at org.jasig.cas.client.util.AssertionThreadLocalFilter.doFilter(AssertionThreadLocalFilter.java:54)`
51. `at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)`
52. `at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)`
53. `at org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:75)`
54. `at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)`
55. `at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)`
56. `at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:201)`
57. `at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)`
58. `at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)`
59. `at com.gemantic.wealth.admin.ArthurFilter.doFilter(ArthurFilter.java:83)`
60. `at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)`
61. `at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)`
62. `at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:76)`
63. `at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)`
64. `at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)`
65. `at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)`
66. `at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)`
67. `at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)`
68. `at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)`
69. `at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:88)`
70. `at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)`
71. `at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)`
72. `at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)`
73. `at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)`
74. `at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)`
75. `at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)`
76. `at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)`
77. `at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)`
78. `at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)`
79. `at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)`
80. `at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)`
81. `at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)`
82. `at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)`
83. `at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)`
84. `at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)`
85. `at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)`
86. `at java.lang.Thread.run(Thread.java:745)`
87. `Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target`
88. `at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)`
89. `at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)`
90. `at sun.security.validator.Validator.validate(Validator.java:260)`
91. `at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)`
92. `at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)`
93. `at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)`
94. `at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1428)`
95. `... 79 more`
96. `Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target`
97. `at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)`
98. `at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)`
99. `at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)`
100. `... 85 more`

异常原因

这是缺少安全证书时出现的异常

分析问题

  • 本地开发并单元测试通过
  • 测试环境API接口测试通过,服务器192.168.1.20
  • 测试环境管理后台的退款操作,调用接口抛出上面的异常,服务器192.168.1.23

20、23的系统、配置、安装的软件等完全一样,出现这种情况的原因感觉很奇怪。唯一的区别就是23服务器上的管理后台与CAS进行了集成

解决方案

  • 第一步想到的是把从微信网站上下载的证书导入到jdk的 cacerts

keytool-import-keystore"$JAVA\_HOME/jre/lib/security/cacerts"-file/data/admin-web/cer/web/apiclient\_cert.p12-aliasstaging\_wx\_web

提示错误:

keytool错误:java.lang.Exception:所输入的不是X.509证书

  • 第二试着从chrome浏览器中导出证书的cer格式文件,另存为weixin.cer

picture.image

picture.image

picture.image

  • 将上面导出的证书上传到服务器23的/home/look目录下,然后导入 $JAVA\_HOME/jre/lib/security/cacerts

keytool-import-keystore"$JAVA\_HOME/jre/lib/security/cacerts"-file/home/look/weixin.cer-aliasstaging\_wx

输入密码,按提示输入“是”,完成证书的导入。可以再次查看证书库 keytool-list-keystore $JAVA\_HOME/jre/lib/security/cacerts,此时已经总数已经多了一个,添加成功

  • 证书配置完成后,重启一下服务。再次测试成功~

欢迎留言讨论~

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
VikingDB:大规模云原生向量数据库的前沿实践与应用
本次演讲将重点介绍 VikingDB 解决各类应用中极限性能、规模、精度问题上的探索实践,并通过落地的案例向听众介绍如何在多模态信息检索、RAG 与知识库等领域进行合理的技术选型和规划。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论