Xsolla-logoXsolla Developers
o
A Cuenta del editor

Declined paymentWebhook POST

If a transaction is declined by a payment system, Xsolla sends the transaction details in a webhook of the ps_declined type to your configured webhook URL. The webhook is sent during the authorization or payment processing stage. In this case, the payment\ order_paid webhook is not sent.

Typical reasons for payment system declines:

  • Card authorization failed (for example, the payment system could not complete the authorization process due to a technical error or no response from the bank) or was declined (for example, the bank responded but refused the transaction due to insufficient funds or invalid card details).
  • 3-D Secure verification failed, was not completed, or the user confirmation timed out.
  • The processor or acquiring bank is temporarily unavailable or returns a hard decline due to an irreversible error, such as a closed account or an invalid card number. Retrying without addressing the underlying issue will not result in a successful transaction.

Should not be confused with:

  • Anti-fraud rejections, which are reported via the afs_reject webhook.
  • Refunds and partial refunds after a successful payment, which are reported via the refund and partial_refund webhooks.

Note

To receive the ps_declined webhook, contact your Customer Success Manager or email csm@xsolla.com.

Request
Request Body schema: application/json
notification_type
required
string

Tipo de notificación.

required
object

Datos de la transacción (objeto).

dry_run
integer

Transacción de prueba. El parámetro tiene el valor 1 si es una transacción de prueba, o no se envía si la transacción es real.

external_id
string

ID externo de la transacción.

id
integer

ID de la transacción.

payment_method
integer

ID del método de pago.

object

Detalles del reembolso (objeto).

author
string

Iniciador del reembolso. El valor del campo se transmite de acuerdo con la tabla:

Iniciador del reembolso Valor de campo
Juego (vía API). API
Usuario de Cuenta del editor (reembolso automático). Correo electrónico del usuario
Usuario de Cuenta del editor (con asistencia del servicio de atención al cliente de Xsolla). support@xsolla.com
Xsolla (con asistencia del servicio de atención al cliente de Xsolla). support@xsolla.com
code
integer

ID del código.

reason
string

Motivo del reembolso.

object

Configuración del proyecto personalizada (objeto).

merchant_id
integer

ID de vendedor.

project_id
integer

ID del proyecto. Encontrará este parámetro en su cuenta Publisher junto al nombre del proyecto.

object

Datos del usuario (objeto).

id
required
string

ID de usuario.

country
string

Código de país. Dos letras mayúsculas de conformidad con la norma ISO 3166-1 alpha-2.

email
string

Correo electrónico del usuario.

ip
string

IP del usuario.

name
string

Nombre de usuario.

Responses
204

Devuelve para indicar un procesamiento realizado correctamente.

400

Devuelve en caso de error en la información proporcionada (p. ej., falta un parámetro obligatorio, autorización fallida, etc.). En este caso, se carga el importe en la cuenta del usuario, pero hay un fallo en la compra. Para hacer un reembolso, contacte con el servicio de atención al cliente de Xsolla escribiendo a support@xsolla.com.

500

Devuelve para indicar errores temporales en sus servidores.

Request samples
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Signature 80543ba63e1e50cf05f15150fe75e7245da9a898' \
-d '{
  "notification_type": "ps_declined",
  "settings": {
    "project_id": "18404",
    "merchant_id": "2340"
  },
  "user": {
    "ip": "127.0.0.1",
    "email": "email@example.com",
    "id": "1234567",
    "country": "US"
  },
  "transaction": {
    "id": "1",
    "dry_run": "1",
    "payment_method": "1"
  },
  "refund_details": {
    "author": "support@xsolla.com",
    "code": "8",
    "reason": "Cancellation by the PS request",
    "reason_detail": "Insufficient funds"
  }
}'
Response samples
application/json
{
  • "error": {
    }
}