Portail/Guides d'Intégration/WordPress & Web
Guide Technique Officiel

Documentation d'Intégration API Éligibilité WordPress

Guide d'implémentation clé en main pour intégrer l'autocomplétion BAN et l'éligibilité multi-technologies sur vos sites WordPress sans modifier le code backend.

Version : 2.4.0 (2026)Format : REST / JSON UTF-8Environnement : Production & TestClient Cible : WordPress, WooCommerce, CRM

1. Vue d'Ensemble & Authentification

L'API Telxora fournit un moteur d'éligibilité télécom national couvrant l'ensemble du territoire français (France métropolitaine et DROM-COM : Guadeloupe, Martinique, Guyane, La Réunion, Mayotte, Saint-Martin).

URLs de Base

EnvironnementBase URLStatut
Production & Staging Livehttps://backend.eligentra.telxora.comActif
Développement Localhttp://localhost:8000Optionnel

Système d'Authentification

L'authentification s'effectue via une clé API partenaire secrète transmise dans chaque requête HTTP :

headers • HTTP Request
1X-API-Key: telecom_live_sk_partner_sample_2026
2Accept: application/json

2. Recherche BAN (Autocomplétion)

Pour garantir un taux de conversion maximal sur vos formulaires WordPress, l'utilisateur saisit les premières lettres de son adresse. L'API interroge instantanément la Base Adresse Nationale (BAN) officielle.

GET /api/v1/search/autocomplete

Paramètres de Requête :

ChampTypeObligatoireDescription
qstringOuiTerme de recherche (min. 2 caractères). Ex: "12 rue de la paix"
limitintNonNombre max de résultats (défaut : 5, max : 15)
Champs Retournés pour Chaque Adresse :

L'API retourne ban_id, label (adresse complète), postcode, city, imb_id (identifiant immeuble ARCEP), ainsi que les coordonnées géographiques latitude et longitude.

3. Éligibilité Multi-Technologies

Dès que l'utilisateur sélectionne une adresse dans la liste d'autocomplétion, votre script WordPress transmet le ban_id à l'endpoint d'éligibilité.

GET /api/v1/eligibility

Paramètres Supportés :

  • ban_id :Identifiant unique d'adresse BAN (Recommandé).
  • imb_id :Identifiant d'immeuble ARCEP (Optionnel si ban_id fourni).
  • partner :Code du partenaire (ex : XIWO). Applique les règles de filtrage de technologies spécifiques.

4. Technologies Réseau & 4G/5G Mobile

L'API évalue simultanément 5 technologies télécoms distinctes selon une hiérarchie stricte :

Fibre Optique (FTTH)Priorité 1

Jusqu'à 1 Gbps symétrique. Basé sur les bases IMB ARCEP trimestrielles et les points de mutualisation PM.

5G / 4G Fixe (Box)Priorité 2

Jusqu'à 300 Mbps. Évalué par proximité géospatiale avec les pylônes ANFR 5G/4G (rayon de 1.5 à 3.5 km).

Radio FWA (5GHz)Priorité 3

Jusqu'à 100 Mbps. Déployé en zones RIP ou DROM-COM (Guadeloupe, Martinique, etc.) sans ligne fixe.

Satellite (LEO / GEO)Priorité 4

Jusqu'à 50 Mbps. Solution universelle pour les zones blanches isolées de France métropolitaine et Outre-mer.

5. Modèle JSON & Opérateurs

Exemple représentatif d'une réponse JSON 200 OK complète retournée par le moteur d'éligibilité :

response (200 OK) • application/json
1{
2 "ban_id": "75102_7065_00012",
3 "imb_id": "IMB/75102/X/0012",
4 "address": "12 Rue de la Paix 75002 Paris",
5 "city": "Paris",
6 "postcode": "75002",
7 "eligible": true,
8 "partner": "XIWO",
9 "primary_technology": "FTTH",
10 "technologies": [
11 {
12 "technology": "FTTH",
13 "status": "AVAILABLE",
14 "eligible": true,
15 "operator": "Orange / XP Fibre",
16 "debit_max_down": "1 Gbps",
17 "debit_max_up": "800 Mbps",
18 "price_indicative": "29.99 €/mois",
19 "decision_reason": "Bâtiment raccordé et fibré (Statut ARCEP: Déployé)"
20 },
21 {
22 "technology": "5G_BOX",
23 "status": "AVAILABLE",
24 "eligible": true,
25 "operator": "Free Mobile / Bouygues",
26 "debit_max_down": "300 Mbps",
27 "debit_max_up": "50 Mbps",
28 "price_indicative": "24.99 €/mois",
29 "decision_reason": "Antenne 5G active à moins de 350m"
30 },
31 {
32 "technology": "RADIO_FWA",
33 "status": "UNAVAILABLE",
34 "eligible": false,
35 "operator": "XIWO 5GHz",
36 "decision_reason": "Hors zone de couverture radio (Zone très dense fibrée)"
37 },
38 {
39 "technology": "SATELLITE",
40 "status": "AVAILABLE",
41 "eligible": true,
42 "operator": "Eutelsat / Starlink",
43 "debit_max_down": "50 Mbps",
44 "debit_max_up": "10 Mbps",
45 "price_indicative": "39.99 €/mois",
46 "decision_reason": "Couverture satellitaire nationale active"
47 }
48 ]
49}

