Inventaire. Objets à durée limitée
Comment ça marche
Un objet à durée limitée est un bonus premium qui ne peut être acheté qu’une seule fois. Par conséquent, l’utilisateur doit l’acheter à nouveau lorsque l’objet arrive à expiration.
Principales caractéristiques :
- L’objet à durée limitée peut être vendu un nombre illimité de fois.
- Lorsque l’utilisateur achète à nouveau l’objet, le nombre d’objets dans l’inventaire ne change pas, mais le temps avant l’expiration de l’objet augmente.
- Vous pouvez configurer le délai d’expiration de l’objet dans le Compte éditeur.
Restrictions :
- Vous pouvez gérer les objets à durée limitée uniquement côté serveur du jeu.
Qui peut l'utiliser
- Les partenaires qui ont intégré In-Game Store et qui souhaitent configurer nouveau type d'objet : les objets à durée limitée.
- Les partenaires qui souhaitent vendre des
Season Pass ,Battle Pass ou différents types d'objets offrant aux utilisateurs un avantage ou un contenu supplémentaire (par exemple, des objets ou des tâches dans le jeu) pour une durée limitée.
Comment configurer
Prérequis
Si vous n’avez pas encore intégré Xsolla Store, procédez comme suit :
- Créez un Compte éditeur Xsolla.
- Accédez à Projects et cliquez sur le bouton Create project.
- Ajoutez Project name et cliquez sur Create.
- Connectez Store à votre projet.
- Connectez le module Virtual Items.
Flux d'intégration
- Créez un groupe des objets.
- Créez des objets :
- Lors de la création d'un nouvel objet, choisissez Time-limited items dans le menu Item property.
- Spécifiez le délai d'expiration.
- Mettre en œuvre l'obtention d'articles à durée limitée dans le catalogue.
- Mettre en œuvre les méthodes d'achat d'articles à durée limitée.
Récupération des objets à durée limitée du catalogue
Implémentez la méthode API Get virtual items list pour afficher la liste complète des objets virtuels ajoutés à votre magasin.
EXEMPLE
- javascript
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/items/virtual_items?locale=en");
xhr.send(data);
//RESPONSE
"items": [
{
"attributes": [],
"description": "Conquer your foes with vindication using the Basic Blaster! ",
"groups": [
"all",
"featured",
"Xsolla",
"weapons"
],
"image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
"is_free": false,
"name": "Xsolla Basic Blaster 1",
"order": 1,
"price": {
"amount": "0.9950000000000000",
"amount_without_discount": "1.9900000000000000",
"currency": "USD"
},
"sku": "gun_1",
"type": "virtual_good"
Achat des objets à durée limitée
Après le premier achat, l’objet à durée limitée est ajouté à l’inventaire.
Après le deuxième achat et les achats ultérieurs :
- Si l’objet à durée limitée est actif, le délai d’expiration de l’objet s’additionne au temps restant.
- Si l’objet à durée limitée n’est pas actif, le délai d’expiration de l’objet est celui par défaut.
Implémentez les méthodes suivantes pour l’achat des objets à durée limitée.
Get cart
Implémentez la méthode API Get cart by ID ou Get current user’s cart pour l’achat des objets virtuels. Card ID sera utilisé pour ajouter/supprimer des objets.
EXEMPLE
- javascript
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/cart/custom_id?locale=en¤cy=USD");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"cart_id": "custom_id",
"is_free": true,
"items": [],
"price": null
}
Créer une commande avec tous les objets
- Implémentez l'une des méthodes API :
- Create order with all items from particular cart si vous avez récupéré le panier par ID ;
- Create order with all items from current cart si vous avez récupéré le panier actuel.
La commande créée aura le statut New.
- Pour ouvrir l'interface de paiement dans une nouvelle fenêtre, utilisez le lien suivant :
https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN
, oùACCESS_TOKEN
est le jeton reçu lors de la création de la commande. - Pour tester le processus de paiement :
- Utilisez l'URL suivante :
https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN
; - Définissez le paramètre sandbox sur true dans la requête ;
- Utilisez la liste des cartes bancaires pour le test.
- Utilisez l'URL suivante :
EXEMPLE
- javascript
var data = JSON.stringify({
"currency": "USD",
"locale": "en",
"sandbox": false
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://store.xsolla.com/api/v2/project/44056/payment/cart/custom_id");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"order_id": 641,
"token": "f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo"
}
Get order
Implémentez la méthode API Get order pour déterminer si l’achat a déjà été traité. Les statuts de commande possibles sont les suivants :- New — la commande a été créée, mais n’est pas encore payée ;
- Paid — la commande est payée ;
- Canceled — la commande a été annulée ;
- Done — la commande a été payée et les biens ont été ajoutés à l’inventaire.
- javascript
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/order/656");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"content": {
"is_free": false,
"items": [
{
"is_free": false,
"price": {
"amount": "0.9950",
"amount_without_discount": "1.9900",
"currency": "USD"
},
"quantity": 123,
"sku": "gun_1"
}
],
"price": {
"amount": "122.3850",
"amount_without_discount": "122.3850",
"currency": "USD"
}
},
"order_id": 656,
"status": "new"
}
Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.