Maintenir une même session HTTP pour un paiement avec authentification 3D Secure

Maintenir une même session HTTP pour un paiement avec authentification 3D Secure

L’architecture de la plateforme de paiement repose sur un ensemble de serveurs avec répartition de charge.

Pour assurer la continuité du processus, chaque requête associée à un même paiement doit être réalisée avec la même session HTTP.

Ainsi pour chaque requête createPayment avec authentification 3D Secure (threeDSRequest), une session côté serveur est créée.

L’ID de cette session doit être renvoyé dans l’en-tête HTTP de la réponse et devra être retourné dans la requête createPayment en mode ENABLED_FINALIZE.

Selon le language utilisé, ci-dessous deux exemples pour réaliser cette opération :

  • En JAVA

    Utilisez la propriété SESSION_MAINTAIN_PROPERTY en vous assurant qu'elle soit définie à True pour récupérer automatiquement les informations de session associées à la requête HTTP et maintenir un cookie avec l'ID de session (Standard Java , JAX-WS).

    ((BindingProvider)port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY,true);

  • En PHP
Voici un exemple de code pour récupérer l’id de session et le transmettre :
/* La méthode ci-dessous permet de récupérer l’entête HTTP de la réponse 
$/$header= $client -> __getLastResponseHeaders ();
/* Dans la chaîne de caractère obtenue, nous recherchons la présence de l’ID de la session
HTTP, stockée dans l’élément "JSESSIONID" : */
if(!preg_match("#JSESSIONID=([A-Za-z0-9\.]+)#",$header, $matches)){
return " Aucun ID de Session Renvoyé. " ; //Cas d’erreur technique
} 
$cookie= $matches[1] ) ; 
/*La méthode ci-dessous permet de spécifier un cookie qui sera envoyé dans chaque entête http
*/
$client ->__setCookie ("JSESSIONID",$cookie );

Cette méthode permet au serveur de récupérer le contenu du header et le transmettre en tant que cookie dans la requête HTTP.