Utilisation du client JavaScript (formulaire embarqué)

Cas d'usage concernés

Ce chapitre s'applique pour les cas d'utilisation suivants :
  • Paiement comptant avec saisie des données de la carte,
  • Paiement par alias,
  • Proposition d'enregistrement de la carte pendant le paiement,
  • Enregistrement de la carte pendant le paiement,
  • Enregistrement d'une carte dans un wallet acheteur (avec ou sans paiement).

Cinématique

Initialisation de la session de paiement

Ce cas d’utilisation nécessite la création d’un formToken via un appel au Web Service Charge/CreatePayment.

Méthode POST
Point d’entrée https://api-clicandpay.groupecdn.fr/api-payment/V4/Charge/CreatePayment

Aucun champ spécifique n'est nécessaire pour bénéficier de la protection 3D Secure.

Utilisez les champs ci-dessous pour construire la requête :

NOM DESCRIPTION REQUIS
amount Montant pour lequel l’authentification est demandée. Oui
currency Code alphanumérique de la devise. Oui
orderId Référence de la commande.

Ce champ est recommandé.

Non
formAction Type de comportement souhaité lors de la création de la transaction. Non
customer Objet contenant les données de l’acheteur. Non

Pour obtenir une description plus complète des champs à utiliser, testez le Web Service Charge/CreatePayment depuis notre playground.

En fonction du cas d'usage (c'est à dire de la valeur du champ formAction), une authentification forte peut être obligatoire. Dans ce cas, le champ strongAuthentication est ignoré.

Cas d'usage formAction Authentification forte requise?
Paiement simple PAYMENT

Le type d'authentification dépend de la décision de l'émetteur.

Pour les paiements en euro, le marchand peut demander une exemption à l'authentification forte si le montant est inférieur à 30€ et si la boutique possède l'option "Frictionless 3DS2".

Pour les paiements réalisés dans une autre devise, le marchand peut demander une authentification sans interaction du porteur si la boutique possède l'option "Frictionless 3DS2".

Paiement par alias PAYMENT Authentification forte et saisie du CVV requises.
Enregistrement de la carte pendant le paiement REGISTER_PAY Authentification forte requise.
Proposition d'enregistrement de la carte pendant le paiement ASK_REGISTER_PAY Authentification forte requise uniquement si l'acheteur accepte d'enregistrer son moyen de paiement.

Sinon, le comportement est identique à la valeur PAYMENT.

Paiement par wallet acheteur CUSTOMERWALLET Authentification forte requise uniquement si l'acheteur accepte d'enregistrer son moyen de paiement ou s'il utilise une carte déjà enregistrée.

Dans tous les autres cas, le comportement est identique à la valeur PAYMENT.

Analyse de la réponse

A la fin de l'opération, la plateforme retourne un objet Payment à l'URL de notification du site marchand et au client JavaScript.

Voici la liste des attributs décrivant, par cas d'usage, le résultat de l'authentification du porteur :

Cas d'usage Champs retournés
Transaction avec authentification forte réussie
  • authenticationResponse.value.status = SUCCESS : Authentification réussie.
  • authenticationResponse.value.authenticationType = CHALLENGE (Valeur retournée en 3DS1 et 3DS2).
  • authenticationResponse.value.commerceIndicator = 5 (Visa ou AMEX) ou 02 (Mastercard).
  • authenticationResponse.value.extension.authenticationType = THREEDS_V1 ou THREEDS_V2.
  • transactionDetails.liabilityShift = YES : Le paiement est garanti.
  • transactions.effectiveStrongAuthentication = ENABLED : Le porteur s'est authentifié avec succès.
Transaction avec authentification frictionless réussie, le marchand dispose de l'option "Frictionless 3DS2" et a demandé une authentification sans interaction du porteur.
  • authenticationResponse.value.status = SUCCESS : Authentification réussie.

  • authenticationResponse.value.authenticationType = FRICTIONLESS.

  • authenticationResponse.value.commerceIndicator = 5 (Visa ou AMEX) ou 02 (Mastercard).
  • authenticationResponse.value.extension.authenticationType = THREEDS_V2.
  • transactionDetails.liabilityShift = NO : Le paiement n'est pas garanti.

  • transactions.effectiveStrongAuthentication = ENABLED : Le porteur s'est authentifié avec succès.

Transaction avec authentification frictionless réussie, le marchand n'a pas demandé une authentification sans interaction du porteur.
  • authenticationResponse.value.status = SUCCESS : Authentification réussie.

  • authenticationResponse.value.authenticationType = FRICTIONLESS.

  • authenticationResponse.value.commerceIndicator = 5 (Visa ou AMEX) ou 02 (Mastercard).
  • authenticationResponse.value.extension.authenticationType = THREEDS_V2.
  • transactionDetails.liabilityShift = YES : Le paiement est garanti.

  • transactions.effectiveStrongAuthentication = ENABLED : Le porteur s'est authentifié avec succès.
Transaction avec authentification 3D Secure en échec
  • authenticationResponse.value.status = FAILED : Erreur d’authentification.

  • authenticationResponse.value.authenticationType = CHALLENGE.

  • authenticationResponse.value.commerceIndicator = null
  • authenticationResponse.value.extension.authenticationType = THREEDS_V1 ou THREEDS_V2.
  • authenticationResponse.value.reason.code = CARD_AUTHENTICATION_FAILED : Refus de l’authentification par l’émetteur.
  • transactionDetails.liabilityShift = null : Le paiement n'est pas garanti.

  • transactions.effectiveStrongAuthentication = DISABLED : l'authentification du porteur est en échec.

Carte non enrôlée
  • authenticationResponse.value.status = NOT_ENROLLED : Porteur non enrôlé.

  • authenticationResponse.value.authenticationType = null

  • authenticationResponse.value.commerceIndicator = null
  • authenticationResponse.value.extension.authenticationType = THREEDS_V1.
  • transactionDetails.liabilityShift = NO : Le paiement n'est pas garanti.

  • transactions.effectiveStrongAuthentication = DISABLED : l'authentification du porteur est en échec.