Comment permettre à l’utilisateur de changer de plan d’abonnement

Note
Pour permettre aux utilisateurs de changer de plan dans votre projet, l’interface de paiement doit être configurée de manière adéquate. Pour ce faire, contactez votre responsable de la réussite client ou envoyez un e-mail à csm@xsolla.com.
Vous pouvez permettre aux utilisateurs de changer de plan d’abonnement au cours de la période en cours ou à venir, et également leur permettre de changer de plan plusieurs fois par jour.

Comment ça marche

  • Lors du choix d’un nouveau plan, un remboursement est effectué sur le solde de l’utilisateur pour la période non utilisée de l’abonnement en cours.
  • Le paiement du nouveau plan d’abonnement est entièrement effectué à partir du solde de l’utilisateur. Si son solde est insuffisant, un paiement supplémentaire est effectué par l’un des modes de paiement autorisés dans le projet.
  • Lors du changement de plan, les fonds sont débités immédiatement après la confirmation du paiement, même si le projet est configuré pour que le changement de plan prenne effet à partir de la prochaine période de facturation.
  • Si la devise du nouveau plan est différente de celle du plan actuel, l’achat du nouveau plan sera effectué avec une conversion de devise.

Le changement de plan n’est pas possible si :
  • l’utilisateur a déjà un abonnement actif au plan vers lequel le plan actuel est en train de passer ;
  • l’abonnement que l’utilisateur souhaite changer n’a pas le statut Active ;
  • le plan d’abonnement que l’utilisateur souhaite changer est de type Plan à vie : un tel abonnement ne peut être annulé que pendant la période de remboursement spécifiée.
Note
Si des groupes de plans sont configurés dans votre projet, le changement de plan ne peut être effectué qu’au sein d’un groupe. Pour plus d’informations sur le fonctionnement des groupes, consultez les instructions sur la configuration des produits par abonnement et des groupes de plans.

Comment configurer

  1. Ouvrez votre projet dans le Compte éditeur.
  2. Dans la barre latérale, cliquez sur Subscriptions et accédez à la section Settings.
  3. Dans la section Changing plan, réglez la bascule Ability to choose a different plan sur On.
  4. Les changements de plan sont autorisés par défaut à partir de la période suivante. Pour permettre le changement de plan au cours de la période en courante, sélectionnez Now. Quand cette option est sélectionnée, le plan change immédiatement après la confirmation du paiement.
  5. Pour permettre les changements de plan plus d’une fois par jour, réglez la bascule Ability to choose a different plan several times on the same day sur On.
  6. Lorsque vous ouvrez l’interface de paiement, utilisez :

Ouverture de l'interface de paiement via l'appel API côté serveur Créer un jeton

  1. Obtenez un jeton pour ouvrir l’interface de paiement. Pour ce faire, passez ce qui suit à la méthode :
    • valeur change_plan dans le paramètre purchase.subscription.operation ;
    • ID du nouveau plan dans le paramètre purchase.subscription.plan_id ;
    • ID de produit par abonnement dans le paramètre purchase.subscription.product_id, si vous utilisez des produits par abonnement. Pour l’obtenir, contactez votre responsable de la réussite client ou envoyez un e-mail à csm@xsolla.com.
  2. Ouvrez l’interface de paiement en utilisant l’une des options suivantes :

Ouverture de l'interface de paiement sur la page de gestion des abonnements à l'aide de l'appel API côté client

Si Xsolla Login est configuré dans votre projet, utilisez l’appel API côté client pour obtenir un lien permettant d’ouvrir l’interface de paiement. Le lien renvoyé dans la réponse vous permet d’ouvrir l’interface de paiement sur la page de gestion des abonnements, où les utilisateurs peuvent sélectionner un abonnement actif et le changer.

Pour ce faire, côté client de votre application, implémentez la réception de lien vers l’interface de paiement à l’aide de la requête HTTP POST : https://subscriptions.xsolla.com​/api/user/v1/projects/{project_id}/subscriptions/manage. La requête doit contenir un en-tête Authorization: Bearer <client_user_jwt>, où <client_user_jwt> est le JSON Web Token (JWT) de l’utilisateur, un jeton unique encodé conformément à la norme Base64. Pour obtenir le jeton :

Spécifiez projectId, l’ID de projet, comme paramètre de chemin. Ce paramètre se trouve dans le Compte éditeur à côté du nom du projet. Spécifiez country comme paramètre de requête — désignation à deux lettres du pays de l’utilisateur selon la norme ISO 3166-1 alpha-2. Affecte le choix de la langue et de la devise. Si ce paramètre n’est pas passé, le pays est déterminé par l’adresse IP de l’utilisateur.

Passez des paramètres supplémentaires pour la customisation si nécessaire.

Paramètres du corps de la requête :

ParamètreTypeDescription
plan_external_id
stringObligatoire. ID externe du plan d’abonnement. Il se trouve dans la section Subscriptions > Subscription Plans du Compte éditeur.
settings
objectParamètres de projet personnalisés (objet).
settings.ui
objectParamètres de l’interface (objet).
settings.ui.size
stringTaille de l’interface utilisateur de paiement. Valeurs possibles :
  • small : la plus petite taille possible de l’interface de paiement. Utilisez cette valeur lorsque la taille de la fenêtre est strictement limitée (dimensions : 620 x 630 px) ;
  • medium : taille recommandée. Utilisez cette valeur pour afficher l’interface de paiement dans une lightbox (dimensions : 740 x 760 px) ;
  • large : taille optimale pour afficher l’interface de paiement dans une nouvelle fenêtre ou un nouvel onglet (dimensions : 820 x 840 px).
