Digital Distribution Hub

Présentation

Digital Distribution Hub est une solution qui met en relation les développeurs de jeux avec de multiples partenaires de distribution qui disposent de leurs propres plateformes ou écosystèmes pour la distribution des jeux, des objets virtuels, de la monnaie virtuelle et des lots.

Partenaires de distribution — plateformes numériques ou écosystèmes qui peuvent distribuer des jeux et des objets en jeu et disposer de leur propre vitrine et de leur propre facturation. Exemples de partenaires de distribution de Xsolla :

  • super applications qui regroupent plusieurs services ;
  • applications bancaires ;
  • fournisseurs de services de télécommunication et d’Internet ;
  • kiosques de paiement ;
  • fournisseurs de programmes de cashback et de récompenses ;
  • marketplace de commerce électronique.

Avantages pour le développeur de jeux :

  • Élargissement de l’audience des jeux grâce à une connexion directe avec des partenaires de distribution à croissance rapide.
  • Augmentation des revenus en ajoutant des jeux à de nouveaux canaux de distribution avec une base d’utilisateurs unique.
  • Augmentation de la découverte organique sur des plateformes tierces grâce à des publicités et des bannières.

Avantages pour le partenaire de distribution :

  • Accroître la fidélité des utilisateurs en élargissant l’accès au contenu du jeu. Les utilisateurs achètent des clés de jeu, des objets virtuels, de la monnaie virtuelle et des lots directement à partir de l’application ou du service.
  • Fidéliser les utilisateurs actuels et en attirer de nouveaux, grâce à la popularité croissante de l’industrie du jeu.
  • Augmenter les revenus en percevant une commission sur la vente de clés de jeu, d’objets virtuels et de la monnaie virtuelle de la part des principaux éditeurs de l’industrie du jeu.

Comment ça marche

Flux d'utilisation lors de l'achat de clés de jeu

Flux d'utilisation lors de l'achat d'objets virtuels et de la monnaie virtuelle

Flux d'interaction

  1. Le développeur de jeux crée un projet dans le Compte éditeur et télécharge les clés de jeu, les objets virtuels, la monnaie virtuelle et les lots.
  2. Un partenaire de distribution demande des données utilisateur :
    • lors de la vente de jeux — l’adresse e-mail utilisateur à laquelle les clés et le reçu seront envoyés ;
    • lors de la vente des objets en jeu — l’ID utilisateur dans le jeu auquel les objets seront ajoutés, et l’adresse e-mail utilisateur à laquelle le reçu sera envoyé.
  3. L’utilisateur saisit les données suivantes dans l’interface du partenaire de distribution :
    • pour les achats de jeux — l’adresse e-mail pour recevoir les clés et le reçu ;
    • pour les achats d’objets en jeu — l’ID dans le jeu pour ajouter les objets à l’inventaire et une adresse e-mail pour recevoir le reçu.
  4. Le partenaire de distribution appelle la méthode Create user token et passe l’adresse e-mail (obligatoire) et l’ID utilisateur (obligatoire lors de la vente d’objets virtuels, de la monnaie virtuelle et de lots) en tant que paramètres.
  5. Xsolla vérifie si l’utilisateur existe dans le jeu si le développeur du jeu a configuré les webhooks. La configuration des webhooks est obligatoire pour la vente d’objets virtuels et de la monnaie virtuelle, mais facultative pour les clés de jeu.
  6. Xsolla crée un jeton avec les données de l’utilisateur et l’envoie au partenaire de distribution.
  7. Le partenaire de distribution demande un catalogue des jeux ou un catalogue des objets en jeu.
  8. Xsolla renvoie le catalogue demandé dans la réponse.
  9. Le partenaire de distribution reçoit le catalogue et l’affiche à l’utilisateur.
  10. L’utilisateur effectue un achat. Le partenaire de distribution crée un panier.
  11. Le partenaire de distribution envoie le panier de l’utilisateur pour créer une commande.
  12. Xsolla renvoie l’ID de la commande et le prix du panier, y compris les remises et les taxes.
  13. Le partenaire de distribution affiche le coût total du panier à l’utilisateur.
  14. Si l’utilisateur poursuit le paiement, le partenaire de distribution débite les fonds de l’utilisateur et affiche la page d’état du paiement.
  15. Le partenaire de distribution notifie à Xsolla que la commande a été payée et envoie les informations relatives au paiement.
  16. Xsolla informe le développeur du jeu de l’achat.
  17. L’utilisateur qui a acheté le jeu reçoit un e-mail contenant les détails de l’achat et peut activer les clés du jeu. Si l’utilisateur a acheté des objets virtuels ou de la monnaie virtuelle, ceux-ci sont ajoutés à son inventaire.

