Introduction
Sherlock's est une solution de paiement de commerce électronique multicanale sécurisée conforme à la norme PCI DSS. Elle vous permet d’accepter et de gérer des transactions de paiement en prenant en compte les règles métier liées à votre activité (paiement à la livraison, paiement différé, paiement récurrent, paiement en plusieurs fois…).
L’objectif du présent document est d’expliquer l'intégration du moyen de paiement PayPal dans Sherlock's.
À qui s’adresse ce document ?
Ce document a pour objectif de vous aider à implémenter le moyen de paiement PayPal sur votre site de commerce électronique.
Il comprend :
- des informations fonctionnelles à votre attention ;
- des instructions d'implémentation à destination de votre équipe technique.
Pour avoir une vue d’ensemble de la solution Sherlock's, nous vous conseillons de consulter les documents suivants :
- Présentation fonctionnelle
- Guide de configuration des fonctionnalités
Comprendre les paiements PayPal avec Sherlock's
Principes généraux
PayPal est un moyen de paiement en ligne exploité dans plus de 200 pays.
Pour payer avec PayPal, le client doit posséder un compte PayPal avec des moyens de paiement enregistrés. Pendant le paiement, après avoir sélectionné PayPal, le client doit s'identifier et choisir l'un des moyens de paiement enregistrés sur son compte. S’il n'a pas de compte PayPal, il peut en créer un au cours de la cinématique de paiement.
Règles d’acceptation
Fonctionnalités disponibles
Canaux de paiement | ||
---|---|---|
Internet | V | Canal de paiement par défaut |
MOTO | X | |
Fax | X | |
SVI | X |
Typologies de paiement | ||
---|---|---|
Paiement immédiat | V | |
Paiement en fin de journée | V | |
Paiement différé | V | 29 jours maximum |
Paiement à l'expédition | V | |
Paiement en plusieurs fois | X | |
Paiement par abonnement | X | |
Paiement OneClick | X |
Gestion des devises | ||
---|---|---|
Acceptation multidevise | V | |
Règlement en devise | V |
Demande d'autorisation
La durée d'autorisation maximale pour une transaction PayPal est de 29 jours. Après ce délai, la transaction est expirée. À noter que pour un délai de capture supérieur à 6 jours, les fonds ne sont pas bloqués et la transaction pourra être refusée. En cas de refus, nous vous invitons à examiner le code réponse transmis par PayPal.
Vérification de paiement
La vérification de paiement est une fonctionnalité de PayPal. Elle identifie les transactions à risque et vous informe afin de mettre en attente les expéditions jusqu'à ce que PayPal ait évalué le risque de la transaction.
Si un paiement est en cours de vérification par PayPal, ou nous n'avons pas reçu le retour de Paypal escompté (timeout) l'état de la transaction est :
- TO_CONFIRM_AUTHOR (vérification du paiement à l'étape d'autorisation) ;
- TO_CONFIRM_CAPTURE (vérification du paiement à l’étape de la remise).
Un traitement par fichier est exécuté quotidiennement pour mettre à jour ces transactions vers des états finaux :
- REFUSED (si le paiement a été refusé) ;
- TO_CAPTURE/TO_VALIDATE (si l'autorisation a été approuvée) ;
- CAPTURED (si la remise a été effectuée).
Le diagramme du paragraphe Effectuer un paiement PayPal schématise ces états ainsi que les transitions.
Le statut final apparaîtra dans vos journaux des transactions pour vous permettre de continuer le traitement de la commande.
Détails du panier d'achat
Sherlock's permet d'envoyer à PayPal des informations sur le panier d'achat.
PayPal valide les montants en appliquant les règles suivantes :
- Amount=ShoppingCart.TotalAmount+ShoppingCart.TotalTaxAmount+Delivery.ChargeAmount ;
- ShoppingCartDetail.TotalAmount = ∑items item.UnitAmount∗item.Quantity ;
- ShoppingCartDetail.TotalTaxAmount = ∑items item.UnitTaxAmount∗item.Quantity.
Si la validation d'une des trois règles échoue, le paiement est abandonné par PayPal. Le code réponse Sherlock's et le code réponse acquéreur auront comme valeur « 12 » (Invalid Request).
Gestion de l'adresse de livraison
PayPal affiche l'adresse de livraison sur ses pages de paiement. L'adresse de livraison peut être récupérée à partir de deux sources différentes :
- depuis le compte PayPal du client ;
- depuis les requêtes de paiement que vous transmettez à Sherlock's.
La sélection est effectuée par le biais du champ paymentMeanData.paypal.addrOverride :
- la valeur NO_OVERRIDE sélectionne l'adresse de livraison spécifiée dans le compte PayPal du client ;
- la valeur OVERRIDE sélectionne l'adresse de livraison spécifiée dans la requête de paiement. Si aucune adresse n’est fournie dans la requête alors l’adresse du compte est affichée (valeur par défaut) ;
- la valeur NO_DISPLAY n'affiche pas l'adresse de livraison.
Créer votre compte PayPal
Afin d'utiliser le moyen de paiement PayPal sur votre site Web, vous devez posséder un compte PayPal. Il doit s'agir d'un compte professionnel (le type du compte est choisi lorsque vous vous enregistrez sur http://www.PayPal.com).
Si vous avez plusieurs boutiques actives, nous vous suggérons de créer un compte PayPal pour chacune.
Paramétrer son compte PayPal
Sur votre compte PayPal, vous devez, en tant que commerçant, autoriser le prestataire de services de paiement (PSP) à appeler l'API de PayPal.
Dans votre compte d'entreprise PayPal, allez dans Paramètres du compte, puis Accès à l'API :
Cliquez sur le lien Solution de paiement pré-intégrée.
La fenêtre Ajouter de nouveaux droits d'accès à un tiers s'ouvre. Dans le champ textuel, entrez le compte technique Sherlock's sips-gestion-services_api1.worldline.com puis cliquez sur Rechercher.
Sélectionnez les options suivantes :
- Utiliser Express Checkout pour traiter les paiements ;
- Émettre un remboursement pour une transaction spécifique ;
- Traiter les paiements par carte bancaire de vos clients;
- Autoriser et collecter vos transactions PayPal ;
- Obtenir des informations concernant une transaction en particulier ;
- Rechercher dans vos transactions les éléments correspondant à des critères spécifiques ;
- Obtenir une autorisation pour les paiements préapprouvés et initier des transactions préapprouvées ;
- Utiliser Express Checkout pour traiter les paiements par mobiles.
Cliquez ensuite sur le bouton Ajouter.
Si vous souhaitez dupliquer des transactions, vous devez également sélectionner l'option "Débiter un client sur la base d'une transaction antérieure".
Ajouter le compte PayPal sur Sherlock's
Une fois que votre compte PayPal est créé, vous pouvez contacter l’assistance technique pour lui demander d’associer ce compte à votre boutique Sherlock's. La seule information nécessaire est l’adresse électronique dont vous vous êtes servi pour créer votre compte PayPal.
Inclure les transactions PayPal dans les journaux de rapprochement des impayés (optionnel)
Pour inclure les transactions PayPal dans les journaux de rapprochement des impayés générés par Sherlock's, vous devez cocher l'option suivante dans votre compte PayPal :
Effectuer un paiement PayPal
Sherlock's vous offre deux solutions pour intégrer le moyen de paiement PayPal :
- Sherlock’s Paypage qui assure l’interface de paiement directement avec le client via son navigateur Web.
- Sherlock’s Office qui vous laisse la possibilité d’afficher vous-même vos pages de paiement et qui fonctionne par un dialogue de serveur à serveur.
Les modes de remise disponibles pour une transaction PayPal sont les suivants :
- Mode annulation : mode par défaut, il permet de remiser la transaction à une date prédéfinie, appelée délai de capture. Lorsque ce délai de capture est atteint, la remise est automatiquement envoyée. Ce délai est paramétré via le champ captureDay, sa valeur par défaut est 0 (paiement en fin de journée).
- Mode validation : vous devez valider la transaction pour déclencher la remise. Un délai de capture doit aussi être défini. Lorsque ce délai de capture est atteint ou dépassé, vous ne pourrez plus valider la transaction, celle-ci expirera donc automatiquement.
- Mode immédiat : l'autorisation et la remise sont exécutées en ligne simultanément.
Le diagramme ci-dessous explique les différents états par lesquels peuvent passer les transactions selon le mode de capture choisi :
Effectuer un paiement PayPal avec Sherlock’s Paypage
La cinématique de paiement pour Sherlock’s Paypage est décrite ci-dessous :
Paramétrer la requête de paiement
Les champs suivants ont un comportement particulier :
Nom du champ | Remarques / règles |
---|---|
captureDay | La valeur envoyée dans la requête doit être de 29 au maximum. |
paymentMeanData.paypal.invoiceId | Numéro de commande PayPal. Le contrôle d'unicité est effectué par PayPal. |
paymentMeanData.paypal.addrOverride | Permet d'effacer l'adresse du client enregistrée par PayPal ou de cacher cette adresse sur les pages PayPal. |
paymentMeanData.paypal.landingPage | Permet de ne pas afficher le formulaire d'inscription à PayPal lorsque le client est redirigé sur le site PayPal. |
paymentMeanData.paypal.mobile | Indique si le terminal utilisé est un mobile (permet de rediriger le client directement vers le site PayPal mobile). |
paymentMeanData.paypal.orderDescription | Description des produits achetés. |
paymentMeanData.paypal.dupFlag | Permet de dupliquer la transaction. La valeur par défaut est « false » (ne peut être dupliqué). |
paymentMeanData.paypal.dupDesc | Permet d’indiquer le motif d’une duplication potentielle lorsque la valeur de paymentMeanData.PayPal.dupFlag est « true ». Les détails de la transaction seront affichés sur votre compte PayPal. |
paymentMeanData.paypal.dupCustom | Champ libre à votre disposition. Il est pris en compte lorsque la valeur de paymentMeanData.PayPal.dupFlag est « true ». |
paymentMeanData.paypal.dupType | Définit le type de duplication. La valeur par défaut est « InstantOnly ». Pris en compte lorsque la valeur de paymentMeanData.PayPal.dupFlag est « true ». |
Analyser la réponse
Le tableau suivant récapitule les différents cas de réponse à traiter :
État | Champs de la réponse | Action à réaliser |
---|---|---|
Paiement accepté | acquirerResponseCode = 00
authorisationId = (voir le
Dictionnaire des données).paymentMeanBrand =
PAYPALpaymentMeanType =
WALLETresponseCode =
00 |
Vous pouvez livrer la commande. |
Refus acquéreur | acquirerResponseCode = (voir
le Dictionnaire des données).responseCode =
05 |
L’autorisation est refusée pour un motif non lié à la
fraude. Si vous n’avez pas opté pour l’option « nouvelle
tentative de paiement » (pour plus de détails veuillez consulter
le Guide de configuration des
fonctionnalités), vous pouvez proposer à votre
client de payer avec un autre moyen de paiement en générant une
nouvelle requête. |
Paiement en attente de confirmation ou timeout | acquirerResponseCode =
60responseCode =
60 |
Vous devez attendre la mise à jour automatique du statut de la transaction vers un état final avant de décider d’expédier la commande. Pour ces transactions, il est nécessaire d’utiliser les journaux de transaction pour décider de continuer le traitement de la commande. |
Refus nombre max essais atteint | responseCode = 75 |
Le client a fait plusieurs tentatives qui ont toutes échoué. |
Refus suite problème technique | acquirerResponseCode = 90-98
responseCode = 90, 99
|
Problème technique temporaire lors du traitement de la transaction. Proposez à votre client de refaire un paiement ultérieurement. |
Pour connaître l'intégralité des codes réponses (responseCode
) et codes réponses
acquéreur (acquirerResponseCode
), veuillez vous
référer au Dictionnaire des
données.
Gérer les refus
Lors d’un refus, PayPal détermine si le client peut utiliser un autre moyen de paiement enregistré sur son compte. Si c’est le cas, PayPal transmet une information particulière qui permet à Sherlock's de rediriger à nouveau le client vers PayPal pour effectuer une nouvelle tentative.
Cette fonctionnalité vous permet d’augmenter votre taux de conversion dans le cas d'un paiement refusé car elle évite que le client revienne sur votre site Web puis relance à nouveau tout le processus de paiement.
Effectuer un paiement PayPal avec Sherlock’s Office
Le processus de paiement pour Sherlock’s Office est décrit ci-dessous :
Initialiser un paiement (PaymentProviderInitialize)
L’initialisation d’un paiement PayPal est effectuée en appelant la méthode paymentProviderInitialize.
Requête d’initialisation du paiement
Les champs génériques suivants sont définis dans le cas d’une initialisation de paiement PayPal :
Nom du champ | Remarques / règles |
---|---|
captureDay | La valeur envoyée dans la requête doit être de 29 au maximum. |
paymentMeanBrand | Doit être valorisé avec PAYPAL. |
merchantReturnUrl | URL de retour du commerçant |
Vous devez valoriser les champs spécifiques suivants dans la requête d'initialisation pour un paiement PayPal :
Nom du champ | Remarques / règles |
---|---|
paymentMeanData.paypal.invoiceId | Numéro de commande PayPal. Le contrôle d'unicité est effectué par PayPal. |
paymentMeanData.paypal.addrOverride | Permet de surcharger l'adresse de l'internaute enregistrée par PayPal ou de cacher cette adresse sur les pages PayPal. |
paymentMeanData.paypal.landingPage | Permet de ne pas afficher le formulaire d'inscription à PayPal lorsque l’internaute est redirigé sur le site PayPal. |
paymentMeanData.paypal.mobile | Indique si le terminal utilisé est un mobile (permet de rediriger l’acheteur directement vers le site PayPal mobile). |
paymentMeanData.paypal.dupFlag | Permet de dupliquer la transaction. La valeur par défaut est « false » (ne peut être dupliqué). |
paymentMeanData.paypal.dupDesc | Permet d’indiquer le motif d’une duplication potentielle lorsque la valeur de paymentMeanData.PayPal.dupFlag est « true ». Les détails de la transaction seront affichés sur votre compte PayPal. |
paymentMeanData.paypal.dupCustom | Champ libre à la disposition du commerçant. Il est pris en compte lorsque la valeur de paymentMeanData.PayPal.dupFlag est « true ». |
paymentMeanData.paypal.dupType | Définit le type de duplication. La valeur par défaut est « InstantOnly ». Pris en compte lorsque la valeur de paymentMeanData.PayPal.dupFlag est « true ». |
Réponse d’initialisation du paiement
Le tableau suivant récapitule les différents cas de réponse à traiter :
État | Champs de la réponse | Action à réaliser |
---|---|---|
Initialisation de paiement acceptée | acquirerResponseCode =
00authorisationId = (voir le
Dictionnaire des données).messageVersion = version du
message récupérée en réponse à l’initialisation du
paiement.paymentMeanBrand =
PAYPALresponseCode =
00redirectionData = données de
redirection récupérées en réponse à l’initialisation du
paiement.redirectionUrl = URL de
redirection vers le site Web de PayPal. |
Redirigez le client vers redirectionUrl . |
Initialisation de paiement rejetée | responseCode <>
00 |
Consultez le champ errorFieldName , puis corrigez
la requête.En cas d’erreur persistante, contactez
l'assistance technique. |
Refus acquéreur | acquirerResponseCode = (voir
le Dictionnaire des données).responseCode =
05 |
L’autorisation est refusée pour un motif non lié à la fraude, vous pouvez proposer à votre client de payer avec un autre moyen de paiement en générant une nouvelle requête. |
Refus suite problème technique | acquirerResponseCode = 90-98
responseCode = 90, 99
|
Problème technique temporaire lors du traitement de la transaction. Proposez à votre client de refaire un paiement ultérieurement. |
Pour connaître l'intégralité des codes réponses (responseCode
) et codes réponses
acquéreur (acquirerResponseCode
), veuillez vous
référer au Dictionnaire des
données.
Rediriger le client vers le site Web de PayPal
Le client doit être redirigé vers l’URL « redirectionUrl » fournie en réponse de la méthode « paymentProviderInitialize ». Cette redirection consiste à effectuer un appel POST sur l’URL « redirectionUrl » obtenue dans la réponse à l’initialisation de paiement.
Les paramètres POST à transmettre sont « redirection_data » et « message_version » obtenus également dans la réponse à l’initialisation de paiement. Voici un exemple de formulaire de redirection.
A la fin de la cinématique de paiement, le client est redirigé sur l’URL fournie dans la requête d’initialisation, « merchantReturnUrl ». Les champs suivants sont transmis en POST et doivent être récupérés pour finaliser le paiement :
Nom du champ | Remarques / règles |
---|---|
responseCode | Code réponse du processus |
redirectionData | Données de redirection récupérées en réponse à l’initialisation du paiement. |
messageVersion | Version du message récupérée en réponse à l’initialisation du paiement. |
amount | Montant de la transaction en centimes |
merchantId | Identifiant de la boutique |
transactionReference | Référence de la transaction |
transactionId | Identifiant de la transaction |
transactionDate | Date de la transaction |
Finaliser un paiement (PaymentProviderFinalize)
Cette dernière étape vous permet d’obtenir le statut du paiement. Les paramètres obtenus lors de la redirection après la cinématique de paiement sur le site Web PayPal sont à transmettre lors de cet appel. La méthode utilisée pour finaliser un paiement est paymentProviderFinalize.
Requête de finalisation du paiement
Les champs spécifiques suivants doivent être fournis par vous dans la requête de finalisation pour un paiement PayPal.
Nom du champ | Remarques / règles |
---|---|
redirectionData | Données de redirection récupérées au retour du client vers votre site Web (voir Rediriger le client vers le site Web de PayPal). |
messageVersion | Version du message récupérée au retour du client vers votre site Web (voir Rediriger le client vers le site Web de PayPal). |
Réponse de finalisation du paiement
Le tableau suivant récapitule les différents cas de réponse à traiter :
État | Champs de la réponse | Action à réaliser |
---|---|---|
Paiement accepté | acquirerResponseCode =
00authorisationId = (voir le
Dictionnaire des données).paymentMeanBrand =
PAYPALresponseCode =
00transactionStatus = (voir le
Dictionnaire des données). |
Vous pouvez livrer la commande. |
Refus acquéreur | acquirerResponseCode = (voir
le Dictionnaire des données).responseCode =
05 |
L’autorisation est refusée pour un motif non lié à la fraude, vous pouvez proposer à votre client de payer avec un autre moyen de paiement en générant une nouvelle requête. |
Refus suite problème technique | acquirerResponseCode = 90-98
responseCode = 90, 99
|
Problème technique temporaire lors du traitement de la transaction. Proposez à votre client de refaire un paiement ultérieurement. |
Paiement en attente de confirmation ou timeout | acquirerResponseCode =
60responseCode =
60 |
Vous devez attendre la mise à jour automatique du statut de la transaction vers un état final avant de décider d’expédier la commande. Pour ces transactions, il est nécessaire d’utiliser les journaux de transaction pour décider de continuer le traitement de la commande. |
Pour connaître l'intégralité des codes réponses (responseCode
) et codes réponses
acquéreur (acquirerResponseCode
), veuillez vous
référer au Dictionnaire des
données.
Récupération des informations du client (optionnel)
La méthode paymentProviderGetContext est optionnelle et vous permet de récupérer des informations concernant le client et le paiement en cours. La requête est directement soumise à PayPal et permet notamment d’obtenir des informations sur l’adresse de livraison, l’e-mail de l’acheteur ou encore le statut du paiement chez PayPal.
Cette méthode doit être appelée après la redirection de l’acheteur de la page PayPal vers le site du marchand et avant la finalisation d’un paiement. Si elle est appelée après la finalisation, PayPal peut refuser la restitution d’informations.
Requête de récupération des informations du client
Vous trouverez ci-dessous la liste des champs devant être remplis pour cette méthode :
Nom du champ | Remarques / règles |
---|---|
redirectionData | Données de redirection. |
messageVersion | Version du message. |
Réponse de récupération des informations de l’acheteur
Nom du champ | Remarques / règles |
---|---|
paymentMeanData.paypal.payerId | Identifiant unique du client (donnée PayPal). |
paymentMeanData.paypal.payerStatus | Statut du client (donnée PayPal).
|
paymentMeanData.paypal.payerBusiness | Nom d’enseigne du client |
paymentMeanData.paypal.paymentStatus | Statut du paiement (donnée PayPal).
|
paymentMeanData.paypal.payerSuffix | Suffixe du client |
paymentMeanData.paypal.deliveryAddressStatus |
|
Gérer vos transactions PayPal
Opérations de caisse disponibles
Les opérations suivantes sont disponibles sur les transactions PayPal :
Gestion de caisse | ||
---|---|---|
Annulation | V | |
Validation | V | |
Remboursement | V | Les demandes de
remboursement PayPal sont prises en compte immédiatement, hors cas
de timeout. Le remboursement peut être effectué jusqu'à
60 jours après l'achat. Toute demande de remboursement après ce
délai a pour conséquence l'envoi du code réponse Sherlock's« 12 ». Dans les cas de timeout
(Sherlock's n'a pas reçu la réponse de Paypal), la
transaction passe dans l'état "TO_CONFIRM_CREDIT". Un
traitement par fichier est exécuté quotidiennement pour vérifier
la bonne prise en compte du remboursement par
Paypal. |
Duplication | V | Voir le paragraphe Dupliquer une transaction PayPal. |
Le diagramme ci-dessous vous permet de savoir quelle opération de gestion de caisse est disponible lorsqu'une transaction est dans un état donné :
Dupliquer une transaction PayPal
Le processus de duplication d'une transaction nécessite que la transaction initiale soit éligible à la duplication. Quatre champs doivent être transmis dans la requête de paiement initiale :
- paymentMeanData.PayPal.dupFlag
- paymentMeanData.PayPal.dupDesc
- paymentMeanData.PayPal.dupType
- paymentMeanData.PayPal.dupCustom
Marqueur de duplication
Pour marquer la transaction comme éligible à la duplication, vous devez l'indiquer comme telle dans le message de création envoyée à Sherlock's donnant au champ paymentMeanData.PayPal.dupFlag la valeur « true ».
Description
Le champ dupDesc est facultatif et n'est utilisé que si le champ dupFlag a pour valeur « true ».
Ce champ est utilisé pour ajouter une description au processus de duplication. La description sera affichée sur la page de détails du paiement PayPal.
Type
Le champ dupType est facultatif et n'est utilisé que si le champ dupFlag a pour valeur « true ».
Les valeurs acceptées sont :
- ANY : vous acceptez n'importe quel moyen de paiement pour l'accord de facturation, même si le mouvement des fonds vers votre compte peut prendre quelques jours. Cela inclut les chèques, en plus des cartes de crédit et de débit, et du solde PayPal.
- INSTANTONLY : les moyens de paiement que vous acceptez sont limités aux cartes de crédit et de débit ainsi qu'au solde PayPal (vous forcez un paiement immédiat).
Personnalisation
Le champ dupCustom est facultatif et n'est utilisé que si le champ dupFlag a pour valeur « true ».
Ce champ est un champ d'annotation personnalisé qui vous est réservé, il est affiché sur le détail de vos transactions dans votre back-office PayPal.
Consulter vos transactions PayPal
Journaux
Les journaux mis à disposition par Sherlock's vous permettent d’avoir une vision exhaustive et consolidée de vos transactions, opérations de caisse, situation comptable et impayés. Vous pouvez utiliser ces informations pour enrichir votre système d’information.
La disponibilité des transactions PayPal pour chaque type de journal est récapitulée dans le tableau ci-dessous :
Disponibilité des journaux | |
---|---|
Journal des transactions | V |
Journal des opérations | V |
Journal de rapprochement des transactions | V |
Journal de rapprochement des impayés | V |
Sherlock's Gestion
Vous pouvez consulter vos transactions PayPal et effectuer différentes opérations de gestion de caisse grâce à Sherlock's Gestion.
Voici le détail d’une transaction PayPal. Certaines informations spécifiques sont affichées comme le numéro d’autorisation PayPal.