Skip to content

Paiement

Le module de paiement fournit des fonctionnalités liées à l'achat d'articles dans le jeu et aux paiements forfaitaires. Après avoir lu la section pertinente pour votre moteur de jeu sur la page Introduction à JOGOS_SDK, vous pouvez utiliser les fonctions associées comme suit :

javascript
window.JOGOS_SDK.payment;

Achats intégrés aux applications (In-App Purchase)

Étape 1 : Créer un ID de produit

  • Créez des produits sur la page Information / Purchase du backend développeur.
  • Remarque : Les ID de produit ne peuvent pas être dupliqués au sein d'un même jeu.

Étape 2 : Initier une commande

  • Lorsqu'un joueur a besoin d'acheter un objet dans le jeu, vous pouvez appeler cette interface sur le bouton d'achat pour ouvrir la fenêtre de paiement Jogos.
  • Le développeur doit transmettre l'ID du produit (goodsId). Après avoir ouvert avec succès la fenêtre de paiement, un numéro de commande est retourné. Ultérieurement, le développeur peut utiliser ce numéro de commande pour interroger les informations relatives à cette commande.
  • goodsId est l'ID du produit que vous avez créé dans le backend développeur.
javascript
// Retourne le numéro de commande en cas de succès
let orderNo = await window.JOGOS_SDK.payment.buyGoods(goodsId: string);

Étape 3 : Attendre que l'utilisateur effectue le paiement

Souscrire à la notification d'achèvement du paiement de la commande depuis le client

Il peut y avoir un délai important entre le moment où un joueur passe une commande et le moment où le paiement est effectué avec succès. Les développeurs peuvent utiliser cette interface pour s'abonner aux messages de succès de paiement du joueur. Lorsqu'un joueur paie avec succès, la plateforme notifiera le callback abonné, informant activement le développeur que la commande a été payée et en retournant les informations les plus récentes sur la commande.

javascript
window.JOGOS_SDK.payment.subscribeOrderPaid(callbackFn: (order: PaymentOrder) => void);

Étape 4 : Livrer les marchandises et notifier la plateforme

Traiter la livraison côté client (Jeux standalone)

Lorsque le développeur sait que le joueur a payé avec succès, il traite automatiquement la distribution des récompenses et appelle cette interface pour notifier la plateforme que la livraison est effectuée.