settings.ui.theme
stringThème de l’interface de paiement. Valeurs possibles : default, default_dark ou un ID de thème customisé.
settings.ui.version
stringType d’appareil. Valeurs possibles : desktop (par défaut) ou mobile.
settings.ui.desktop
objectParamètres d’interface pour la version de bureau (objet).
settings.ui.desktop.header
objectParamètres d’en-tête (objet).
settings.ui.desktop.header.close_button
booleanDétermine l’affichage du bouton Close sur la version de bureau de Pay Station. Le bouton ferme Pay Station et redirige l’utilisateur vers l’URL spécifiée dans le paramètre settings.return_url. La valeur par défaut est false.
settings.ui.desktop.header.is_visible
booleanDétermine l’affichage de l’en-tête dans l’interface de paiement.
settings.ui.desktop.header.is_visible.type
stringApparence de l’en-tête. Valeurs possibles : compact (masque le nom du jeu et l’ID de l’utilisateur) ou normal.
booleanSi défini sur true, l’en-tête affiche votre logo. (Assurez-vous de fournir l’image à votre responsable de la réussite client).
settings.ui.desktop.header.visible_name
booleanDétermine l’affichage du nom du projet dans l’en-tête.
settings.ui.desktop.header.type
stringApparence de l’en-tête. Valeurs possibles : compact (masque le nom du projet et l’ID de l’utilisateur) ou normal (par défaut).
settings.ui.mobile.mode
stringL’utilisateur ne peut payer qu’en utilisant les modes de paiement qu’il a enregistrés. Valeur possible : saved_accounts.
booleanDétermine le masquage du pied de page dans la version mobile de l’interface de paiement.
settings.ui.mobile.header.close_button
booleanDétermine l’affichage du bouton Close sur la version mobile de Pay Station. Le bouton ferme Pay Station et redirige l’utilisateur vers l’URL spécifiée dans le paramètre settings.return_url. Défini sur false par défaut.
settings.ui.mode
stringMode interface dans Pay Station. L’unique valeur possible est user_account : l’en-tête contient uniquement le menu de navigation du compte, et l’utilisateur ne peut sélectionner de bien ni effectuer de paiement. Ce mode n’est disponible que sur la version de bureau.
settings.currency
stringDevise de paiement préférée. Code de devise ISO 4217 à trois lettres.
settings.external_id
stringID de transaction dans le jeu. Doit être unique pour chaque utilisateur.
settings.payment_method
integerID du mode de paiement. La liste des ID des modes de paiement s’obtient dans le Compte éditeur ou en utilisant l’appel API Get payment methods.
settings.return_url
stringPage vers laquelle rediriger l’utilisateur après un paiement. Les paramètres user_id, foreigninvoice, invoice_id et status seront automatiquement ajoutés au lien.
settings.redirect_policy
objectParamètres de politique de redirection (objet).
settings.redirect_policy.redirect_conditions
stringStatut du paiement qui détermine la redirection de l’utilisateur vers une URL de retour après un paiement. Valeurs possibles : none, successful, successful_or_canceled ou any.
settings.redirect_policy.delay
integerDélai (en secondes) après lequel l’utilisateur est automatiquement redirigé vers l’URL de retour.
settings.redirect_policy.status_for_manual_redirection
stringStatut du paiement qui détermine la redirection de l’utilisateur vers une URL de retour après un paiement. Valeurs possibles : none, successful, successful_or_canceled ou any.
settings.redirect_policy.redirect_button_caption
stringTexte sur le bouton de redirection manuelle.
Exemple de requête :
Copy
Full screen
Small screen
curl -X 'POST' \
'https://subscriptions.xsolla.com​/api/user/v1/projects/{project_id}/subscriptions/manage?country=RU  ' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer client_user_jwt'
{
  "settings": {
    "ui": {
      "size": "large",
      "theme": "string",
      "version": "desktop",
      "desktop": {
        "header": {
          "is_visible": true,
          "visible_logo": true,
          "visible_name": true,
          "type": "compact",
          "close_button": true
        }
      },
      "mobile": {
        "mode": "saved_accounts",
        "footer": {
          "is_visible": true
        },
        "header": {
          "close_button": true
        }
      },
      "license_url": "string",
      "mode": "user_account",
      "user_account": {
        "history": {
          "enable": true,
          "order": 1
        },
        "payment_accounts": {
          "enable": true,
          "order": 1
        },
        "info": {
          "enable": true,
          "order": 1
        },
        "subscriptions": {
          "enable": true,
          "order": 1
        }
      }
    },
    "currency": "str",
    "locale": "st",
    "external_id": "string",
    "payment_method": 1,
    "return_url": "string",
    "redirect_policy": {
      "redirect_conditions": "none",
      "delay": 0,
      "status_for_manual_redirection": "none",
      "redirect_button_caption": "string"
    }
  }
}

Exemple de réponse :

Copy
Full screen
Small screen
{
  "link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
}
Cet article vous a été utile ?
Merci !
Que pouvons-nous améliorer ? Message
Nous sommes désolés de l'apprendre
Dites-nous pourquoi vous n'avez pas trouvé cet article utile. Message
Merci pour votre commentaire !
Nous examinerons votre message et l'utiliserons pour améliorer votre expérience.
Évaluer cette page
Évaluer cette page
Que pouvons-nous améliorer ?

Préfère ne pas répondre

Merci pour votre commentaire !
Dernière mise à jour: 22 Janvier 2024

Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.

Signaler un problème
Nous améliorons continuellement notre contenu grâce à vos commentaires.
Indiquez votre adresse e-mail pour un suivi
Merci pour votre commentaire !