Activez Buy Button pour des paiements personnalisés
Pourquoi c'est important
Suite aux récentes mises à jour des règles d’Apple dans certaines régions, les développeurs peuvent désormais rediriger les utilisateurs depuis leurs applications vers des sites externes pour accepter les paiements d’objets virtuels.
Vous pouvez ajouter des boutons, bannières, messages et autres appels à l’action visibles qui redirigent les utilisateurs en un seul clic depuis le jeu vers l’achat d’objets via un paiement sécurisé par navigateur (vers votre Web Shop ou une interface de paiement), sans enfreindre les règles d’Apple ni risquer de sanctions.
L’intégration du Buy Button via le Headless checkout est idéale si vous souhaitez concevoir votre propre interface de paiement et proposer une expérience utilisateur unique. Elle permet aux utilisateurs de passer facilement du jeu à l’achat dans un navigateur, en profitant d’un large choix de modes de paiement, dont le paiement en un clic avec Apple Pay, pour un processus de paiement mobile rapide et familier.
Headless checkout est une solution d’acceptation de paiement basée sur une architecture d’application headless, dans laquelle la fonctionnalité est accessible via API. Cette approche dissocie le backend et la logique métier de l’interface utilisateur.
Pour utiliser le Headless checkout pour les applications de jeux iOS :
- Créez votre propre magasin.
- Intégrez le Headless checkout à votre magasin.
- Ajoutez un lien dans votre jeu qui redirige les utilisateurs vers votre magasin.
Si vous cherchez l’option d’intégration la plus rapide avec peu de code, consultez l’intégration basée Web Shop.
Si vous utilisez un Web Shop personnalisé non conçu avec Xsolla Site Builder et que vous souhaitez intégrer une interface de paiement prête à l’emploi au jeu, consultez l’intégration via Xsolla Mobile SDK.
Comment ça marche
Exigences Apple :
Les WebViews in-app ne sont pas autorisées pour les achats externes. Les paiements doivent être effectués via Safari ou le navigateur par défaut.
Les liens d’achat externes sont actuellement autorisés uniquement pour les applications iOS publiées sur la vitrine de l’App Store des États-Unis. Notez que selon les directives d’Apple,
c’est le pays de la vitrine qui est pris en compte, et non la localisation réelle de l’utilisateur .
Flux utilisateur
- L’utilisateur ouvre l’application de jeu sur iOS.
- L’utilisateur clique sur le bouton d’achat à côté de l’objet souhaité.
- Votre magasin s’ouvre dans un navigateur web. Pour garantir une expérience utilisateur transparente, implémentez une autorisation de bout en bout.
- L’utilisateur sélectionne un objet et effectue l’achat sans quitter le magasin.
- L’utilisateur est redirigé vers l’application de jeu après une transaction réussie.
- L’application reçoit la confirmation d’achat via un webhook.
Flux d'intégration
- Créez un projet dans le Compte éditeur et signez le contrat de licence avec Xsolla.
- Créez un catalogue des objets.
- Implémentez des interactions avec le backend : créez un jeton et configurez des webhooks.
- Installez le SDK.
- Intégrez le SDK côté application.
- Ajoutez un lien dans votre jeu qui redirige les utilisateurs vers votre magasin, où le Headless checkout est intégré.
Créer un projet et signer le contrat de licence
Le Compte éditeur est l’outil principal pour configurer les fonctionnalités Xsolla, ainsi que pour gérer les analyses et les transactions.
Pour vous inscrire, accédez au Compte éditeur et créez un compte. Pour créer un projet, appuyez sur Create project dans le menu latéral et fournissez toutes les informations nécessaires. Vous pourrez modifier les paramètres ultérieurement.

