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
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