Xsolla-logo

Paiement de commande réussiWebhook POST

Xsolla envoie le webhook order_paid à l'URL spécifiée lorsque les conditions suivantes sont remplies :

  1. L'utilisateur a procédé au paiement de la commande avec succès.
  2. Xsolla a reçu une réponse de traitement réussi du webhook payment.

Le webhook order_paid contient des informations sur les objets achetés et les détails de la transaction.

Le webhook order_paid ne sera pas envoyé si :

  • Le paiement n'a pas été effectué, par exemple :
    • le formulaire de paiement a été ouvert, mais l'utilisateur n'a pas procédé au paiement de la commande ;
    • le formulaire de paiement a été ouvert, mais des erreurs se sont produites lors du paiement.
  • Aucune réponse de traitement réussi du webhook payment n'a été reçue.

Il est recommandé de s'assurer que la vitesse de traitement du webhook order_paid soit inférieure à 3 secondes.

Les réponses attendues sont décrites dans la section Réponses. Vous pouvez utiliser d'autres codes de réponse. En fonction du code de réponse et de la connexion à la fonctionnalité de remboursement automatique de paiement, la logique de traitement du webhook côté Xsolla est la suivante :

Code de réponse Remboursement automatique de paiement désactivé (par défaut) Remboursement automatique de paiement activé
400, 401, 402, 403, 404, 409, 422, 415 Aucune action Remboursement automatique à l'utilisateur
200, 201, 204 Aucune action Aucune action
Code différent ou absence de réponse au webhook Plusieurs webhooks sont envoyés à des intervalles de temps spécifiques : 2 tentatives à intervalles de 5 minutes, 7 tentatives à intervalles de 15 minutes, 10 tentatives à intervalles de 60 minutes. Plusieurs webhooks sont envoyés à des intervalles de temps spécifiques : 2 tentatives à intervalles de 5 minutes, 7 tentatives à intervalles de 15 minutes, 10 tentatives à intervalle de 60 minutes. Si tous les webhooks sont envoyés mais qu'aucune réponse n'est reçue, l'utilisateur est automatiquement remboursé.

Pour connecter la fonctionnalité de remboursement automatique, contactez le responsable de compte du projet ou envoyez un e-mail à am@xsolla.com.

Request
Request Body schema: application/json
notification_type
required
string

Type de notification.

required
Array of objects

Liste des objets achetés par l'utilisateur.

Array
sku
required
string

ID unique de l'objet. Pour les objets de type game_key, une valeur au format sku_drm est utilisée.

type
required
string

Type de biens. Valeurs possibles : virtual_good, virtual_currency, game_key, bundle. Pour les biens de type bundle, y compris les packages de monnaie virtuelle, le tableau des objets affichera :

  • les paramètres du lot ou du package de monnaie virtuelle ;
  • les objets inclus dans le lot ou la monnaie incluse dans le package.
Enum: "virtual_good" "virtual_currency" "game_key" "bundle"
quantity
required
integer

Quantité d'objets.

amount
required
string

Coût total des objets en fonction de leur quantité. Peut différer du prix de l'objet en raison des taux de change et des commissions.

required
Array of objects

Promotions appliquées. Si aucune promotion n'a été appliquée, un tableau vide est passé dans le paramètre.

Array
amount_with_discount
string

Coût total des objets bénéficiant d'une remise.

amount_without_discount
string

Coût total des objets sans remise.

sequence
integer

Ordre d'application de promotions

is_pre_order
required
boolean

Si la valeur est true, l'objet est en précommande.

custom_attributes
object <json>

Un JSON contenant les attributs des objets et leurs valeurs.

required
object

Informations sur commande.

id
required
integer

Identifiant unique de la commande de l'utilisateur côté Xsolla.

mode
required
string

Mode de paiement. La valeur default est utilisée pour les paiements réels et sandbox pour les paiements test.

Enum: "default" "sandbox"
currency_type
required
string

Type de devise de paiement. Pour une commande gratuite, la valeur unknown est spécifiée.

