Authentification et clés API
Utilisez les clés API publiques et privées DEUNA dans le contexte client, serveur, marchand et environnement correct.
Sur cette page
Les références DEUNA identifient le marchand et l'environnement utilisés par une intégration. L'autorisation requise dépend du point de départ et de l'appelant, alors vérifiez le panneau d'autorisation dans le catalogue des endpoints avant de mettre en œuvre une demande.
Choisissez le bon titre de créance#
| Informations d'identification | Où elle appartient | Ce que ça fait |
|---|---|---|
| Clé publique de l'API | Navigateur ou SDK mobile | Initialise les flux d'assurance-chômage et de tokenisation supportés par le client. |
| Clé API privée | Un moteur marchand fiable | Autorise les opérations de serveur à serveur marchand par l'intermédiaire de X-Api-Key. |
| Jeton d'accès du client | Flux orienté vers le client | Ajoute le contexte client signé à travers Authorization: Bearer … sur les paramètres qui le soutiennent. |
| Session admin | Administrateur DEUNA | Donne un accès à un opérateur autorisé basé sur le rôle; ce n'est pas un titre d'IPA d'intégration. |
Autorisation de moteur de commerce#
Les opérations de marchand qui utilisent l'autorisation API-key s'attendent à la clé privée dans X-Api-Key.
curl --request GET \
--url https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN \
--header "X-Api-Key: YOUR_PRIVATE_API_KEY"const response = await fetch("https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN", {
method: "GET",
headers: {
"X-Api-Key": "YOUR_PRIVATE_API_KEY"
}
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();import requests
response = requests.request(
"GET",
"https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN",
headers={
"X-Api-Key": "YOUR_PRIVATE_API_KEY"
},
)
response.raise_for_status()
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN",
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-Api-Key: YOUR_PRIVATE_API_KEY"
]
]);
$response = curl_exec($curl);
curl_close($curl);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN"))
.header("X-Api-Key", "YOUR_PRIVATE_API_KEY")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}package main
import (
"fmt"
"io"
"net/http"
)
func main() {
request, err := http.NewRequest("GET", "https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN", nil)
if err != nil { panic(err) }
request.Header.Set("X-Api-Key", "YOUR_PRIVATE_API_KEY")
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}Certains paramètres acceptent également une Authorization entête pour porter l'identité du client:
Authorization: Bearer USER_ACCESS_TOKENLe jeton porteur ne remplace pas une clé IPA privée requise. Envoyer uniquement lorsque le paramètre documente le support du porteur et que l'opération nécessite un contexte client authentifié, comme des instruments stockés ou des méthodes de paiement spécifiques au client.
Environnements#
La boîte à sable et la production sont isolées. Chaque environnement a sa propre URL de base, les clés API, configuration marchande, connexions, données et webhooks.
Testez l'intégration complète avec les identifiants de bac à sable et la configuration de test du fournisseur.
Traiter les paiements en direct en utilisant les justificatifs de production et de marchand de production.
Stocker et faire pivoter les clés#
- Stockez les clés privées dans un gestionnaire de secrets ou une configuration d'exécution protégée.
- Portée de l'accès au service et à l'environnement qui ont besoin de la clé.
- Rétablir les identifiants à partir des journaux de demande et des pièces jointes de soutien.
- Déployez une clé de remplacement avant de révoquer l'ancienne clé afin que le trafic de production continue en toute sécurité.
- Coordonner l'émission et la rotation des clés avec votre administrateur autorisé ou DEUNA TAM.
Défauts d'authentification#
Un défaut d'autorisation revient normalement 401 Unauthorized ou 403 Forbidden. Avant de réessayer, vérifier :
- Le titre de créance est présent dans l'en-tête documenté.
- La clé appartient à l'environnement demandé et marchand.
- Le paramètre supporte la méthode d'autorisation que vous avez envoyée.
- La clé ou le jeton client n'a pas expiré ou n'a pas été révoqué.
- Tout marchand, magasin ou client nécessaire est présent.
Ne pas réessayer une erreur d'autorisation indéfiniment. Préserver la réponse request_id si disponible et l'inclure lors de la communication avec le support.
Limites de taux#
Lorsqu'une requête authentifiée dépasse son taux de requête autorisé, l'API retourne 429 Too Many Requests. Honneur Retry-After quand il est présent, reculez au lieu d'envoyer une explosion de rétractations, et réutiliser la clé d'urgence originale et l'organisme pour la même tentative de paiement. Les limites peuvent varier selon le compte et le point d'arrivée.