6. Code PHP & Widget WordPress

Voici la classe PHP intégrale prête à coller dans le fichier functions.php de votre thème ou dans un plugin d'extension. Elle utilise exclusivement les fonctions natives de WordPress (wp_remote_get et set_transient) :

functions.php • WordPress 5.8+, 6.x & Elementor
1<?php
2/**
3 * Client d'intégration API Éligibilité Telxora pour WordPress
4 * Compatible WordPress 5.8+, 6.x, WooCommerce et Elementor
5 *
6 * Sécurité : Défini dans wp-config.php de préférence :
7 * define('TELXORA_API_KEY', 'telecom_live_sk_partner_sample_2026');
8 */
9class Telxora_Eligibility_API {
10
11 private static function get_base_url() {
12 return defined('TELECOM_FTTH_BASE_URL')
13 ? TELECOM_FTTH_BASE_URL
14 : 'https://backend.eligentra.telxora.com';
15 }
16
17 private static function get_api_key() {
18 return defined('TELECOM_FTTH_API_KEY')
19 ? TELECOM_FTTH_API_KEY
20 : 'telecom_live_sk_partner_sample_2026';
21 }
22
23 private static $timeout = 8; // Timeout non bloquant en secondes
24
25 /**
26 * 1. Recherche d'adresses Base Adresse Nationale (BAN)
27 * @param string $query Texte saisi par l'internaute
28 * @param int $limit Nombre max de suggestions
29 * @return array Liste d'adresses normalisées avec ban_id et imb_id
30 */
31 public static function search_address($query, $limit = 5) {
32 if (empty($query) || strlen(trim($query)) < 2) {
33 return array();
34 }
35
36 $endpoint = self::get_base_url() . '/api/v1/search/autocomplete?' . http_build_query(array(
37 'q' => trim($query),
38 'limit' => intval($limit),
39 ));
40
41 $response = wp_remote_get($endpoint, array(
42 'headers' => array(
43 'X-API-Key' => self::get_api_key(),
44 'Accept' => 'application/json',
45 ),
46 'timeout' => self::$timeout,
47 ));
48
49 if (is_wp_error($response) || wp_remote_retrieve_response_code($response) !== 200) {
50 return array();
51 }
52
53 $body = wp_remote_retrieve_body($response);
54 return json_decode($body, true);
55 }
56
57 /**
58 * 2. Test d'éligibilité multi-technologies complet
59 * Avec cache Transient WordPress de 24 heures pour préserver vos quotas
60 * @param string $ban_id Identifiant officiel BAN
61 * @param string $partner Identifiant partenaire (par défaut: XIWO)
62 * @return array Résultats d'éligibilité détaillés par technologie
63 */
64 public static function check_eligibility($ban_id, $partner = 'XIWO') {
65 if (empty($ban_id)) {
66 return array('success' => false, 'error' => 'Identifiant BAN requis');
67 }
68
69 // Clé de cache transient unique
70 $cache_key = 'telecom_ftth_elig_' . md5($ban_id . '_' . $partner);
71 $cached = get_transient($cache_key);
72 if ($cached !== false) {
73 return $cached;
74 }
75
76 $endpoint = self::get_base_url() . '/api/v1/eligibility?' . http_build_query(array(
77 'ban_id' => $ban_id,
78 'partner' => $partner,
79 ));
80
81 $response = wp_remote_get($endpoint, array(
82 'headers' => array(
83 'X-API-Key' => self::get_api_key(),
84 'Accept' => 'application/json',
85 ),
86 'timeout' => self::$timeout,
87 ));
88
89 if (is_wp_error($response)) {
90 return array('success' => false, 'error' => $response->get_error_message());
91 }
92
93 $status_code = wp_remote_retrieve_response_code($response);
94 $body = wp_remote_retrieve_body($response);
95 $data = json_decode($body, true);
96
97 if ($status_code === 200) {
98 // Mise en cache locale pour 24 heures (DAY_IN_SECONDS)
99 set_transient($cache_key, $data, DAY_IN_SECONDS);
100 return $data;
101 }
102
103 return array('success' => false, 'status' => $status_code, 'error' => $data);
104 }
105}

7. Codes HTTP & Gestion des Erreurs

CodeSignificationAction Recommandée pour le Développeur
200 OKRequête valideTraiter le tableau technologies.
400 Bad RequestParamètre manquantVérifier que ban_id n'est pas vide.
401 UnauthorizedClé API absente ou incorrecteVérifier le header X-API-Key dans votre configuration.
404 Not FoundAdresse inconnue de la baseInviter l'utilisateur à vérifier le numéro de rue ou le code postal.
429 Rate LimitSeuil de requêtes dépassé (120 req/min)Activer le cache transient WordPress de 24h.

8. Données & Adresses de Test

Utilisez ces adresses réelles pour valider le comportement de votre widget WordPress avant la mise en production :

Adresse de Testban_idRésultat Attendu
12 Rue de la Paix 75002 Paris75102_7065_00012Fibre FTTH Déployée (1 Gbps) + 5G Active
14 Boulevard Saint-Germain 75005 Paris75105_8545_00014Fibre FTTH Raccordée (1 Gbps)
25 Rue Vincent Raspail 97110 Pointe-à-Pitre97120_0290_00025Radio 5GHz FWA Éligible (Outre-Mer DROM)