Bonjour à tous,

Voilà je bloque sur un sujet "assez simple", et je n'arrive pas à avoir de réponse du support du fournisseur de la solution.

Je tente d'utiliser les librairies Payline (prestataire de paiement) mais ça ne fonctionne pas. Pour l'instant, je n'ai fait que télécharger leur librairie, créer une classe qui teste leur exemple, mais le script me retourne l'exception suivante :

pour info, lien pour voir le contenu téléchargé de Payline : https://support.payline.com/hc/fr/ar...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
voici mon code
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
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());
 
	}
 
}

J'ai beau cherché, je n'arrive toujours pas à corriger ce problème de "handshake failure".

J'ai testé ce code sur mon mac, ainsi que sur un serveur Debian (Java 7 sur les 2)

Merci de votre aide

Vince