Définition
Une règle d'acceptance est une condition logique. Elle permet :
- d'autoriser
- de restreindre
- et/ou d'interdire des transactions
Une règle se compose de 4 éléments :
- L'action
- les attributs
- les opérateurs
- les valeurs
La syntaxe d'une règle est la suivante :
"Action" "if" "Attribut" "Opérateur de comparaison" "Valeur de comparaison"
Exemple :
REFUSE if card_country != 'FRA'
L'exemple précédent refuse les paiements si le pays de la carte n'est pas la France.
La syntaxe de la grammaire choisie par la plateforme pour son moteur d'acceptance est très semblable à la syntaxe SQL (utilisée pour dialoguer avec les bases de données).
Actions
Toutes les règles d'acceptance doivent être liées à une action.
Les actions disponibles sont les suivantes :
ALLOW
Autorise le paiement.
REFUSE
Refuse le paiement.
OTP
OTP (One Time Password) demande au porteur de carte de fournir un code de confirmation, le cryptogramme de sécurité de la carte ou un code unique qui sera envoyé par sms ou email.
THREE_D_SECURE
Impose une transaction 3D Secure.
OTP_AND_THREE_D_SECURE
Combine les actions OTP et THREE_D_SECURE.
ALERT
Adresse une notification "webhook" de la transaction associée.
Si la transaction répond aux conditions exprimées dans la règle, l'action sera exécutée et les règles suivantes ne seront pas traitées.
Dans les cas où l'action est THREE_D_SECURE ou OTP, les règles suivantes seront traitées si l'action est déjà réalisée (la transaction est déjà 3-D-SECURE ou l'OTP est déjà présent dans la transaction).
Les attributs
Les attributs (Cf. Liste des attributs) sont des critères de comparaisons liés aux données d'entrée de la transaction.
Par exemple, il peut s’agir du montant ou du pays de la carte.
Un attribut commence toujours par le caractère spécial "#". Cette convention permet au moteur de règle de détecter les attributs dans la règle saisie.
De plus, dès la saisie de ce caractère dans le formulaire, vous disposez de la liste exhaustive des attributs auto complétés.
Les attributs sont typés, c'est-à-dire qu'ils représentent des types de valeurs différentes, par exemple :
- montant = type entier (une valeur numérique sans décimale)
- pays de la carte = chaîne de caractères d'une taille de 3 caractères (Cf. liste des attributs)
Dans une règle, un attribut est toujours suivi d'un Opérateur de comparaison.
Les opérateurs de comparaison
Les opérateurs de comparaison sont des opérateurs mathématiques qui permettent au moteur de règle de comparer la valeur de l'attribut à la valeur de comparaison saisie.
Les opérateurs de comparaison sont à utiliser en fonction du type de l'attribut choisi.
Type | Opérateurs |
---|---|
Entiers (valeur numérique sans décimale) | = | != | IN | NOT IN | < | > | <= | >= |
Doubles (valeur numérique avec décimales) | = | != | IN | NOT IN | < | > | <= | >= |
Chaîne de caractères | = | != | IN | NOT IN |
Booléen (true, false) | = | != |
Les opérateurs = , != , > , < , >= et <= sont suivis d'une unique valeur de comparaison.
Les opérateurs IN et NOT IN sont suivis d'une liste de valeurs de comparaison.
Une liste de valeurs est entourée par des parenthèses et les valeurs à l'intérieur de la liste sont séparées par des virgules.
Exemple :
REFUSE if #currency NOT IN ('EUR', 'USD', 'GBP', 'CHF')
Explication : l'exemple précédent refuse tous les paiements dont la devise n'est pas l'Euro, le Dollar US, la Livre Sterling ou le Franc Suisse.
Cette syntaxe évite d'écrire plusieurs règles ou plusieurs conditions dans la même règle.
Exemple :
REFUSE if #card_country IN ('ITA', 'AFG')
est équivalent à :
REFUSE if #card_country = 'ITA' and #card_country = 'AFG'
Les valeurs
Les valeurs correspondent aux éléments de comparaison que vous définissez par rapport aux attributs. La valeur est typée en fonction de l'attribut et donc du type de l'opérateur correspondant.
En fonction du type de l'opérateur, la syntaxe permettant de définir la valeur ne sera pas la même :
Type de valeurs | Syntaxe |
---|---|
Entiers | Exemple : [...] = 100 |
Doubles | La valeur est définie avec un point comme séparateur de décimale. Exemple : [...] = 12.32 |
Chaîne de caractères | La valeur est définie entre quotes simples '. Exemple : [...] = 'FRA' |
Booléens | La valeur est true ou false. Exemple : [...] = false |
Pour les valeurs de type chaîne de caractères, en fonction de l'attribut choisi, la syntaxe de la valeur doit répondre à des normes spécifiques.
Pour les attributs de type pays (_country), les valeurs sont de type chaînes de caractères et doivent répondre à la norme ISO 3166-1 alpha-3.
Pour les attributs de type monétaire (_currency), les valeurs sont de type chaînes de caractères et doivent répondre à la norme ISO 4217.
Les valeurs pour les attributs comme la marque de la carte (commercial brand) ou la région de l'IP (ip_region), les valeurs sont de type chaînes de caractères et correspondent aux valeurs d'une liste finie, définie dans la liste des attributs.
L'attribut #always
Cet attribut ne sera jamais suivi d'aucun opérateur ni d'aucune valeur. Il est là pour définir le comportement du moteur de règle lorsque la transaction n'a rempli aucune des conditions définies dans les règles précédentes.
Exemple :
THREE_D_SECURE if #always
L'exemple précédent impose une transaction 3_D_SECURE si les données d'entrée du paiement n'ont répondu à aucune des conditions définies dans les règles précédentes.
Les opérateurs logiques et parenthésage
Opérateurs logiques and et or
La syntaxe utilisée pour définir les règles permet de créer plusieurs conditions au sein de la même règle. Les conditions resteront définies de la même manière, à la seule différence qu'un mot clé sera placé entre les conditions.
Les mots clés sont and et or. Ils permettent de définir comment le moteur de règle va interpréter la succession de ces règles. Le "and" correspond à l'inclusion et le "or" à l'exclusion.
Exemple :
ALLOW if #amount < 1000 and #card_country = 'FRA'
L'exemple précédent autorise les paiements dont le montant est inférieur à 10 ET dont la carte est française. Si l'une ou l'autre des conditions définies n'est pas remplie, l'action ne sera pas exécutée.
Exemple :
ALLOW if #amount < 1000 or #card_country = 'FRA'
L'exemple précédent autorise les paiements dont le montant est inférieur à 10 OU dont la carte est française. Si l'une ou l'autre des conditions définies est remplie, l'action sera exécutée.
Les parenthèses
L'utilisation des parenthèses dans la définition d'une règle multi-conditions permet de définir des blocs de conditions et les priorités entre ces blocs. Le principe est le même que celui des priorités pour les opérateurs mathématiques.
Exemple :
ALLOW if #amount < 1000 and (#card_country = 'FRA' or #currency = 'EUR')
Dans l'exemple précédent, le moteur de règle va d'abord interpréter le bloc (#card_country = 'FRA' or #currency = 'EUR'). C'est à dire que le paiement sera autorisé si (la carte est française ou que la devise est l'euro), ET que le montant est inférieur à 10.