2015-04-30 49 views
0

這裏我阻止了一個主題「非常簡單」,並且我不能得到響應解決方案提供者的支持。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服務器上

+0

請發佈確切的URL y ou正在使用連接到服務器,併發布輸出'openssl s_client -connect -tls1 -servername | openssl x509 -text -noout'。點擊*編輯*(不要將其作爲評論發佈),將其添加到您的問題中。否則,沒有足夠的信息來幫助排除故障。 – jww

回答

0

你提到你的問題,你已經使用Java 7中

您發佈的鏈接表示兼容的版本是Java 1.5和Java 1.6。代碼已經過測試並正在使用這些版本。

請檢查Java 1.6。這很容易成爲兼容性問題。

從鏈接

https://support.payline.com/hc/fr/articles/2010-Kit-d-int%C3%A9gration-JAVA

兼容性套件

JAVA試劑盒在以下環境中進行測試:

的Windows XP專業版/視窗7臨 Tomcat 5.5和6.0.35 Java 1.5 & 1.6

+0

我有java 1.6的錯誤:main,READ:TLSv1 Alert,length = 2 main,RECV TLSv1 ALERT:fatal,handshake_failure main,調用closeSocket() main,處理異常:javax.net.ssl.SSLHandshakeException:收到致命警報:handshake_failure main,調用close() main,調用closeInternal(true) – user1450740

相關問題