這裏我阻止了一個主題「非常簡單」,並且我不能得到響應解決方案提供者的支持。SSLHandshakeException:收到致命警報:握手失敗
我嘗試使用支付線庫(支付提供商),但沒有。沒有我所做的就是下載他們的圖書館,創建,測試他們的例子一類,但該腳本返回我以下異常:
的信息,鏈接查看下載的內容支付線:https://support.payline.com/hc/fr/articles/2010-Kit-d-int%C3%A9gration-JAVA
例外:
Apr 30, 2015 9:56:06 AM com.experian.payline.ws.wrapper.DirectPayment doAuthorization
SEVERE: Error during doAuthorization call :
com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:117)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:194)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:122)
at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:123)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:626)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:585)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:570)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:467)
at com.sun.xml.internal.ws.client.Stub.process(Stub.java:308)
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:163)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:135)
at com.sun.proxy.$Proxy20.doAuthorization(Unknown Source)
at com.experian.payline.ws.wrapper.DirectPayment.doAuthorization(DirectPayment.java:110)
at test.launch.main(launch.java:42)
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
at sun.net.http://www.protocol.https.HttpsClien...ient.java:563)
at sun.net.http://www.protocol.https.AbstractDe...tion.java:185)
at sun.net.http://www.protocol.http.HttpURLConn...ion.java:1092)
at sun.net.http://www.protocol.https.HttpsURLCo...Impl.java:250)
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:105)
... 15 more
和我的代碼:
package test;
import java.util.Date;
import com.experian.payline.kit.utils.ConnectParams;
import com.experian.payline.ws.impl.DoAuthorizationResponse;
import com.experian.payline.ws.obj.Card;
import com.experian.payline.ws.obj.Order;
import com.experian.payline.ws.obj.Payment;
import com.experian.payline.ws.wrapper.DirectPayment;
public class launch {
public static void main (String[] args){
//System.setProperty("https.protocols", "TLSv1.2");
ConnectParams params = new ConnectParams(null, false, true, "**************", "***************");
DirectPayment directPayment = new DirectPayment(params);
System.out.println(params.getProxyPort());
Payment payment = new Payment();
payment.setAmount("990");
payment.setCurrency("978");
payment.setAction("101");
payment.setMode("CPT");
payment.setContractNumber("0001/1234567");
Order order = new Order();
Date dNow = new Date();
order.setRef("KIT_"+dNow.getTime());
order.setAmount(payment.getAmount());
order.setCurrency(payment.getCurrency());
java.text.SimpleDateFormat s = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm");
order.setDate(s.format(dNow));
Card card = new Card();
card.setType("CB");
card.setNumber("1111222233334444");
card.setExpirationDate("0118");
card.setCvx("123");
DoAuthorizationResponse res = directPayment.doAuthorization(payment, order, null, card, null, null, null, null);
System.out.println(res.getResult());
}
}
調試SSL
main, READ: TLSv1 Alert, length = 2
main, RECV TLSv1 ALERT: fatal, handshake_failure
%% Invalidated: [Session-1, SSL_RSA_WITH_RC4_128_MD5]
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
main, called close()
我在尋找,我仍然無法糾正這個問題「握手失敗」。
我(2 Java 7中)
謝謝你的幫助測試此代碼在我的Mac和Debian服務器上
請發佈確切的URL y ou正在使用連接到服務器,併發布輸出'openssl s_client -connect: -tls1 -servername | openssl x509 -text -noout'。點擊*編輯*(不要將其作爲評論發佈),將其添加到您的問題中。否則,沒有足夠的信息來幫助排除故障。 –
jww