Intégration du côté du développeur de jeu

Comment connecter Digital Distribution Hub

Pour promouvoir votre jeu à travers les canaux de distribution :
  1. Connectez Store au Compte éditeur et téléchargez :
  2. Configurez les webhooks.
  3. Contactez votre responsable de la réussite client ou envoyez un e-mail à csm@xsolla.com pour activer Digital Distribution Hub pour votre projet.
Note
Si vous n’êtes pas encore partenaire de Xsolla, mais que vous êtes intéressé par une coopération et une connexion à Digital Distribution Hub, veuillez envoyer un courriel à business@xsolla.com.

Comment configurer les webhooks

La configuration des webhooks est nécessaire :

Pour configurer des webhooks dans votre Compte éditeur :

  1. Ouvrez votre projet dans le Compte éditeur.
  2. Cliquez sur Project settings dans le menu latéral et accédez à Webhooks.
  3. Réglez la bascule Webhooks sur On.
  4. Spécifiez l’URL du webhook.
  5. Une clé secrète permettant de signer les webhooks du projet est générée par défaut. Si vous souhaitez en générer une nouvelle, cliquez sur l’icône d’actualisation.
  6. Cliquez sur Save settings.

Note
Vous devez configurer des webhooks pour la distribution des objets virtuels et de la monnaie virtuelle. Sans ces webhooks, les objets en jeu ne peuvent pas être ajoutés à l’inventaire de l’utilisateur.

Validation utilisateur

Xsolla envoie le webhook Validation utilisateur pour vérifier que l’utilisateur existe dans le jeu. La validation de l’utilisateur vous permet :

  • d’afficher un catalogue personnalisé pour l’utilisateur si vous passez des attributs utilisateur dans la réponse ;
  • d’ajouter des objets à l’inventaire de l’utilisateur après l’achat.

Pour confirmer la réception du webhook, votre serveur doit renvoyer :

  • code HTTP 204 sans corps de message, si l’utilisateur existe dans le jeu ;
  • code HTTP 400 décrivant le problème, si l’utilisateur spécifié n’a pas été trouvé ou si une signature non valide a été passée.

La liste complète et le mécanisme des webhooks, y compris des exemples, sont décrits en détail dans le document Référence API.

En réponse, vous pouvez passer des paramètres de transaction supplémentaires dans l’objet custom_parameters.

