Draft DSP2 25032020
En vigueur depuis le début de l’année 2018, la deuxième Directive sur les Services de Paiement (DSP2) redéfinit les normes de sécurité des paiements en ligne. Compte tenu de la forte croissance du commerce en ligne en Europe, elle vise à apporter plus de sécurité lors de la phase du paiement, tout en luttant plus activement contre les tentatives de fraude.
Tel est l’objectif de la DSP2 : renforcer et accroître la confiance des e-shoppers
Avec la mise en application des normes techniques de réglementation (« Regulatory Technical Standards » ou RTS) découlant de la DSP2 depuis le 14 septembre 2019, de nouvelles exigences en termes d’authentification forte devront être appliquées à l’ensemble des transactions effectuées sur Internet pour une meilleure protection des consommateurs.
Il est donc nécessaire de vous mettre en conformité avec le 3-D Secure v2, nouvelle version du protocole d’EMVCo (organisme regroupant des représentants des principaux réseaux de cartes et des leaders de l’industrie du paiement) normalisant le processus d’authentification forte pour les paiements en ligne.
N.B. : Le standard 3-D Secure ne s’applique que pour les paiements par carte (Visa, Mastercard, CB, American Express) et non pour les paiements réalisés via des méthodes de paiement alternatives ou locales (Klarna, iDEAL, Bancontact…).
En tant que prestataire de services de paiement, HiPay est là pour vous accompagner et faciliter votre transition vers ces nouvelles modalités d’authentification.
Ce qui change à partir du 14 septembre 2019
Aujourd’hui, le marchand ou son prestataire de paiement décide de recourir à l’authentification forte des transactions en fonction de sa politique de gestion de la fraude via un déclenchement du 3-D Secure 1.0. Les clients finaux sont alors redirigés vers une page de leur banque, où ils doivent, pour prouver leur identité, saisir un code à usage unique, généralement reçu par SMS.
À partir du 14 septembre 2019, la décision d’appliquer l’authentification forte sera prise par l’émetteur, banque du porteur de la carte (le consommateur). L’émetteur prendra cette décision en fonction des nombreux critères définis par la DSP2 (limitations, exemptions, gestion du taux de fraude…) et de l’analyse de plus de 150 données collectées à chaque processus d’achat.
Ainsi, afin de se conformer aux nouvelles exigences de la DSP2 et d’améliorer l’expérience utilisateur, le protocole 3-D Secure v2 a été développé pour bénéficier d’une authentification plus dynamique, plus sûre, et intégrant des méthodes innovantes d’authentification, comme les solutions d’authentification biométriques.
Mais surtout, la version 2 du protocole permettra aux marchands de proposer des parcours d’achat plus intégrés à leur environnement.
Lorsque les émetteurs jugeront que les données envoyées permettent d'identifier le porteur, ou que la transaction répond à certains critères d’éligibilité, le processus d’authentification sera complètement transparent pour le consommateur.
À l’inverse, lorsque les données analysées ne permettront pas d’identifier le porteur, une authentification forte sera requise.
Dans les deux cas, le transfert de responsabilité vers l’émetteur sera appliqué.
Bien comprendre le processus d’authentification forte
Cette nouvelle exigence impose aux clients de s’authentifier fortement lors de la finalisation de leurs achats, c’est-à-dire de combiner deux facteurs indépendants d’authentification.
Ces facteurs d’authentification peuvent être :
quelque chose de connu par le client (exemple : mot de passe, question secrète, code secret, etc.),
quelque chose appartenant au client (exemple : téléphone portable, appareil connecté, token, carte à puce, etc.),
quelque chose caractérisant le client (exemple : empreinte digitale, reconnaissance faciale ou vocale, reconnaissance d’iris, etc.).
La réponse technique à ces nouvelles exigences liées à l’authentification forte passe par la mise en place du 3-D Secure v2.
Pour être conforme à cette nouvelle réglementation, il est donc nécessaire :
- d’intégrer les champs requis pour le bon fonctionnement du 3-D Secure v2,
- d’évaluer le périmètre de vos transactions pouvant être exemptées d’authentification forte.
Transactions hors périmètre et exemptées d’authentification forte
Certaines transactions pourront bénéficier d’une exemption d’authentification forte; d’autres sont hors du champ de la DSP2.
Grâce aux outils de lutte anti-fraude de HiPay, nos équipes travailleront conjointement avec les marchands afin de permettre une mise en place optimale des exemptions, avec pour objectif de maximiser la fluidité des parcours d’achat, tout en luttant activement contre la fraude.
Pour plus d’informations sur les exemptions possibles, veuillez consulter notre page Web dédiée à la DSP2.
HiPay vous accompagne dans la mise en conformité avec la DSP2
Afin d’être conforme avec les exigences définies dans la DSP2, HiPay vous accompagne dans l’évolution de votre intégration technique.
Pour cela, HiPay a simplifié la mise en place du 3-D Secure v2, en minimisant les contraintes d’intégration de votre côté.
La mise en place du nouveau protocole ne modifie pas l’architecture actuelle entre le marchand et HiPay.
Cependant, afin de maximiser le succès de vos transactions et de simplifier les parcours d’achat de vos clients, il est fortement recommandé de collecter les nouveaux types de données décrits ci-dessous et de les transmettre à HiPay.
Nous vous invitons d’ores et déjà à prendre connaissance des nouveaux champs à intégrer, décrits dans le tableau qui suit.
Nouveaux champs à intégrer aux API /order et /hpayment existantes
Remarque : tous les champs non requis sont fortement conseillés.
account_info [customer]
account_info [purchase]
account_info [payment]
account_info [shipping]
Exemple JSON :
"account_info": {
"customer": {
"account_change": 20180507,
"opening_account_date": 20180507,
"password_change": 20180507
},
"purchase": {
"count": 2,
"card_stored_24h": 0,
"payment_attempts_24h": 0,
"payment_attempts_1y": 0
},
"payment": {
"enrollment_date": 20180507,
},
"shipping": {
"shipping_used_date": 20180507,
"name_indicator": 1,
"suspicious_activity": 1
}
}
device_channel
browser_info
Si votre intégration utilise les méthodes Hosted Fields / Hosted Payments, les données browser_info vous seront retournées dans la réponse de la méthode getPaymentData (en format JSON).
Si vous utilisez un CMS, les données browser_info seront récupérées et envoyées à HiPay de façon automatique.
Si vous n’utilisez pas de CMS ni les méthodes Hosted Fields / Hosted Payments, mais que vous utilisez le SDK JavaScript HiPay, vous pouvez appeler la méthode getBrowserInfo pour récupérer les données browser_info.
Dans tout autre cas, vous devez récupérer directement les données browser_info pour nous les fournir.
browser_info [java_enabled]
browser_info [javascript_enabled]
browser_info [language]
browser_info [color_depth]
browser_info [screen_height]
browser_info [screen_width]
browser_info [timezone]
browser_info [ipaddr]
browser_info [http_accept]
browser_info [http_user_agent]
Exemple JSON pour toute la section browser_info :
"browser_info": {
"java_enabled": true,
"javascript_enabled": true,
"ipaddr": "127.0.0.1",
"http_accept": "*/*",
"http_user_agent": "Mozilla/4.0",
"language": "fr",
"color_depth": "1",
"screen_height": 1080,
"screen_width": 1920,
"timezone": "300"
}
previous_auth_info [transaction_reference]
merchant_risk_statement [email_delivery_address]
merchant_risk_statement [delivery_time_frame]
merchant_risk_statement [purchase_indicator]
merchant_risk_statement [pre_order_date]
merchant_risk_statement [reorder_indicator]
merchant_risk_statement [shipping_indicator]
merchant_risk_statement [gift_card]
Exemple JSON :
"merchant_risk_statement": {
"email_delivery_address": "jeanne.dupont@test.com",
"delivery_time_frame": 1,
"purchase_indicator": 1,
"pre_order_date": 20190925,
"reorder_indicator": 1,
"shipping_indicator": 1,
"gift_card": {
"amount": 15,
"count": 1,
"currency": "EUR"
}
}
recurring_info [expiration_date]
recurring_info [frequency]
Exemple JSON :
"recurring_info:" {
"expiration_date": 20200318,
"frequency": 31
}
exemption
Exemple complet PHP :
$data = array(
// Informations commande
"orderid"=> "hipay-test-12345678910",
"description"=> "test product 01",
"long_description"=> "full description of test product 01",
"payment_product"=> "mastercard",
"cardtoken"=> "daaf85868bcaee8klniazereiuop7b0ce133e88d",
"eci"=> "7",
"authentication_indicator"=> "1",
"operation"=> "authorization",
"currency"=> "EUR",
"amount"=> 100,
"shipping"=> 1,
"tax"=> 1,
"tax_rate"=> 1,
"custom_data" => '{
"shipping_method":"click and collect",
"first_order":"0",
"products_list":"First product, Second product",
"_reporting_data_1":"my custom data 1",
"_reporting_data_2":"my custom data 2",
"_reporting_data_3":"my custom data 3",
"_reporting_data_4":"my custom data 4",
"_reporting_data_5":"my custom data 5"
}',
// Informations client
"email"=> "jane.doe@test.com",
"phone"=> "01234567890",
"birthdate"=> "19890525",
"gender"=> "f",
"firstname"=> "Jane",
"lastname"=> "Doe",
"country"=> "FR",
"streetaddress"=> "10 rue de la facturation",
"streetaddress2"=> "",
"city"=> "Paris",
"zipcode"=> "75012",
"shipto_firstname"=> "Jane",
"shipto_lastname"=> "Doe",
"shipto_streetaddress"=> "20 rue de la livraison",
"shipto_streetaddress2"=> "",
"shipto_city"=> "Paris",
"shipto_zipcode"=> "75012",
"shipto_country"=> "FR",
"cid"=> "123456",
"ipaddr"=> "xxx.xx.xxx.xx",
"accept_url"=> "",
"decline_url"=> "",
"pending_url"=> "",
"exception_url"=> "",
"cancel_url"=> "",
//Informations DSP2
"account_info"=> "{
'customer': {
'account_change': 20180507,
'opening_account_date': 20180507,
'password_change': 20180507,
},
'purchase': {
'count': 2,
'card_stored_24h': 0,
'payment_attempts_24h': 0,
'payment_attempts_1y': 0
},
'payment': {
'enrollment_date': 20180507
},
'shipping': {
'shipping_used_date': 20180507,
'name_indicator': 1,
'suspicious_activity': 1
}
}",
"device_channel"=> 2,
"browser_info"=> "{
'java_enabled': true,
'javascript_enabled': true,
'ipaddr': '127.0.0.1',
'http_accept': '*/*',
'http_user_agent': 'Mozilla/4.0',
'language': 'fr',
'color_depth': '1',
'screen_height': 0,
'screen_width': 0,
'timezone': '300'
}",
"previous_auth_info"=> "{
'transaction_reference': '987654321CBA'
}",
"merchant_risk_statement"=> "{
'email_delivery_address': 'jane.doe@test.com',
'delivery_time_frame': 1,
'purchase_indicator': 1,
'pre_order_date': 20190925,
'reorder_indicator': 1,
'shipping_indicator': 1,
'gift_card': {
'amount': 15,
'count': 1,
'currency': 'EUR' }
}",
"recurring_info"=> "{
'expiration_date': 20200318,
'frequency': 31
}"
);
Remarque : tous les champs non requis sont fortement conseillés.
account_info [customer]
account_info [purchase]
account_info [payment]
account_info [shipping]
Exemple JSON :
"account_info": {
"customer": {
"account_change": 20180507,
"opening_account_date": 20180507,
"password_change": 20180507
},
"purchase": {
"count": 2,
"card_stored_24h": 0,
"payment_attempts_24h": 0,
"payment_attempts_1y": 0
},
"payment": {
"enrollment_date": 20180507,
},
"shipping": {
"shipping_used_date": 20180507,
"name_indicator": 1,
"suspicious_activity": 1
}
}
device_channel
previous_auth_info [transaction_reference]
merchant_risk_statement [email_delivery_address]
merchant_risk_statement [delivery_time_frame]
merchant_risk_statement [purchase_indicator]
merchant_risk_statement [pre_order_date]
merchant_risk_statement [reorder_indicator]
merchant_risk_statement [shipping_indicator]
merchant_risk_statement [gift_card]
Exemple JSON :
"merchant_risk_statement": {
"email_delivery_address": "jeanne.dupont@test.com",
"delivery_time_frame": 1,
"purchase_indicator": 1,
"pre_order_date": 20190925,
"reorder_indicator": 1,
"shipping_indicator": 1,
"gift_card": {
"amount": 15,
"count": 1,
"currency": "EUR"
}
}
recurring_info [expiration_date]
recurring_info [frequency]
Exemple JSON :
"recurring_info:" {
"expiration_date": 20200318,
"frequency": 31
}
exemption
Exemple complet PHP :
$data = array(
// Design et paramétrage de la page de paiement
"template" =>"basic-js",
"time_to_limit_to_pay" =>"",
"css" =>"",
"language" =>"fr_FR",
"merchant_display_name" =>"My company name",
"display_selector"=>"1",
// Informations commande
"orderid" => "hipay-test-12345678910",
"description" => "produit test 01",
"long_description" => "produit test 01 description complète",
"payment_product" => "mastercard",
"cardtoken" => "daaf85868bcaee8klniazereiuop7b0ce133e88d",
"eci" => "7",
"authentication_indicator" => "1",
"operation" => "authorization",
"currency" => "EUR",
"amount" => 100,
"shipping"=> 1,
"tax" => 1,
"tax_rate" => 1,
"custom_data" =>
'{
"shipping_method":"click and collect",
"first_order":"0",
"products_list": "First product, Second product",
"_reporting_data_1":"my custom data 1",
"_reporting_data_2":"my custom data 2",
"_reporting_data_3":"my custom data 3",
"_reporting_data_4":"my custom data 4",
"_reporting_data_5":"my custom data 5"
}',
// Informations client
"email" => "jeanne.dupont@test.com",
"phone"=> "01234567890",
"birthdate"=> "19890525",
"gender"=> "f",
"firstname"=> "Jeanne",
"lastname"=> "Dupont",
"country"=> "FR",
"streetaddress"=> "10 rue de la facturation",
"streetaddress2"=> "",
"city"=> "Paris",
"zipcode"=> "75012",
"shipto_firstname"=> "Jeanne",
"shipto_lastname"=> "Dupont",
"shipto_streetaddress"=> "20 rue de la livraison",
"shipto_streetaddress2"=> "",
"shipto_city"=> "Paris",
"shipto_zipcode"=> "75012",
"shipto_country"=> "FR",
"cid"=> "123456",
"ipaddr"=> "xxx.xx.xxx.xx",
"accept_url" => "",
"decline_url" => "",
"pending_url" => "",
"exception_url" => "",
"cancel_url" => "",
// Informations DSP2
"account_info" =>
"{
'customer':
{
'account_change': 20180507,
'opening_account_date': 20180507,
'password_change': 20180507,
},
'purchase':
{
'count': 2,
'card_stored_24h': 0,
'payment_attempts_24h': 0,
'payment_attempts_1y': 0
},
'payment':
{
'enrollment_date': 20180507
},
'shipping':
{
'shipping_used_date': 20180507,
'name_indicator': 1,
'suspicious_activity': 1
}
}",
"device_channel"=> 2,
"previous_auth_info"=>
"{
'transaction_reference': '987654321CBA'
}",
"merchant_risk_statement"=> "{
'email_delivery_address': 'jeanne.dupont@test.com',
'delivery_time_frame': 1,
'purchase_indicator': 1,
'pre_order_date': 20190925,
'reorder_indicator': 1,
'shipping_indicator': 1,
'gift_card':
{
'amount': 15,
'count': 1,
'currency': 'EUR'
}
}",
"recurring_info"=>
"{
'expiration_date': 20200318,
'frequency': 31
}"
);
Dates importantes
- 11 septembre 2019 :
La Banque de France a autorisé un plan de migration de 18 mois pour la mise en conformité des paiements électroniques avec la DSP2 (pour plus d’informations, veuillez lire le communiqué de presse).
- 1er avril 2020 :
Authentification forte obligatoire pour toutes les transactions supérieures à 500 €
- 1er avril 2021 :
Authentification forte obligatoire pour toutes les transactions e-commerce
SDK et modules disponibles et mis à jour pour la DSP2
- JavaScript SDK
https://developer.hipay.com/doc/hipay-enterprise-sdk-js_3/Home/ - PHP SDK
https://developer.hipay.com/doc/hipay-enterprise-sdk-php/ - PrestaShop 1.6 - 1.7 module
https://developer.hipay.com/doc/hipay-enterprise-sdk-prestashop_1-6-1-7/ - Magento 1 module
https://developer.hipay.com/doc/hipay-enterprise-sdk-magento_1/ - Magento 2 module
https://developer.hipay.com/doc/hipay-enterprise-sdk-magento_2/ - Android SDK
https://developer.hipay.com/doc/hipay-enterprise-sdk-android/ - WooCommerce module
https://developer.hipay.com/doc/hipay-enterprise-sdk-woocommerce/ - iOS SDK
https://developer.hipay.com/doc/hipay-enterprise-sdk-ios/