Authentification
Chaque requête porte votre clé API dans l'en-tête X-Api-Key. Une requête sans clé valide reçoit une erreur 401.
Ne l'insérez jamais dans le code d'une page web, d'une application mobile ou d'un dépôt de code : toute personne qui la lit peut agir sur votre compte. Pour un paiement depuis une page web sans serveur, utilisez le bouton de paiement.
Créer une clé
Les clés se créent depuis votre espace Integral Pay, rubrique Clés API. La clé complète n'est affichée qu'une seule fois, à sa création : copiez-la immédiatement dans la configuration de votre serveur. Pour des raisons de sécurité, une clé ne peut pas être créée par l'API.
| Type | Préfixe | Effet |
|---|---|---|
| Test | sk_test_ | Paiements simulés : aucun client débité, aucun opérateur appelé |
| Production | sk_live_ | Paiements réels, une fois les paiements réels activés pour votre projet |
Configurer votre client
- Python
- Node.js
- PHP
- cURL
import os
import requests
API_BASE = "https://integralpay.tech/api/v1"
session = requests.Session()
session.headers.update({
"X-Api-Key": os.environ["INTEGRALPAY_API_KEY"],
"Content-Type": "application/json",
})
# Vérification : liste des paiements
resp = session.get(f"{API_BASE}/payments/", timeout=30)
resp.raise_for_status()
const API_BASE = 'https://integralpay.tech/api/v1';
async function api(method, path, body) {
const response = await fetch(`${API_BASE}${path}`, {
method,
headers: {
'X-Api-Key': process.env.INTEGRALPAY_API_KEY,
'Content-Type': 'application/json',
},
body: body ? JSON.stringify(body) : undefined,
});
return { status: response.status, data: await response.json() };
}
// Utilisation, dans une fonction async :
// const { status, data } = await api('GET', '/payments/');
<?php
$client = new GuzzleHttp\Client([
'base_uri' => 'https://integralpay.tech/api/v1/',
'headers' => [
'X-Api-Key' => getenv('INTEGRALPAY_API_KEY'),
'Content-Type' => 'application/json',
],
'timeout' => 30,
]);
// Vérification : liste des paiements (chemin SANS barre initiale)
$response = $client->get('payments/');
curl https://integralpay.tech/api/v1/payments/ \
-H "X-Api-Key: $INTEGRALPAY_API_KEY"
Avec base_uri, écrivez les chemins sans barre initiale (payments/) : un chemin qui commence par / remplace le /api/v1/ de l'adresse de base.
Mode test et production
Tout nouveau projet démarre en mode test. Integral Pay active les paiements réels après vérification de votre dossier. Le badge « Mode test » de votre tableau de bord indique cet état.
| Situation | Paiements |
|---|---|
| Projet en mode test, quelle que soit la clé | Simulés |
| Projet activé, clé de test | Simulés (paiement direct) |
| Projet activé, clé de production | Réels |
| Projet activé, lien de paiement ou bouton | Réels, quelle que soit la clé qui a créé le lien |
Chaque paiement porte un champ test (true pour un paiement simulé). Une clé de test ne voit que les paiements de test, une clé de production que les paiements réels. Vérifiez toujours test avant de livrer une commande.
Sécuriser vos clés
- Adresses IP autorisées : dans les paramètres de votre projet, limitez les appels aux adresses de vos serveurs. Un appel depuis une autre adresse est refusé (
403), même avec une clé valide. - Fuite d'une clé : désactivez-la immédiatement dans votre espace, puis créez-en une nouvelle.
- Tentatives répétées : après 20 essais avec une clé invalide, l'adresse IP de l'appelant est bloquée pendant 10 minutes.