Enum: Description
real

pour une devise réelle

unknown

pour une commande gratuite

virtual

pour la monnaie virtuelle

currency
required
string

Devise de commande. L'UGS est utilisée pour la monnaie virtuelle et un code à trois lettres selon la norme ISO 4217 pour les devises réelles.

amount
required
string

Coût total du panier en fonction de la devise sélectionnée.

status
required
string

Statut de la commande.

platform
required
string or null

Plateforme de paiement. La valeur xsolla est utilisée pour les paiements via Xsolla. Pour les autres paiements, la valeur correspondant au nom de la plateforme de publication de jeux est utilisée.

Enum: "xsolla" "playstation_network" "xbox_live" "pc_standalone" "nintendo_shop" "google_play" "app_store_ios" "android_standalone" "ios_standalone" "android_other" "ios_other" "pc_other"
comment
required
string or null

Commentaire de l'utilisateur sur la commande.

invoice_id
required
string or null

ID de facture pour les paiements en devises réelles. Les paiements en monnaie virtuelle ou les biens gratuits ont une valeur null.

required
Array of objects

Promotions appliquées. Si aucune promotion n'a été appliquée, un tableau vide est passé dans le paramètre.

Array
amount_with_discount
string

Coût total des objets bénéficiant d'une remise.

amount_without_discount
string

Coût total des objets sans remise.

sequence
integer

Ordre d'application de promotions

Array of objects

Coupons appliqués. Si aucun coupon n'a été appliqué, le tableau n'est pas renvoyé.

Array
code
string

Code du coupon appliqué.

external_id
string

External ID.

Array of objects

Codes promo appliqués. Si aucun code promo n'a été appliqué, le tableau n'est pas renvoyé.

Array
code
string

Code promo appliqué.

external_id
string

External ID.

required
object

Informations sur l'utilisateur.

external_id
required
string

ID utilisateur.

email
required
string

Adresse e-mail de l'utilisateur.

custom_parameters
object

Informations supplémentaires.

Responses
200

Renvoyez pour indiquer un traitement réussi.

400

Renvoyez en cas d'erreur dans les informations fournies (par exemple, un paramètre requis manquant, une autorisation échouée, etc.).

Request samples
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \
-d '{
    "notification_type": "order_paid",
    "items": [
      {
        "sku": "virtual-good-item_test",
        "type": "virtual_good",
        "is_pre_order": false,
        "quantity": 3,
        "amount": "1000",
        "promotions": [
          {
            "amount_without_discount": "6000",
            "amount_with_discount": "5000",
            "sequence": 1
          },
          {
            "amount_without_discount": "5000",
            "amount_with_discount": "4000",
            "sequence": 2
          }
        ],
        "custom_attributes":
          {
            "purchased": 0,
            "attr": "value"
          }
      },
      {
        "sku": "virtual-good-item_test_test_new",
        "type": "bundle",
        "is_pre_order": false,
        "quantity": 1,
        "amount": "1000",
        "promotions": []
      },
      {
        "sku": "gold",
        "type": "virtual_currency",
        "is_pre_order": false,
        "quantity": 1500,
        "amount": "[null]",
        "promotions": []
      }
    ],
    "order": {
      "id": 1,
      "mode": "default",
      "currency_type": "virtual",
      "currency": "sku_currency",
      "amount": "2000",
      "status": "paid",
      "platform": "xsolla",
      "comment": null,
      "invoice_id": "1",
      "promotions": [
        {
          "amount_without_discount": "4000",
          "amount_with_discount": "2000",
          "sequence": 1
        }
      ],
      "promocodes": [
        {
          "code": "promocode_some_code",
          "external_id": "promocode_sku"
        }
      ],
      "coupons": [
        {
          "code": "WINTER2021",
          "external_id": "coupon_sku"
        }
      ]
    },
    "user": {
      "external_id": "id_xsolla_login_1",
      "email": "gc_user@xsolla.com"
    }

}'