Utiliser l'API Deluxe WebFidelity® depuis une nouvelle application
Ce document décrit les 9 opérations exposées par la plateforme SaaS Deluxe WebFidelity®. Elles sont communes à tous les clients de la plateforme et peuvent être intégrées depuis n'importe quelle application - mobile ou web - développée pour leur compte.
Vue d'ensemble
L'API n'expose pas une URL par fonction : un seul point d'entrée reçoit toutes les requêtes, et un champ request dans le corps JSON indique l'opération à exécuter. C'est ce champ - pas l'URL - qui distingue les 9 fonctions ci-après.
source pour iOS : le serveur n'accepte que quatre valeurs pour ce champ : WEB, VFP, Android ou IPhone. L'application iOS doit envoyer "source": "IPhone" - toute autre valeur (comme "iOS") sera rejetée.
| Méthode HTTP | Format du corps | Réponse | Encodage |
|---|---|---|---|
| POST uniquement | application/json |
application/json; charset=utf-8 |
UTF‑8 |
Flux d'authentification
Toute intégration suit la même séquence, dans cet ordre, avant de pouvoir appeler les fonctions métier :
| Étape | Appel | Résultat |
|---|---|---|
| 1 | checkApiConnect | Vérifie que le serveur répond |
| 2 | getToken | Ouvre une session applicative : renvoie le jeton tk et le subscription_Id |
| 3 | getCard, saveCard, … | Chaque appel suivant transmet tk + subscription_Id + suid + keyword + source |
subscription_Id, suid, keyword et source à ce qui a été signé lors de getToken. Si l'un de ces champs diffère, ou si le jeton est expiré, l'appel est rejeté - les 4 valeurs doivent donc être conservées telles quelles côté client entre les deux appels.
Format des erreurs
Toutes les réponses partagent la même enveloppe. Le client teste uniquement la valeur du champ Response.
Les messages d'erreur métier (carte introuvable, email déjà utilisé, PIN invalide…) sont renvoyés en français, prêts à être affichés à l'utilisateur.
Vérifier la connexion au serveur
Un simple ping applicatif, sans authentification. Sert à détecter une coupure réseau avant de tenter getToken.
Ouvrir une session (authentification)
Identifie le client de la plateforme SaaS (suid + keyword) et renvoie le jeton tk à réutiliser dans tous les appels suivants, ainsi que les informations de son abonnement.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| uid | string | oui | Identifiant unique généré côté client pour cet appel |
| suid | string | oui | Identifiant du client dans la base Deluxe WebFidelity® |
| keyword | string | oui | Clé secrète associée à ce client |
| source | string | oui | WEB · VFP · Android · IPhone |
uid et keyword : ces identifiants sont propres à chaque client de la plateforme et vous sont communiqués séparément, par e‑mail. Ils ne figurent pas dans ce document - les exemples ci‑dessous utilisent des valeurs de remplacement.
state_Id : si sa valeur n'est pas 1, l'abonnement de ce client est désactivé - l'application doit bloquer l'accès même si le jeton est valide.
Récupérer une carte de fidélité
Renvoie l'état complet d'une carte : identité du porteur, statuts de vérification et solde de points. Accepte soit l'identifiant interne, soit le code imprimé sur la carte physique - voir fonction 07 pour ce second usage.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| card_Id | integer | l'un des deux | Identifiant interne de la carte |
| code | integer | l'un des deux | Code de carte (6 à 8 chiffres) |
| is_Demo | 0/1 | non | Renvoie une carte fictive, sans toucher la base - utile pour développer sans compte réel |
Créer ou modifier une carte
id = 0 crée une nouvelle carte ; tout autre id met à jour la carte existante. Le serveur valide chaque champ et renvoie un message d'erreur explicite en cas de rejet.
| Paramètre | Type | Requis | Règle de validation |
|---|---|---|---|
| id | integer | oui | 0 pour une création |
| typeId | integer | oui | Type de carte |
| code | integer | selon contexte | 6 à 8 chiffres, doit être unique |
| pin | integer | oui | 4 chiffres (1000–9999) |
| firstName / lastName | string | oui | Non vides |
| ddn | date | oui | Date de naissance valide |
| string | oui | Format valide, unique sur l'abonnement | |
| mobile | string | oui | 8 chiffres minimum |
Modifier le code PIN
Change le code PIN utilisé lors des paiements par points. Une confirmation est envoyée par email au porteur de la carte.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| card_Id | integer | oui | Identifiant de la carte |
| pinCode | integer | oui | 4 chiffres (1000–9999) |
| is_Demo | 0/1 | non | Simule un succès sans écrire en base |
Envoyer l'email de confirmation
Envoie un lien de confirmation d'adresse email, valable 10 minutes. Refuse l'envoi si l'adresse est déjà confirmée (is_vMail).
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| card_Id | integer | oui | Identifiant de la carte |
| code | string | oui | Code de la carte, doit correspondre à card_Id |
| appName | string | oui | Nom de l'application affiché dans l'email envoyé au porteur de la carte |
| source | string | oui | WEB · VFP · Android · IPhone |
Rattacher un compte existant
Même opération serveur que la fonction 03, appelée ici avec le code imprimé sur la carte plutôt que l'identifiant interne - l'usage typique est un écran « J'ai déjà une carte » où l'utilisateur saisit son code et son email.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| code | integer | oui | Code imprimé sur la carte physique |
email de la réponse à la saisie de l'utilisateur - le serveur ne fait pas cette comparaison lui‑même.
Historique du compte
Renvoie le solde de points ainsi que les 200 derniers mouvements (débits et crédits), les plus récents en premier.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| card_Id | integer | oui | Identifiant de la carte |
debit et credit sont deux colonnes distinctes plutôt qu'un montant signé unique : un mouvement donné remplit l'une ou l'autre, jamais les deux.
Récupérer un code PIN oublié
Renvoie le code PIN actuel par email au porteur de la carte - le serveur ne le retourne jamais directement dans la réponse JSON.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| card_Id | integer | oui | Identifiant de la carte |
| is_Demo | 0/1 | non | Simule un succès sans envoyer d'email |