Rappel
  • Si votre jeu (n'a pas de serveur de jeu), il est recommandé, après avoir détecté le paiement de l'utilisateur sur le client, d'appeler cette interface pour informer la plateforme Jogos que vous avez livré les marchandises à cet utilisateur.
  • En fonction du résultat retourné par l'interface, traitez la distribution des récompenses dans votre jeu ou affichez des messages d'autres exceptions.
  • Il est recommandé, après la livraison, d'appeler l'interface de synchronisation des sauvegardes du système de stockage cloud pour enregistrer les données du joueur.
javascript
await window.JOGOS_SDK.payment.deliverGoods(orderNo: string);

Méthode via intégration du "Serveur de Jeu" :

Pour les API liées à l'intégration du serveur, veuillez consulter la page Interface d'Intégration Serveur.

Autres Interfaces

Suggestions pour améliorer les paiements
  • L'abonnement côté client aux notifications de succès de paiement (subscribeOrderPaid) ne peut garantir la réception de 100 % des notifications en raison de divers facteurs incontrôlables comme les problèmes de réseau. Nous vous recommandons d'utiliser l'Interface d'Obtenir les Commandes pour vérifier le statut de paiement le plus récent de cette commande.
  • Certains jeux standalone peuvent offrir une fonction de suppression des sauvegardes. La décision de re-attribuer les récompenses des paiements précédents vous appartient. Les développeurs peuvent appeler l'interface de requête de liste de commandes pour obtenir toutes les commandes du joueur et effectuer un re-distribution.
  • Après avoir obtenu les informations de la commande, utilisez le champ status pour juger et traiter la commande.

Informations sur la Commande

Interrogez les informations détaillées d'une commande en fonction de son numéro. La structure de la commande est la suivante :

javascript
// Commande de Paiement
export interface PaymentOrder {
  // ID du Jeu
  gameId: number;
  // Nom du Jeu
  gameName: string;
  // ID de l'Utilisateur
  userId: number;
  // Numéro de Commande
  orderNo: string;
  // ID du Produit
  productId: string;
  // Nom du Produit
  productName: string;
  // Devise
  currency: string;
  // Pays
  country: string;
  // Remise
  discount: number;
  // Déduction de la Monnaie Jogos (Points)
  calorcoin: number;
  // Montant Payé
  paid: number;
  // Canal de Paiement
  channel: string;
  // Type de Paiement
  paymentType: string;
  // Numéro de Transaction de Paiement
  paymentNo: string;
  // Marchandises Déjà Livrées
  deliverGoods: boolean;
  // Statut de la Commande : pending (en attente), fail (échec), cancel (annulé), expire (expiré), success (succès), refunding (remboursement en cours), refunded (remboursé), refund-fail (échec du remboursement)
  status: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded' | 'refund-fail';
  // Heure de Création de la Commande
  createTime: String;
  // Numéro de Remboursement
  refundNo: String;
  // Description du Remboursement
  refundDescription: String;
  // Heure de Demande de Remboursement
  refundTime: String;
  // Heure de Remboursement Réussi
  refundedTime: String;
}

Obtenir les Informations de la Commande

javascript
// Retourne les informations de la commande en cas de succès
let order = await window.JOGOS_SDK.payment.getOrderDetail(orderNo: string);

Obtenir la Liste des Commandes

Les développeurs peuvent utiliser cette interface pour interroger les commandes d'états spécifiques. Retourne une liste de commandes en cas de succès. La structure d'information de la commande est la même que celle des détails de la commande.

javascript
// Retourne la liste des commandes en cas de succès
let orderList = await window.JOGOS_SDK.payment.getOrderList(
  status?: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded',
  pageNo?: number,  // Numéro de page : par défaut 1
  pageSize?: number // Nombre d'enregistrements par page : par défaut 20
);

Jeux en Achat Unique (Buy-to-Play)

  1. Définissez votre jeu sur "Game Pricing" (type achat unique) dans le backend développeur et définissez le prix de votre jeu.
  2. Créez deux versions de soumission pour votre jeu : une Version d'Essai (Trial) et une Version Complète (Full).
  • Version d'Essai : Il est recommandé de supprimer les ressources de niveaux inaccessibles au joueur, les modèles, textures, musiques, etc., en ne conservant que le contenu disponible pour l'essai. Empaquetez et uploadez cette version séparément.
  • Version Complète : La version où les joueurs ont accès au contenu complet du jeu.
  1. Configurez un bouton d'achat dans la version d'essai :
  • Lorsque le joueur termine l'essai, par exemple en atteignant le dernier niveau du Chapitre 1 dans la version d'essai, et a besoin d'acheter la version complète du jeu, concevez une interface pour "Vendre la Version Complète" avec un bouton d'achat : alt text
  • Le bouton d'achat peut appeler l'interface buyOut pour ouvrir la fenêtre de paiement de la plateforme Jogos, permettant aux joueurs d'acheter rapidement la version complète du jeu.
  • Une fois l'achat réussi par l'utilisateur, la plateforme Jogos passera automatiquement à la version complète pour que le joueur continue à jouer. Aucun traitement supplémentaire n'est requis par le développeur.
  • Maintenez les numéros de version de la Version d'Essai et de la Version Complète identiques. La plateforme Jogos migrera automatiquement les sauvegardes utilisateur vers la version complète.
  • Après un paiement réussi, un numéro de commande est retourné. Le développeur peut utiliser ce numéro de commande pour interroger les informations relatives à cette commande.
javascript
// Retourne le numéro de commande en cas de succès
let orderNo = await window.JOGOS_SDK.payment.buyOut();
*Rappel Important*

Veuillez noter : Que ce soit pour la version complète ou la version d'essai, l'initialisation doit être effectuée dans la première scène de démarrage du projet de jeu. Attendez que le callback se termine avant d'exécuter la première ligne de votre code de jeu. Jogos vérifie lors de l'initialisation si l'utilisateur a acheté votre jeu ; sinon, l'utilisateur ne pourra pas continuer à jouer. C'est un moyen efficace de protéger votre jeu contre le piratage et la lecture par des utilisateurs non autorisés.