Copy
Full screen
Small screen
    {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "user_attributes": {
        "type": "object",
        "required": false,
        "minProperties": 1,
        "maxProperties": 100,
        "patternProperties": {
          "^[\\w-_.]{1,255}$": {
            "oneOf": [
              {
                "type": "integer"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 255
                },
                "minItems": 1,
                "maxItems": 1000
              }
            ]
          }
        },
        "additionalProperties": false
      }
    }
    }
    

    Exemple de réponse :

    Copy
    Full screen
    Small screen
    
    {
      "user_attributes": {
        "age": 18,
        "level": 1,
        "game": "WoW",
        "is_baned": false,
        "registration_date": "2022-01-01"
      }
    }
    

    Liaison de l'ID de transaction

    Si vous utilisez un external ID (ID de transaction dans votre système) et que vous souhaitez l’associer à un ID de transaction côté Xsolla ou passer des paramètres supplémentaires lors de la validation de l’utilisateur, implémentez le traitement du webhook suivant :
    Copy
    Full screen
    Small screen
      {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notification_type": {
            "type": "string"
          },
          "order_id": {
            "type": "integer"
          },
          "project_id": {
            "type": "integer"
          },
          "user": {
            "type": "object",
            "properties": {
              "external_id": {
                "type": "string"
              },
              "email": {
                "type": "string"
              }
            }
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "item_id": {
                  "type": "integer"
                },
                "sku":  {
                  "type": "string"
                },
                "quantity": {
                  "type": "integer"
                },
                "type": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
      

      Exemple de requête :

      Copy
      Full screen
      Small screen
      
      {
        "notification_type": "create_external_transaction",
        "order_id": 1,
        "project_id": 51336,
        "user": {
          "external_id": "user_id",
          "email": "public_email@test.com"
        },
        "items": [
          {
            "item_id": 101,
            "sku": "mithril_dagger",
            "quantity": 2,
            "type": "virtual_good"
          }
        ]
      }
      

      En réponse, vous pouvez passer des paramètres de transaction supplémentaires dans l’objet custom_parameters.

      Réponse attendue :

      Copy
      Full screen
      Small screen
        {
          "id": "validation_transaction_info_response.json",
         "$schema": "http://json-schema.org/draft-07/schema#",
         "description": "DDH Project Transaction Info Response",
         "type": "object",
         "additionalProperties": true,
         "properties": {
           "id": {
             "type": "string",
             "minLength": 1
           },
          "custom_parameters": {
             "type": "object",
             "additionalProperties": true,
             "minProperties": 1,
             "maxProperties": 200
           }
         }
        }
        

        Exemple de réponse :

        Copy
        Full screen
        Small screen
        
        {
            "id":"123"
        }
        

        Liste des paramètres du webhook pour lier les ID de transaction :

        ParamètreTypeDescription
        notification_type
        stringType de notification.
        order_id
        integerID de commande.
        project_id
        integerID du projet dans lequel sont chargés les clés de jeu ou les lots contenant des clés de jeu, les objets en jeu ou les lots contenant des objets en jeu.
        user.external_id
        stringID utilisateur côté développeur du jeu.
        items
        stringListe des objets achetés par l’utilisateur.
        items.sku
        stringIdentifiant unique de l’objet.
        items.quantity
        integerQuantité des objets.
        items.type
        stringType d’objet. Valeurs possibles : virtual_good, virtual_currency, physical_good ou unit. Le type unit est utilisé pour les jeux.
        items.unit_items
        arrayTableau contenant des données du jeu.
        items.unit_items.type
        stringType d’objet dans le package de clés de jeu. Valeur unique possible game_key.
        items.unit_items.sku
        stringIdentifiant unique du package de clés de jeu spécifié. Pour un jeu sur une plateforme spécifique, la valeur est au format sku_drm. Exemple pour un jeu avec le sku 110101 sur Steam : “sku”: “110101_steam”.

        Notification d'achat

        Une fois que l’utilisateur a payé son achat, vous obtenez :

        Intégration du côté du partenaire de distribution

        Si vous souhaitez intégrer Digital Distribution Hub, envoyez un e-mail au responsable de l’intégration à psbusiness@xsolla.com et obtenez les paramètres requis pour utiliser avec Digital Distribution Hub API :

        Pendant l’intégration, vous envoyez des notifications sur les paiements réussis ou les annulations de paiement (étape 9). Pour le traitement adéquat des notifications côté Xsolla, communiquez l’adresse IP de votre serveur, à partir duquel vous envoyez les notifications, à votre responsable de compte. Si cette adresse IP venait à changer, informez-en rapidement votre responsable de compte.

        Note
        Les partenaires de distribution n’ont pas besoin d’enregistrer un Compte éditeur pour utiliser Digital Distribution Hub API. L’enregistrement d’un Compte éditeur est nécessaire pour les développeurs de jeux afin que ceux-ci puissent utiliser les méthodes API pour la vente de clés de jeu et d’objets en jeu.
        Pour distribuer des jeux dans votre application ou service, implémentez la logique d’achat de jeux suivante :
        1. Affichez un formulaire pour saisir :
          • l’adresse e-mail utilisateur — lors de la vente de jeux ;
          • l’adresse e-mail utilisateur et l’ID utilisateur dans le jeu — lors de la vente d’objets en jeu.
        Note
        Le champ de l’adresse e-mail est obligatoire lors de la vente de jeux et d’objets en jeu. Xsolla envoie à l’utilisateur un reçu contenant des informations sur le paiement à l’adresse e-mail spécifiée.

        1. L'ID utilisateur est utilisé pour les projets qui vendent des objets virtuels, de la monnaie virtuelle et des lots d'objets et de monnaie. Dans ce cas, il est également nécessaire d'afficher une indication à l'utilisateur lui signifiant d'entrer l'ID qu'il a reçu lors de son inscription au jeu.

        1. Exemple :

        1. Passez les données utilisateur reçues :
          • Adresse e-mail utilisateur. Toujours obligatoire ;
          • ID utilisateur dans le jeu. Obligatoire lors de la vente d'objets en jeu.

        1. Les données sont utilisées pour vérifier l'existence de l'utilisateur dans le jeu et recevoir un jeton d'autorisation.

        1. Utilisez la méthode Create user token. Passez des paramètres dans la requête :
        ParamètreTypeDescription
        project_id
        integerID du projet dans lequel sont chargés les clés de jeu ou les lots contenant des clés de jeu, les objets en jeu ou les lots contenant des objets en jeu.
        user.email
        stringAdresse e-mail utilisateur.
        user.id
        string or nullIdentifiant unique de l’utilisateur dans le jeu.

        1. Un jeton d'autorisation contenant les données utilisateur est renvoyé dans la réponse.

        1. Importez :

        1. Dans la demande, passez le jeton que vous avez reçu à l'étape 2 et le paramètre suivant :
        ParamètreTypeDescription
        project_id
        integerID du projet dans lequel sont chargés les clés de jeu ou les lots contenant des clés de jeu, les objets en jeu ou les lots contenant des objets en jeu.

        1. Affichez le catalogue des jeux et des objets en jeu sur votre vitrine. Dans l'interface, implémentez la possibilité de sélectionner :
          • le nombre de clés de jeu et de plateformes de publication de jeux ;
          • le nombre d'objets virtuels ;
          • la quantité de la monnaie virtuelle ou les packages de monnaie virtuelle avec une quantité fixe ;
          • le nombre de lots.

        1. Si vous utilisez un panier, le nombre d'objets est spécifié dans le panier de l'utilisateur. Si vous n'utilisez pas de panier, le choix du nombre d'objets est effectué dans le catalogue.

        1. Exemple de spécification du nombre d'objets dans le panier :
        1. Exemple de spécification du nombre d'objets dans le catalogue :

        1. Si vous n'utilisez pas de panier, passez à l'étape 6 et utilisez la méthode Create order with specified item.

        1. Pour remplir le panier, utilisez la méthode Fill the cart with items.

        1. L'utilisateur peut ajouter et supprimer des objets, ou modifier leur quantité en une seule commande. Pour mettre à jour le panier, utilisez les méthodes suivantes :

        1. Dans ce cas, utilisez Get current user's cart après la mise à jour du panier.

        1. Passez les paramètres suivants dans les requêtes pour les méthodes de remplissage et de mise à jour du panier :
        ParamètreTypeDescription
        project_id
        integerID du projet dans lequel sont chargés les clés de jeu ou les lots contenant des clés de jeu, les objets en jeu ou les lots contenant des objets en jeu.
        items.sku
        stringIdentifiant unique de l’objet spécifié par le développeur du jeu dans le Compte éditeur.
        items.quantity
        integerQuantité des objets.
        items.type
        stringType d’objet. Valeurs possibles : virtual_good, virtual_currency, physical_good ou unit. Le type unit est utilisé pour les jeux.
        items.unit_items
        arrayTableau contenant des données du jeu.
        items.unit_items.type
        stringType d’objet dans le package de clés de jeu. Valeur unique possible game_key.
        items.unit_items.sku
        stringIdentifiant unique du package de clés de jeu spécifié par le développeur du jeu dans le Compte éditeur. Pour un jeu sur une plateforme spécifique, la valeur est au format sku_drm. Exemple pour un jeu avec le sku 110101 sur Steam : “sku”: “110101_steam”.

        1. Après l'appel Fill the cart with items ou Get current user’s cart, la réponse renvoie des informations actualisées sur les biens sélectionnés : prix avant et après les remises, produits bonus.

        1. Pour créer une commande et payer les objets d'un panier, utilisez la méthode Create order with all items from current cart. Passez les paramètres suivants dans la requête :
        ParamètreTypeDescription
        project_id
        integerID du projet dans lequel sont chargés les clés de jeu ou les lots contenant des clés de jeu, les objets en jeu ou les lots contenant des objets en jeu.
        geotype
        numberID du partenaire de distribution côté Xsolla.
        currency
        stringDevise de la commande. La monnaie virtuelle utilise l’UGS et les devises réelles utilisent un code à trois lettres ISO 4217.
        1. La réponse renvoie l'ID de la commande et le prix du panier, taxes incluses.
        Note
        Pour créer une commande sans créer de panier, utilisez la méthode Create order with specified item. Dans ce cas, l’utilisateur ne peut acheter qu’un seul type de bien.

        1. Affichez le prix total du panier à l'utilisateur.
        2. Débitez les fonds de l'utilisateur depuis votre plateforme. Affichez le statut du paiement à l'utilisateur.
        3. Envoyez une notification de paiement. Si le paiement a été remboursé ou n'a pas été complété, envoyer une notification d'annulation de paiement.

        1. Pour le traitement adéquat des notifications côté Xsolla, communiquez l'adresse IP de votre serveur, à partir duquel vous envoyez les notifications, à votre responsable de compte. Si cette adresse IP venait à changer, informez-en rapidement votre responsable de compte.
        Cet article vous a été utile ?
        Merci !
        Que pouvons-nous améliorer ? Message
        Nous sommes désolés de l'apprendre
        Dites-nous pourquoi vous n'avez pas trouvé cet article utile. Message
        Merci pour votre commentaire !
        Nous examinerons votre message et l'utiliserons pour améliorer votre expérience.
        Évaluer cette page
        Évaluer cette page
        Que pouvons-nous améliorer ?

        Préfère ne pas répondre

        Merci pour votre commentaire !
        Dernière mise à jour: 22 Janvier 2024

        Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.