Pour signer le contrat de licence, accédez à la section Agreements & Taxes > Agreements et remplissez le formulaire de contrat.
Créer un catalogue des objets
Dans l’écosystème Xsolla, les achats in-app (IAP) sont représentés sous forme d’objets virtuels. Chaque objet possède un nom, une description, une UGS et un prix. Pour configurer votre catalogue IAP, vous pouvez :
- Télécharger un fichier JSON pour ajouter rapidement votre catalogue au Compte éditeur.
- Créez un catalogue des objets à l’aide des appels API de la section Virtual items & currency > Admin de la documentation.
Implémenter l'interaction avec le backend
Créer un jeton
Lorsque l’utilisateur clique sur le bouton d’achat, un jeton de paiement doit être généré. Ce jeton permet d’ouvrir l’interface de paiement et contient des informations sur l’utilisateur, l’objet, ainsi que d’autres paramètres passés à Xsolla. Consultez la documentation pour plus d’informations. Pour utiliser le mode bac à sable, ajoutez le paramètre“mode”: “sandbox”
dans le corps de la requête de génération du jeton.Configurer les webhooks
Pour activer les webhooks :
- Dans votre projet, dans le Compte éditeur, accédez à la section Project setting > Webhooks.
- Dans le champ Webhook server, indiquez l’URL du serveur sur lequel vous souhaitez recevoir les webhooks, au format
https://example.com
. Vous pouvez également utiliser l’URL générée par un outil de test de webhooks. - Une clé secrète pour signer les webhooks du projet est générée par défaut. Si vous souhaitez générer une nouvelle clé secrète, cliquez sur l’icône d’actualisation.
- Cliquez sur Enable webhooks.

