2015-04-30 1 views
0

Ici, je bloque sur un sujet "assez simple", et je ne peux pas avoir le soutien du fournisseur de solution de réponse. J'essaie d'utiliser les bibliothèques Payline (fournisseur de paiement), mais ce n'est pas le cas. Rien que je n'étais télécharger leur bibliothèque, créer une classe qui teste leur exemple, mais le script me retourne l'exception suivante:SSLHandshakeException: Alerte fatale reçue: échec de prise de contact

pour info, lien pour voir le Payline contenu téléchargé: https://support.payline.com/hc/fr/articles/2010-Kit-d-int%C3%A9gration-JAVA

L'exception:

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 

et mon code:

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()); 

} 

} 

debug 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() 

Je suis à la recherche, je ne peux toujours pas corriger ce problème "échec de la poignée de main".

J'ai testé ce code sur mon Mac et sur un serveur Debian (Java 7 sur 2)

Merci pour votre aide

+0

Veuillez écrire l'URL exacte Vous utilisez pour vous connecter au serveur et publier la sortie de 'openssl s_client -connect : -tls1 -servername | openssl x509 -text -noout'. Faites-le en l'ajoutant à votre question en cliquant sur * Modifier * (et ne le postez pas en commentaire). Sinon, il n'y a pas assez d'informations pour vous aider à le résoudre. – jww

Répondre

0

Vous mentionnez dans votre question que vous avez utilisé Java 7.

Le lien que vous avez posté indique que les versions compatibles sont Java 1.5 et Java 1.6. Que le code est testé et fonctionne sur ces versions.

Veuillez vérifier avec java 1.6. Cela pourrait facilement être un problème de compatibilité.

À partir du lien

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

Compatibilité Kit

kit JAVA est testé dans les environnements suivants:

Windows XP Pro/Windows 7 Pro Tomcat 5.5 et 6.0.35 Java 1.5 & 1.6

+0

Je l'erreur avec Java 1.6: main, lire: TLSv1 Alert, longueur = 2 principal, RECV TLSv1 ALERT: fatal, handshake_failure principale, appelée closesocket() principale, la gestion des exceptions: javax.net.ssl.SSLHandshakeException: Alerte fatale reçue: handshake_failure main, appelée close() main, appelée closeInternal (true) – user1450740