Système d'Objets et Boutique Payante de la Plateforme
Ce système fournit une solution unifiée de gestion d'objets payants pour la plateforme de jeu, prenant en charge des fonctionnalités telles que l'achat, la distribution et les statistiques d'objets pour les jeux autonomes, implémentant les fonctions d'achat, de consultation, d'ajout/réduction d'objets et de distribution déclenchée par le processus de jeu.
- Fonctionnalités principales : Achat d'objets, Consultation de la possession, Opérations d'ajout/réduction, Surveillance des changements, Distribution déclenchée par le processus de jeu
1. Fonctionnalités de Gestion Backend pour les Développeurs
- Les développeurs peuvent créer manuellement des données d'objets via le backend, prenant en charge le téléchargement de tableaux (tableau d'unités d'objets) et d'icônes d'objets.
- Les objets payants de la boutique ne prennent actuellement en charge que la création manuelle.
- Prend en charge la création de jusqu'à 5000 entrées de données d'objets.
- Ne prend actuellement en charge que les jeux de type achat unique et achats intégrés.
- Les objets doivent être approuvés après leur création ; une fois approuvés, ils passent par défaut à l'état activé.
Fonctionnalités de Gestion des Objets :
ID de l'objet : Identifiant unique, ne peut pas être modifié après la création
Nom et icône de l'objet : Utilisés pour l'affichage frontend
Icône de l'objet : Prend en charge le remplacement manuel de l'image de l'icône
Règles de création d'objets : Prend en charge la sélection entre Objet de jeu et Objet payant de la boutique
Limites de l'objet : Prend en charge la définition de limites pour la distribution aux joueurs via la plateforme, telles que la limite de quantité de distribution quotidienne, la limite de quantité totale ou aucune limite
Stock d'objets : Peut choisir de saisir une quantité ou de ne définir aucune limite
Paramètres de valeur de l'objet :
Objet gratuit (Platform activities) : Prend en charge la distribution via les activités de la plateforme.
Achat payant (Paid purchase) : Prend en charge l'achat payant dans la boutique d'objets.
Tarification par défaut en dollars américains
Le prix unitaire de l'objet prend en charge une précision allant jusqu'à 0,0001 USD
La valeur minimale de saisie pour les objets payants de la boutique est de 1 USD

2. Intégration du SDK d'Objets
Description des Interfaces Principales
| Nom de l'Interface | Signature de Méthode | Description de la Fonctionnalité |
|---|---|---|
| Ouvrir la fenêtre d'achat | openBuyGameItemsDialog(level: number) | Ouvre la boîte de dialogue d'achat d'objets de la boutique via l'interface fonctionnelle dans le jeu. |
| Obtenir les objets possédés | getUserGameItems(): GameItem[] | Consulte la liste actuelle d'objets du joueur lors de l'entrée dans le jeu (inclut l'ID et la quantité). |
| Ajouter un objet | addGameItem(itemId: string, amount: number) | Distribue des objets pendant la progression du jeu (prend en charge des scénarios tels que les achats, les récompenses de niveau, l'achèvement de mission, etc.). |
| Réduire un objet | subtractGameItem(itemId: string, amount: number) | Consomme des objets (scénarios d'utilisation ou de consommation pendant la progression du jeu, la quantité après déduction est non négative). |
| S'abonner aux notifications de changement | subscribeGameItemChange(callback: (res: GameItemChange) => void) | Méthode de rappel exécutée lorsque le paiement d'un objet payant de la boutique est terminé. |
Formats de Données Clés
- **GameItem (Information sur l'objet)** :
{ itemId: string, amount: number } - **GameItemChange (Information sur le changement)** :
{ itemId: string, amount: number, changeType: 'add'|'subtract', total: number }
2.1 Obtenir la liste des objets possédés
javascript
// Obtenir la liste des objets possédés par le joueur (appelé pendant l'initialisation du jeu)
const items = window.JOGOS_SDK.gameItem.getUserGameItems();
console.log('Objets possédés :', items);2.2 Ouvrir la fenêtre d'achat d'objets
javascript
// Ouvrir la fenêtre d'achat d'objets
window.JOGOS_SDK.gameItem.openBuyGameItemsDialog(10);2.3 Ajouter un objet
javascript
// Ajouter un objet (ID : 3232addasdda3aa2, quantité : 10)
window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 10);2.4 Réduire un objet
javascript
// Réduire un objet (ID : 3232addasdda3aa2, quantité : 5)
window.JOGOS_SDK.gameItem.subtractGameItem('3232addasdda3aa2', 5);2.5 S'abonner aux notifications de changement d'objet
javascript
// S'abonner aux notifications de changement d'objet
window.JOGOS_SDK.gameItem.subscribeGameItemChange((res) => {
console.log('Changement d'objet :', res);
});2.6 Flux complet d'achat d'objet payant
javascript
// 1. Lancer l'achat d'objet payant (ID du produit : item_gold_100, correspond à l'objet de 100 pièces d'or)
async function buyGoldItem() {
try {
const orderNo = await window.JOGOS_SDK.payment.buyGoods('item_gold_100');
console.log('Commande créée avec succès, numéro de commande :', orderNo);
} catch (err) {
console.error('Échec de la création de commande :', err);
alert('Échec du lancement de l'achat, veuillez réessayer plus tard');
}
}
// 2. S'abonner aux notifications de paiement réussi (appelé pendant l'initialisation du jeu)
window.JOGOS_SDK.payment.subscribeOrderPaid(async (order) => {
console.log('Paiement réussi, détails de la commande :', order);
if (order.status === 'success') {
// 3. Distribuer l'objet correspondant (ID du produit : item_gold_100 correspond à l'ID d'objet : 3232addasdda3aa2)
window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 100);
// 4. Notifier la plateforme de la livraison (doit être appelé, sinon le statut de la commande sera anormal)
await window.JOGOS_SDK.payment.deliverGoods(order.orderNo);
alert('100 pièces d'or achetées avec succès, ont été livrées dans le sac à dos !');
}
});
// 3. Scénario d'exception : Consulter les détails de la commande (par exemple, si l'objet n'est pas reçu après paiement)
async function checkOrder(orderNo) {
try {
const order = await window.JOGOS_SDK.payment.getOrderDetail(orderNo);
console.log('Requête de détails de commande :', order);
if (order.status === 'success') {
// Redistribuer l'objet
window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 100);
await window.JOGOS_SDK.payment.deliverGoods(orderNo);
}
} catch (err) {
console.error('Échec de la requête de commande :', err);
}
}2.7 Distribution d'objets déclenchée par le processus de jeu (Exemple : Récompense de fin de niveau)
javascript
// La fin du niveau 10 déclenche la distribution d'objets (inclut une logique de déduplication pour éviter les réclamations en double)
function onLevel10Clear() {
// Jeu autonome : utiliser le stockage local pour enregistrer le statut de distribution
const hasIssued = localStorage.getItem('level10_award_issued');
if (hasIssued) {
alert('Cette récompense de niveau a déjà été réclamée, ne peut pas être réclamée à nouveau');
return;
}
// Distribuer l'objet (ID : 3232addasdda3aa2, quantité : 10)
window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 10);
// Enregistrer le statut de distribution
localStorage.setItem('level10_award_issued', 'true');
alert('Niveau 10 terminé avec succès ! 10 récompenses d'objet obtenues');
}