Xsolla-logoXsolla Developers
o
A Cuenta del editor

Descripción general

Los webhooks le permiten recibir notificaciones instantáneas de eventos configurados que se producen en el lado de Xsolla. Puede utilizar webhooks para automatizar funciones de back-end y complementarias de su aplicación.

Ejemplos de eventos sobre los que puede recibir notificaciones:

  • pagos, incluidas las compras de moneda y artículos virtuales
  • pagos y acciones de tipo periódico con suscripciones
  • reembolsos

Cuando se produce un evento configurado, Xsolla se lo notifica a su sistema a través de webhooks. Por ejemplo, tras recibir un webhook, puede hacer lo siguiente:

  • añadirlo al saldo de un usuario
  • desbloquear nuevos artículos para un usuario
  • iniciar el servicio de suscripción
  • bloquear al usuario tras la detección de un fraude

A continuación se muestra un ejemplo de cómo funciona un webhook de procesamiento de pagos:

Webhook de procesamiento de 
pagos

Establecer el lado del servidor

Para que los webhooks funcionen correctamente, deben aplicarse los siguientes ajustes:

  • Escuchar los webhooks en las siguientes direcciones IP: 185.30.20.0/24, 185.30.21.0/24 y 185.30.23.0/24.
  • La base de datos de la aplicación no debe contener dos transacciones realizadas correctamente con el mismo ID.

Aviso

Si su agente de escucha recibe un webhook con un ID de transacción existente, debe devolver el resultado anterior para esa transacción. No se recomienda cobrar dos veces al usuario ni crear registros duplicados en la base de datos.

  • Una firma creada tiene que coincidir con la transmitida en el encabezado HTTP.
  • En caso de error, devuelva el código 400 (p. ej., cuando falta un parámetro obligatorio o ha fallado una recarga). Si hay errores temporales con sus servidores, use el código 500.

Observación

La API de Xsolla acepta códigos de respuesta HTTP convencionales para las solicitudes realizadas correctamente y fallidas. El código 204 indica un procesamiento realizado correctamente.

Como las conexiones a Internet no son siempre 100 % fiables, los webhooks pueden perderse o retrasarse. Para abordar este problema, Xsolla reenvía los webhooks fallidos hasta que su agente de escucha los recibe. Los reenvíos de webhooks se realizan en el plazo de las 12 horas siguientes al anterior envío hasta que su agente de escucha confirme la recepción. El número máximo de reintentos es 12.

Observación

Aunque los problemas de conexión pueden resultar en webhooks perdidos, retrasados o duplicados, la causa más común es una lógica incorrecta en el lado del agente de escucha.

Solicitudes de firma

Las firmas digitales permiten la transmisión segura de datos. Para generar una firma:

  1. Concatene el cuerpo del JSON de la solicitud con la clave secreta de su proyecto.
  2. Aplique el 'hashing' (ejecución de un algoritmo hash) SHA-1 a la cadena resultante.
POST /your_uri HTTP/1.1
host: your.host
accept: application/json
content-type: application/json
content-length: 165
authorization: Signature 52eac2713985e212351610d008e7e14fae46f902
{
  "notification_type":"user_validation",
  "user":{
      "ip":"127.0.0.1",
      "phone":"18777976552",
      "email":"email@example.com",
      "id":1234567,
      "name":"Xsolla User",
      "country":"US"
  }
}
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \
-d '{
  "notification_type":
    "user_validation",
    "user":
      {
        "ip": "127.0.0.1",
        "phone": "18777976552",
        "email": "email@example.com",
        "id": 1234567,
        "name": "Xsolla User",
        "country": "US"
      }
    }'

Errores

Códigos de error para el código HTTP 400:

Código Mensaje
INVALID_USER Usuario no válido
INVALID_PARAMETER Parámetro no válido
INVALID_SIGNATURE Firma no válida
INCORRECT_AMOUNT Importe incorrecto
INCORRECT_INVOICE Factura incorrecta
HTTP/1.1 400 Bad Request
{
    "error":{
        "code":"INVALID_USER",
        "message":"Invalid user"
    }
}