Guía de integración GraphQL
La integración del comercio consiste en conservar el identificador de redirección de Revclic y registrar y actualizar la transacción mediante GraphQL.
Endpoint y autenticación
Envía todas las operaciones mediante POST al endpoint GraphQL configurado. El cuerpo es un objeto JSON con query y variables.
Obtén un token con la mutación signin y envíalo en cada llamada protegida:
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
1. Capturar revclic_rid
Una visita procedente de Revclic puede llegar a una URL como esta:
https://merchant.example/product/123?revclic_rid=abc123
Valida el valor recibido y consérvalo en el servidor, dentro de la sesión o del carrito. No dependas únicamente de un parámetro presente al pagar.
2. Crear la transacción
mutation ReportTransaction($merchantId: ID!, $input: CreateTransactionInput!) {
createTransaction(merchantId: $merchantId, input: $input) {
id
status { code label }
createdAt
basketItems { id gtin price quantity status { code label } }
}
}
Variables con redirección:
{
"merchantId": "1",
"input": {
"redirectId": "abc123",
"basketItems": [
{
"name": "Auriculares",
"gtin": "1234567890123",
"price": "79.90",
"quantity": 1,
"commissionRate": "8.50",
"status": "pending"
}
]
}
}
redirectId es opcional. Para un pedido sin redirección de Revclic, omite el campo.
Cada artículo requiere gtin, price, quantity y commissionRate. El nombre y el estado inicial son opcionales. Guarda el identificador de la transacción y los identificadores de los artículos devueltos.
3. Actualizar artículos
Utiliza updateTransaction para informar de una validación, cancelación o devolución:
mutation UpdateReportedTransaction(
$merchantId: ID!
$transactionId: ID!
$input: UpdateTransactionInput!
) {
updateTransaction(
merchantId: $merchantId
transactionId: $transactionId
input: $input
) {
id
status { code label }
basketItems { id status { code label } }
}
}
{
"merchantId": "1",
"transactionId": "42",
"input": {
"basketItems": [
{ "id": "101", "status": "accepted" },
{ "id": "102", "status": "rejected" }
]
}
}
Obtén los estados admitidos mediante transactionStatuses en lugar de fijarlos permanentemente en la integración.
Fiabilidad y seguridad
- Realiza las llamadas desde el servidor y no expongas el token en el navegador.
- Relaciona cada transacción con una referencia interna del pedido para evitar duplicados.
- Registra los errores GraphQL y el campo
errors, incluso cuando HTTP responda200. - Reintenta con espera progresiva los errores temporales de red.
- No repitas automáticamente una mutación si desconoces si la primera llamada fue procesada; comprueba antes la transacción.
Consulta createTransaction y updateTransaction para ver payloads generados desde el esquema actual.