Claves de autenticación y API
Utilice claves API públicas y privadas de DEUNA en el contexto correcto de cliente, servidor, comerciante y entorno.
En esta página
Las credenciales DEUNA identifican el comerciante y el entorno utilizado por una integración. La autorización requerida depende del punto final y de la persona que llama, así que verifique el panel de autorización en la catálogo de endpoints antes de implementar una solicitud.
Elija la credencial correcta#
| Credencial | donde pertenece | ¿Qué hace? |
|---|---|---|
| Clave API pública | Navegador o SDK móvil | Inicializa los flujos de tokenización y UI del lado del cliente compatibles. |
| Clave API privada | Backend comercial confiable | Autoriza las operaciones comerciales de servidor a servidor a través de X-Api-Key. |
| token de acceso del cliente | Flujo de cara al cliente | Agrega contexto de cliente registrado a través de Authorization: Bearer … en los puntos finales que lo admiten. |
| Sesión de administrador | Administrador DEUNA | Proporciona a un operador autorizado acceso basado en roles; no es una credencial de API de integración. |
Autorización de backend del comerciante#
Las operaciones comerciales que utilizan la autorización de clave API esperan la clave privada en 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))
}Algunos puntos finales también aceptan un Authorization encabezado para llevar la identidad del cliente:
Authorization: Bearer USER_ACCESS_TOKENEl token de portador no reemplaza una clave API privada requerida. Envíelo solo cuando el punto final documente el soporte del portador y la operación necesite un contexto de cliente autenticado, como instrumentos almacenados o métodos de pago específicos del cliente.
Entornos#
El sandbox y la producción están aislados. Cada entorno tiene su propia URL base, claves API, configuración del comerciante, conexiones, datos y puntos finales de webhook.
Pruebe la integración completa con las credenciales de sandbox y la configuración de prueba del proveedor.
Procese pagos en vivo utilizando el comerciante de producción y las credenciales de producción.
Almacenar y rotar claves#
- Almacene las claves privadas en un administrador de secretos o en una configuración de tiempo de ejecución protegida.
- Acceso de alcance al servicio y entorno que necesita la clave.
- Redactar credenciales de registros de solicitudes y archivos adjuntos de soporte.
- Implemente una clave de reemplazo antes de revocar la clave anterior para que el tráfico de producción continúe de manera segura.
- Coordina la emisión y rotación de claves con tu operador Administrador autorizado o DEUNA TAM.
Fallos de autenticación#
Un error de autorización normalmente regresa 401 Unauthorized o 403 Forbidden. Antes de volver a intentarlo, verifique:
- La credencial está presente en el encabezado documentado.
- La clave pertenece al entorno y al comerciante solicitados.
- El punto final admite el método de autorización que envió.
- La clave o token de cliente no ha caducado ni ha sido revocado.
- Cualquier contexto de comerciante, tienda o cliente requerido está presente.
No vuelva a intentar un error de autorización indefinidamente. Preservar la respuesta request_id cuando esté disponible e inclúyalo cuando se comunique con el soporte.
Límites de velocidad#
Cuando una solicitud autenticada excede su tasa de solicitudes permitida, la API devuelve 429 Too Many Requests. Honor Retry-After cuando esté presente, retroceda en lugar de enviar una ráfaga de reintentos y reutilice la clave de idempotencia y el cuerpo originales para el mismo intento de pago. Los límites pueden variar según la cuenta y el punto final.