Configurer la vente de clés de jeu
Vous pouvez vendre des clés de jeu par lien direct, via une interface de magasin ou un widget.
Objet | Mode de vente |
---|---|
Une copie du jeu (clé de jeu). | Lien direct, widget, ou interface de magasin. Lorsque vous vendez via une interface de magasin, utilisez la méthode d’achat rapide sans créer de panier. |
Plusieurs copies du jeu (clés de jeu) ou plusieurs jeux dans un panier. | Interface de magasin. Utilisez Site Builder ou intégrez In-Game Store API. |
Vous pouvez vendre des clés de jeu à tous les utilisateurs, autorisés ou non.
L’autorisation permet de :
- fixer des limites à la vente de clés de jeu pour l’utilisateur ;
- personnaliser les catalogues des objets et les offres promotionnelles ;
- utiliser le système de droits ;
- stocker les données utilisateur dans l’interface de paiement Xsolla.
Pour autoriser les utilisateurs, utilisez le produit Login ou votre propre système d’autorisation. Des informations détaillées sur la configuration sont fournies dans les instructions.
L’accès au jeu est automatiquement accordé après l’achat d’une clé. Cependant, les plateformes de jeu peuvent appliquer leurs propres règles en matière de clés d’activation.
Vous pouvez limiter la durée d’affichage du package de clés de jeu dans le catalogue, par exemple, pendant les promos saisonnières. Pour ce faire, passez les dates de début et de fin de la période de disponibilité au format ISO 8601 dans l’objet periods
de l’appel API correspondant :
Pour limiter le nombre de clés de jeu disponibles à l’achat par l’utilisateur, suivez les instructions.
Vendre par lien direct
Le lien suivant ouvre l’interface de paiement :
- curl
https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}
L’achat de clés de jeu par lien direct contre des devises réelles n’est possible qu’après la signature du contrat de licence avec Xsolla. Pour ce faire, dans le Compte éditeur, accédez à la section Agreements & Taxes > Agreements, remplissez le formulaire de contrat, et attendez la confirmation. L’examen du contrat peut prendre jusqu’à 3 jours ouvrables.
Pour tester les paiements, utilisez l’environnement de test. Pour ce faire, ajoutez le paramètre mode=sandbox
au lien.
Ajoutez les données suivantes à ce lien :
YOUR-ITEM-TYPE
— type de bien :game
— jeu ;game_key
— jeu sur une plateforme spécifique.bundle
— lot.
YOUR-PROJECT-ID
— ID de votre projet, qui se trouve dans la section Project settings > General settings > Project ID dans Compte éditeur.YOUR-ITEM-SKU
— UGS du package de clés de jeu. Pour vendre un jeu sur une plateforme spécifique, utilisez la méthode Lire une liste de jeux (en général, cette UGS ressemble àunit_name_drm_sku
) pour obtenir l’UGS.
- Style de l'interface de paiement : thème (sombre, ou clair, par défaut), taille et autres paramètres. Spécifiez le paramètre
ui_settings
dans l'URL et passez un objet JSONsettings.ui
encodé en Base64 comme valeur. Exemple d'URL avec les paramètres de l'interface utilisateur :
- curl
https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&ui_settings=ewoJCQkic2l6ZSI6ICJzbWFsbCIsCgkJCSJ0aGVtZSI6ICJkYXJrIgoJCX0=
- Jeton permettant de passer les données utilisateur. Utilisé lors de la vente de clés de jeu aux utilisateurs authentifiés uniquement. Ce jeton dépend de la méthode d'authentification. Exemple d'URL avec un jeton :
- curl
https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR_ITEM_SKU}&xsolla_login_token={ACCESS_TOKEN}
- Paramètre
mode=sandbox
pour les tests de paiement. Utilisez les cartes bancaires de test pour effectuer des paiements.
- Exemple d'URL de test :
- curl
https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&mode=sandbox
Vendre via une interface de magasin
Vous pouvez vendre des clés de jeu via une interface de magasin. Pour créer un magasin, vous pouvez :
- utiliser Site Builder ;
- créer votre propre version de magasin et intégrer In-Game Store API.
Pour vendre des packages de clés de jeu en utilisant In-Game Store API :
- Utilisez la méthode Lire une liste de jeux pour afficher le catalogue.
Implémentez l’achat de clés de jeu :
- Pour un achat rapide d’une clé, utilisez la méthode Créer une commande à partir d’un objet spécifique. En réponse à cette méthode, vous recevrez un jeton qui doit être utilisé pour ouvrir l’interface de paiement.
- Pour acheter plusieurs clés de jeu, utilisez les méthodes de gestion du panier :
- Mettre à jour un objet du panier actuel pour ajouter une clé de jeu au panier ;
- Get the current user’s cart pour récupérer la liste des clés de jeu dans le panier ;
- Create an order with all items from the current cart pour payer les clés de jeu dans le panier. En réponse à cette méthode, vous recevrez un jeton qui doit être utilisé pour ouvrir l’interface de paiement.
items.unit_items.sku
de la requête d’obtention de la liste des jeux.Vendre via un widget
Vous pouvez ajouter un widget à votre page pour vendre des clés de jeu et le customiser. Pour copier le code du widget, accédez à la section Widget customization après avoir créé le package de clés dans votre Compte éditeur.
Si un jeu est vendu sur une seule plateforme, le widget affichera le prix du jeu spécifique à cette plateforme.
Exemple : Acheter maintenant pour 10 $.
Si un jeu est vendu sur plusieurs plateformes, le widget affichera le prix le plus bas parmi les plateformes.
Exemple : Obtenir à partir de 10 $.
Dans la fenêtre de création de la commande, l’utilisateur peut voir les prix pour toutes les plateformes et faire son choix.
Pour afficher le prix pour une plateforme spécifique dans le widget, spécifiez l’UGS de la plateforme dans le paramètre drm.
Exemple de code de widget :
<div id="xsolla-buy-button-widget"></div>
<script>
var options = {
project_id: "101010",
sku: "my_key",
user: {
auth: "9qs9VyCIQQXBlzJQcfETIKWZDvhi4Sz1"
},
drm: "steam",
item_type: "unit",
api_settings: {
sandbox: true,
},
widget_ui: {
target_element: "#xsolla-buy-button-widget",
theme: {
foreground: "green",
background: "light"
},
},
payment_widget_ui: {
lightbox: {
height: '700px',
spinner: 'round'
}
}
};
var s = document.createElement('script');
s.type = "text/javascript";
s.async = true;
s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.8/widget.min.js";
s.addEventListener('load', function (e) {
var widgetInstance = XBuyButtonWidget.create(options);
}, false);
var head = document.getElementsByTagName('head')[0];
head.appendChild(s);
</script>
<style>
#xsolla-buy-button-widget {
/* place code for button positioning here */
margin: 10px
}
/* Styles the button itself */
.x-buy-button-widget.x-buy-button-widget__tiny
.x-buy-button-widget-payment-button {
background-color: #ff005b;
color: black;
}
</style>
Paramètres du widget
Paramètre | Type | Description |
---|---|---|
project_id | integer | ID du projet dans lequel sont téléchargés les clés de jeu ou les lots contenant des clés de jeu, des objets en jeu ou les lots contenant des biens. |
item_type | string | Type bien. Peut prendre les valeurs suivantes : virtual_good , virtual_currency , game_key ou unit . Le type unit est utilisé lorsque le jeu est disponible sur plusieurs plateformes de distribution. |
ugs | string | ID unique de l’objet. |
drm | string | UGS de la plateforme de distribution, par exemple, steam . Permet d’afficher le prix pour une plateforme spécifique. |
api_settings | object | Paramètres de configuration de l’environnement et de l’hôte :
|
utilisateur | object | Un objet contenant des données utilisateur. |
user.auth | string | Jeton d’autorisation utilisateur : Web JSON Token ou jeton d’accès Pay Station. |
user.locale | string | Langue locale de l’utilisateur. Détermine la langue du texte des boutons et de l’interface de paiement. Il s’agit d’un code de langue à deux lettres selon la norme ISO_639-1. |
widget_ui.theme | object | Thème de couleur du widget, qui détermine son apparence. Valeurs possibles : {foreground:[‘blue’,‘red’,‘green’,‘gold’], background:[’light’,‘dark’]} . |
widget_ui.template | string | Modèle. Valeurs possibles :
|
widget_ui.target_element | string | Élément de la page où le widget doit être affiché (le sélecteur jQuery doit être utilisé, par exemple #widget-example ). Obligatoire |
Paramètres qui déterminent l’apparence de l’interface de paiement
Paramètre | Type | Description |
---|---|---|
payment_ui | object | Paramètres d’apparence de l’interface de paiement. |
payment_widget_ui | object | Objet contenant les paramètres qui déterminent l’apparence de l’interface de paiement. |
payment_widget_ui.lightbox | object | Objet contenant les options pour la fenêtre modale dans laquelle l’interface de paiement est ouverte. |
payment_widget_ui.lightbox.width | string | Largeur du cadre de la lightbox. Si définie sur null , elle correspondra à la largeur de la Pay Station. La valeur par défaut est null . |
payment_widget_ui.lightbox.height | string | Hauteur du cadre de la lightbox. Si définie sur null , elle correspondra à la hauteur de Pay Station. La valeur par défaut est 100% . |
payment_widget_ui.lightbox.zIndex | integer | Définit l’ordre d’empilement. La valeur par défaut est 1000 . |
payment_widget_ui.lightbox.overlayOpacity | integer | Opacité de l’arrière-plan du widget (0 — complètement transparent, 1 — complètement opaque). La valeur par défaut est 60 % (.6 ). |
payment_widget_ui.lightbox.overlayBackground | string | Couleur de fond de la superposition. La valeur par défaut est #000000 . |
payment_widget_ui.lightbox.contentBackground | string | Couleur de fond du cadre. La valeur par défaut est #ffffff . Notez que ce changement de couleur n’affecte pas l’iframe Pay Station, mais uniquement la lightbox qui le contient. |
payment_widget_ui.lightbox.spinner | string | Type d’indicateur de chargement animé. Valeurs possibles : xsolla ou round . La valeur par défaut est xsolla . |
payment_widget_ui.lightbox.spinnerColor | string | Couleur de l’indicateur de chargement. Aucune valeur par défaut. |
payment_widget_ui.childWindow | object | Paramètres de la fenêtre enfant dans laquelle l’interface de paiement est ouverte. Fonctionne pour la version mobile. |
payment_widget_ui.childWindow.target | string | Propriété qui détermine l’endroit où la fenêtre enfant doit être ouverte. Elle peut prendre les valeurs suivantes : _blank , _self ou _parent . La valeur par défaut est _blank . |
Méthodes du widget
var widgetInstance = XBuyButtonWidget.create(options)
— crée l'instance du widget et l'affiche sur la page.widgetInstance.on(event, handler)
— lie une fonction de gestionnaire d'événements au widget.event (string)
— type d'événement.handler (function)
— fonction à exécuter lorsque l'événement est déclenché.
widgetInstance.off(event, handler)
— supprime un gestionnaire d'événement.event (string)
— type d'événement.handler (function)
— fonction de gestion précédemment liée à l'événement.
Liste des événements :
Paramètre | Description |
---|---|
init | Widget initialisé. |
open | Widget ouvert. |
load | L’interface de paiement (Pay Station) est chargée. |
close | L’interface de paiement (Pay Station) est fermée. |
status | L’utilisateur est sur la page d’état. |
status-invoice | L’utilisateur est sur la page d’état ; le paiement est en cours. |
status-delivering | L’utilisateur a été déplacé sur la page d’état ; le paiement a été effectué ; la notification de paiement a été envoyée. |
status-done | L’utilisateur est sur la page d’état ; le paiement est crédité sur le compte de l’utilisateur. |
status-troubled | L’utilisateur a été déplacé sur la page d’état, mais le paiement a échoué. |
Pour accéder à la liste des événements, utilisez l’objet XBuyButtonWidget.eventTypes
.
Customisation des boutons
- Ouvrez votre projet dans le Compte éditeur.
- Dans le menu latéral, cliquez sur Store.
- Dans le volet Game Keys, cliquez sur Configure.
- Sélectionnez une clé de jeu et accédez à l'onglet Widget customization.
- Dans le bloc Customize, sélectionnez la couleur d'arrière-plan.
theme
dans le code pour que le paramètre background
ait une chaîne vide pour valeur.- Lorsque vous ajoutez le code du widget à votre page, il inclut des styles hérités. Ajoutez les styles ci-dessous pour remplacer ces styles.
style
en dessous de la balise script
que vous avez obtenue dans l’onglet Widget customization.- css
/* This should be used for button positioning but note this technically repositions the entire widget */
#xsolla-buy-button-widget {
/* place code for button positioning here */
}
/* Styles the button itself */
.x-buy-button-widget.x-buy-button-widget__tiny
.x-buy-button-widget-payment-button {
background-color: #ff005b;
color: black;
}
/* Button on hover */
.x-buy-button-widget.x-buy-button-widget__tiny
.x-buy-button-widget-payment-button:hover {
background-color: #ff005b;
}
/* The following are style overrides to leave you with just the button */
/* space immediately surrounding button */
.x-buy-button-widget-button-block.x-buy-button-widget-button-block__light {
background-color: white;
}
/* space above button (including game title area) */
.x-buy-button-widget.x-buy-button-widget__tiny
.x-buy-button-widget-game-logo {
height: 200px;
background-image: none !important;
background-color: white;
}
/* Game title (located right above button) */
.x-buy-button-widget-game-name.x-buy-button-widget-game-name__light {
display: none !important;
}
- Les noms d'id/classes ci-dessus et l'extrait de code sont utilisés en conjonction avec le code du widget copié (image à l'étape 5). C'est pourquoi il est important que vous implémentez le code du widget copié.
- Vous pouvez utiliser le code ci-dessus tel quel ou le modifier en fonction de votre scénario. Les commentaires du code (lignes 1, 3, 5, 11, 16, 18, 22, 29) sont là pour aider à déterminer ce que chaque règle CSS cible et définir les styles futurs. Par exemple, si vous souhaitez conserver uniquement le bouton (et non l'ensemble du widget), vous devrez remplacer la couleur d'arrière-plan de votre page aux endroits ci-dessous où la couleur est
white
— lignes 20 et 27.
Comment créer plusieurs boutons ou UGS
Référez-vous au Xsolla Pay2Play Widget Simple Integration 4 buttons pour un exemple de code démontrant comment cela est mis en œuvre en utilisant le widget Pay2Play.
La structure est similaire au code du widget Buy Button. Exemple de migration :
- javascript
<div id="xsolla-buy-button-widget"></div>
<div id="xsolla-buy-button-widget-2"></div>
<script>
var options = {
project_id: "191204",
sku: "789",
item_type: "unit",
api_settings: {
sandbox: false,
},
widget_ui: {
target_element: "#xsolla-buy-button-widget",
theme: {
foreground: "gold",
background: "",
},
},
payment_widget_ui: {
lightbox: {
height: "700px",
spinner: "round",
},
},
};
// options for second buy button - note the different SKU and target_element
var options2 = {
project_id: "191204",
sku: "123",
item_type: "unit",
api_settings: {
sandbox: false,
},
widget_ui: {
target_element: "#xsolla-buy-button-widget-2",
theme: {
foreground: "gold",
background: "",
},
},
payment_widget_ui: {
lightbox: {
height: "700px",
spinner: "round",
},
},
};
var s = document.createElement("script");
s.type = "text/javascript";
s.async = true;
s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.4/widget.min.js";
// one event listener per widget instance. repeat for more buttons, passing in different SKUs
s.addEventListener(
"load",
function (e) {
var widgetInstance = XBuyButtonWidget.create(options);
},
false
);
s.addEventListener(
"load",
function (e) {
var widgetInstance2 = XBuyButtonWidget.create(options2);
},
false
);
var head = document.getElementsByTagName("head")[0];
head.appendChild(s);
</script>
- Les lignes 1 et 2 contiennent chacune un
div
correspondant à un bouton, chacun avec un ID unique. - À partir de la ligne 26 se trouvent les options pour le deuxième bouton (présentées dans l'objet
options2
). Vous aurez besoin d'un ensemble deoptions
comme ceux ci-dessus pour chaque Buy Button. Notez les différentssku
(ligne 28) ettarget_element
(ligne 34, ciblant lediv
de la ligne 2).
Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.