Ajouter des objets à l’inventaire basée sur la solution Xsolla

Xsolla fournit une solution pour l’implémentation de l’inventaire du joueur sur la base du produit In-Game Store (inventaire du joueur). Cette solution vous permet de synchroniser tous les achats et les récompenses premium des utilisateurs sur toutes les plateformes.

Vous pouvez ajouter des objets achetés à l’aide d’une interface de paiement tierce (par exemple, Google Play In-App Purchase) à inventaire du joueur.

Les objets sont ajoutés à l’inventaire lorsque la requête API serveur Grant items to users est exécutée. Si vous utilisez Firebase pour le backend de l’application, utilisez la fonction cloud préprogrammée :

  1. Ajoutez une fonction cloud à votre projet Firebase.
  2. Implémentez la logique d’appel à la fonction.

Ajouter une fonction cloud au projet Firebase

  1. Initialisez votre projet Firebase.
  2. Importez et configurez la fonction d'ajout d'objets à l'inventaire où :

    • <MerchantID>ID de commerçant, qui se trouve dans le Compte éditeur :
      • Dans la section Company settings > Company ;
      • Dans l'URL de la barre d'adresse du navigateur sur n'importe quelle page du Compte éditeur. L'URL est au format suivant : https:​//publisher.xsolla.com/<merchant ID>/<Publisher Account section>.

    • <ProjectID>Project ID, qui se trouve dans le Compte éditeur :
      • À côté du nom de votre projet ;
      • Dans la section Project Settings > Project ID.

    • <ApiKey>Clé API, qui se trouve dans le Compte éditeur dans la section Company settings > API keys ou Project settings > API keys.
Avis

Pour plus d’informations sur l’utilisation des clés API, consultez la référence API.

Recommandations principales :

  • Enregistrez la clé API générée de votre côté. Lors de sa création dans le Compte éditeur, la clé API ne s’affiche qu’une seule fois.
  • Gardez votre clé API secrète. Elle donne accès à votre compte personnel et à vos projets dans le Compte éditeur.
  • Stockez la clé API sur votre serveur et non dans des fichiers binaires ou sur le client.

Code de la fonction d’ajout d’objets à l’inventaire :
Copy
Full screen
Small screen
const merchantId = "<MerchantID>";
const projectId = "<ProjectID>";
const apiKey = "<ApiKey>";

exports.redeem = functions.https.onRequest((request, response) => {
  const sku = request.body.sku;
  const quantity = request.body.quantity;
  const userId = request.body.user_id;

  const authHeader = Buffer.from(`${merchantId}:${apiKey}`).toString("base64");

  const postData = JSON.stringify(
      [{
        "comment": "Purchased by Google Pay",
        "platform": "xsolla",
        "user": {
          "id": userId,
        },
        "items": [{
          "sku": sku,
          "quantity": quantity,
        }],
      }]
  );

  const options = {
    hostname: "store.xsolla.com",
    port: 443,
    path: `/api/v2/project/${projectId}/inventory/reward`,
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Content-Length": postData.length,
      "Authorization": `Basic ${authHeader}`,
    },
  };

  const req = https.request(options, (res) => {
    if (res.statusCode == 200) {
      response.status(200).send();
      return;
    }
    if (res.statusCode == 404) {
      response.status(404).send();
      return;
    }
    if (res.statusCode == 401) {
      response.status(401).send();
      return;
    }
    response.status(400).send();

    res.on("data", (d) => {
      process.stdout.write(d);
    });
  });
  req.on("error", (e) => {
    response.status(500).send(e.message);
  });

  req.write(postData);
  req.end();
});
  1. Déployez la fonction dans un environnement de production conformément à cet exemple.

Appel de la fonction depuis l'application

Pour ajouter des objets à l’inventaire, ajoutez une logique pour appeler la fonction depuis l’application, spécifiez redeem comme nom de fonction et passez-lui les paramètres sku, quantity et user_id.

Certaines interfaces de facturation (par exemple, Google Play In-App Purchase) nécessitent que la logique d’ajout d’un objet à l’inventaire soit initiée côté client. Dans ce cas, implémentez une méthode côté client pour appeler la fonction redeem.

À titre d’exemple d’implémentation pour Android, vous pouvez utiliser le module xsolla-googleplay-sdk qui vous permet d’ajouter des achats Google Play In-App Purchases à votre inventaire.

Pour appliquer cet exemple à votre projet :

  1. Lancez Android Studio.
  2. Ajoutez le module xsolla-googleplay-sdk à votre projet.
  3. Initialisez la bibliothèque. Pour ce faire, ajoutez la ligne ci-dessous au code source de votre projet Android, où <your-deployment-host> est l’URL de l’hôte de la fonction cloud (par exemple, https://us-central1-xsolla-sdk-demo.cloudfunctions.net
) :

Copy
Full screen
Small screen
InventoryAdmin.init("<your-deployment-host>")

L’URL de la fonction cloud s’affiche dans la ligne de commande Firebase après l’exécution de la fonction en production. L’URL de la fonction est également disponible dans la console Firebase sous la section Functions > Dashboard.

  1. Implémentez l'appel à la méthode InventoryAdmin.grantItemToUser (sku, userId, quantity, callback) selon la logique de l'application. La fonction de rappel renvoie des données sur l'ajout réussi de l'objet à l'inventaire.
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.

Signaler un problème
Nous améliorons continuellement notre contenu grâce à vos commentaires.
Indiquez votre adresse e-mail pour un suivi
Merci pour votre commentaire !