2015-04-30 3 views
0

Здесь я блокирую тему «довольно просто», и у меня не может быть поддержки поставщика решений для ответа.SSLHandshakeException: получено фатальное предупреждение: ошибка рукопожатия

Я пытаюсь использовать библиотеки Payline (поставщик платежей), но это не так. Я ничего не делал, было загрузить свою библиотеку, создать класс, который проверяет их примеру, но сценарий возвращает мне следующее исключение:

для информации, ссылку, чтобы увидеть загруженный контент PayLine: 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() 

Я ищу, я все еще не могу исправить эту проблему «отказ от рукопожатия».

Я тестировал этот код на моем Mac и на сервере Debian (Java 7 на 2)

Спасибо за вашу помощь

+0

Пожалуйста, укажите точный URL-адрес y ou используют для подключения к серверу и публикуют вывод 'openssl s_client -connect : -tls1 -servername | openssl x509 -text -noout'. Сделайте это, добавив его в свой вопрос, нажав * Edit * (и не публикуйте его в качестве комментария). В противном случае недостаточно информации, чтобы помочь устранить ее. – 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

Совместимость Kit

JAVA комплект проверяется в следующих условиях:

ОС Windows XP Pro/Windows 7 Pro 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, called closeSocket() main, обработка исключение: javax.net.ssl.SSLHandshakeException: Получено фатальное предупреждение: handshake_failure main, называемый close() main, называемый closeInternal (true) – user1450740