Pour gérer pleinement le magasin en jeu et les paiements, il est nécessaire d’implémenter le traitement des principaux webhooks :
Nom du webhook | Description |
---|---|
User validation > Validation utilisateur (user_validation ) | Est envoyé à différentes étapes du paiement pour s’assurer que l’utilisateur est bel et bien enregistré dans le jeu. |
Game services > Combined webhooks > Paiement de commande réussi (order_paid ) | Il contient les données de paiement, les données de la transaction et des informations sur les objets achetés. Utilisez les données du webhook pour attribuer les objets à l’utilisateur. |
Game services > Combined webhooks > Annulation de commande (order_canceled ) | Il contient les données du paiement annulé, les données de la transaction et des informations sur les objets achetés. Utilisez les données du webhook pour retirer les objets achetés. |
Installer le SDK
- Installez le SDK en tant que package npm en exécutant la commande :
1npm install --save @xsolla/pay-station-sdk
- Initialisez le SDK en passant les paramètres d’environnement :
- typescript
1import { headlessCheckout } from '@xsolla/pay-station-sdk';
2
3await headlessCheckout.init({
4 sandbox: true,
5});
- Passez le jeton de paiement pour le SDK initialisé :
- typescript
1await headlessCheckout.setToken(accessToken);
Intégrer le SDK côté application
Après l’installation et l’initialisation du SDK :
- Initialisez l’interface de paiement en spécifiant l’ID du mode de paiement. La méthode
headlessCheckout.form.init
renvoie un objet utilisé pour une interaction ultérieure avec l’interface de paiement.
- typescript
1await headlessCheckout.form.init({
2 paymentMethodId: 3175, // Apple Pay payment ID
3});
- Ajoutez le traitement de l’événement
show_fields
pour l’affichage de champs supplémentaires.
- typescript
1headlessCheckout.form.onNextAction((nextAction) => {
2 switch (nextAction.type) {
3 case 'show_fields':
4 this.handleShowFieldsAction(nextAction);
5 }
6});
- Ajoutez le composant suivant au balisage HTML de l’interface de paiement :
- Composants obligatoires :
psdk-legal
— pour afficher des informations sur les documents juridiques,psdk-total
— pour afficher le montant total des achats ;
- Composants du formulaire de paiement. Vous pouvez utiliser le composant intégré
psdk-payment-form
ou créer manuellement des éléments d’interface de paiement à l’aide des composants prêts à l’emploi ; - Le composant bouton de paiement —
psdk-apple-pay
. Vous pouvez également utiliser le composantpsdk-submit-button
qui comprend déjàpsdk-apple-pay
.
- Composants obligatoires :
- html
1<psdk-legal></psdk-legal>
2<psdk-total></psdk-total>
3
4
5<psdk-payment-form></psdk-payment-form>
6<psdk-apple-pay text="Apple Pay"></psdk-apple-pay>
- Ajoutez le traitement de l’événement
check_status
pour suivre le changement de statut du paiement.
- typescript
1headlessCheckout.form.onNextAction((nextAction) => {
2 switch (nextAction.type) {
3 case 'check_status': {
4 showStatus = true;
5 }
6 }
7});
- Ajoutez le composant
psdk-status
au balisage HTML de l’interface de paiement pour afficher le statut du paiement.
- html
1@if (showStatus) {
2 <psdk-status></psdk-status>
3}
Comment détecter la région de la vitrine App Store
Pour déterminer la région de la vitrine actuelle de l’App Store et ajuster les fonctionnalités du SDK en conséquence, utilisez les extraits de code suivants :
obj-c
- obj-c
- swift
1[SKPaymentQueue loadCurrentStorefrontCountryCodeWithCompletion:^(NSString* _Nullable countryCode) {
2 settings.enablePayments = countryCode && [countryCode isEqualToString:@"USA"];
3
4 [[SKPaymentQueue defaultQueue] startWithSettings:settings];
5}];
1SKPaymentQueue.loadCurrentStorefrontCountryCode { countryCode in
2 settings.enablePayments = countryCode == "USA"
3
4 SKPaymentQueue.default().start(settings)
5}
La méthode loadCurrentStorefrontCountryCode
récupère de manière asynchrone le code pays à trois lettres de la vitrine actuelle. Utilisez cette information pour activer ou désactiver certaines fonctionnalités du SDK selon la région.
Vous pouvez également utiliser directement la classe native Storefront d’Apple, comme indiqué ci-dessous :
SKStorefront
en Objective-C, car elle effectue un chargement synchrone qui peut bloquer le thread principal. Cela risque d’entraîner des gels d’interface et dégrader l’expérience utilisateur, comme le précise la documentation officielle Apple.- swift
1let storefront = await Storefront.current
2let countryCode = storefront?.countryCode
3
4settings.enablePayments = countryCode == "USA"
5
6SKPaymentQueue.default().start(settings)
Paiement en un clic avec Apple Pay
Le paiement en un clic permet aux utilisateurs de payer avec Apple Pay, un moyen de paiement natif, sécurisé et familier, sur les appareils compatibles. Pour configurer le paiement en un clic :
- Créez une demande pour activer cette option. Pour ce faire :
a. Ouvrez votre Compte éditeur et accédez à la section Support Hub.
b. Cliquez sur Submit request.
c. Dans la fenêtre qui s’ouvre, remplissez les champs :
- Summary. Par exemple : Configuration du paiement en un clic avec Apple Pay.
- Description. Spécifiez le domaine utilisé pour ouvrir l’interface de paiement, par exemple
amazing.store.com
. - Project ID. Sélectionnez un ID de projet dans la liste déroulante. Si vous souhaitez configurer l’option de paiement en un clic pour plusieurs projets, indiquez leurs ID dans le champ Description.
d. Cliquez sur Send.
- Attendez la réception de votre fichier d’association de domaine. Cette étape est gérée par Xsolla :
- Xsolla enregistre votre domaine auprès d’Apple.
- Xolla reçoit le fichier d’association de domaine d’Apple.
- Xsolla vous envoie le fichier d’association de domaine par e-mail et vous indique où l’importer.
- Mettez à jour le script d’initialisation du SDK comme indiqué ci-dessous :
- typescript
1const config: InitialOptions = {
2 isWebview: false,
3 theme: 'default',
4 language: parameters.language,
5 topLevelDomain: 'amazing.store.com',
6 isApplePayInstantFlowEnabled: true
7};
8
9await initHeadlessCheckoutLib(config);
Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entrée.