Comment permettre à l’utilisateur de changer de plan d’abonnement
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.
- 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.
Comment configurer
- Ouvrez votre projet dans le Compte éditeur.
- Dans la barre latérale, cliquez sur Subscriptions et accédez à la section Settings.
- Dans la section Changing plan, réglez la bascule Ability to choose a different plan sur On.
- 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.
- 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.
- 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
- 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ètrepurchase.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.
- valeur
- 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 :
- Utilisez les appels API
Register new user etAuth by username si votre application utilise l’autorisation par nom d’utilisateur et mot de passe. - Utilisez l’appel API
Auth via social network si votre application utilise l’autorisation via les réseaux sociaux.
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ètre | Type | Description |
---|---|---|
| string | Obligatoire. ID externe du plan d’abonnement. Il se trouve dans la section Subscriptions > Subscription Plans du Compte éditeur. |
| object | Paramètres de projet personnalisés (objet). |
| object | Paramètres de l’interface (objet). |
| string | Taille de l’interface utilisateur de paiement. Valeurs possibles :
|
| string | Thème de l’interface de paiement. Valeurs possibles : default , default_dark ou un ID de thème customisé. |
| string | Type d’appareil. Valeurs possibles : desktop (par défaut) ou mobile . |
| object | Paramètres d’interface pour la version de bureau (objet). |
| object | Paramètres d’en-tête (objet). |
| boolean | Dé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 . |
| boolean | Détermine l’affichage de l’en-tête dans l’interface de paiement. |
| string | Apparence de l’en-tête. Valeurs possibles : compact (masque le nom du jeu et l’ID de l’utilisateur) ou normal . |
| boolean | Si défini sur true , l’en-tête affiche votre logo. (Assurez-vous de fournir l’image à votre responsable de la réussite client). |
| boolean | Détermine l’affichage du nom du projet dans l’en-tête. |
| string | Apparence de l’en-tête. Valeurs possibles : compact (masque le nom du projet et l’ID de l’utilisateur) ou normal (par défaut). |
| string | L’utilisateur ne peut payer qu’en utilisant les modes de paiement qu’il a enregistrés. Valeur possible : saved_accounts . |
| boolean | Détermine le masquage du pied de page dans la version mobile de l’interface de paiement. |
| boolean | Dé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. |
| string | Mode 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. |
| string | Devise de paiement préférée. Code de devise ISO 4217 à trois lettres. |
| string | ID de transaction dans le jeu. Doit être unique pour chaque utilisateur. |
| integer | ID du mode de paiement. La liste des ID des modes de paiement s’obtient dans le Compte éditeur. |
| string | Page 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. |
| object | Paramètres de politique de redirection (objet). |
| string | Statut 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 | integer | Délai (en secondes) après lequel l’utilisateur est automatiquement redirigé vers l’URL de retour. |
| string | Statut 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 . |
| string | Texte sur le bouton de redirection manuelle. |
- curl
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 :
- javascript
{
"link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
}
Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.