# Créer un jeton de paiement pour un achat

Génère une commande et un jeton de paiement pour celle-ci. La commande est générée sur la base des objets passés dans le corps de la requête.

Pour ouvrir l'interface de paiement dans une nouvelle fenêtre, utilisez le lien suivant : https://secure.xsolla.com/paystation4/?token={token}, où {token} est le jeton reçu.

À des fins de test, utilisez cette URL : https://sandbox-secure.xsolla.com/paystation4/?token={token}.

Remarque
   
    Pour que la méthode fonctionne correctement, passez le paramètre user.country.value (code pays) ou l'en-tête X-User-Ip (adresse IPv4 de l'utilisateur si le pays n'est pas connu). Ces données servent à déterminer la devise de paiement. Les adresses IPv6 ne sont pas prises en charge.  La devise choisie sera utilisée pour les modes de paiement dans l'interface de paiement Xsolla.

Endpoint: POST /v3/project/{project_id}/admin/payment/token
Version: 2.0.0
Security: basicAuth

## Path parameters:

  - `project_id` (integer, required)
    ID du projet. Vous trouverez ce paramètre dans le Compte éditeur, à côté du nom du projet, ainsi que dans l'URL affichée dans la barre d'adresse du navigateur lorsque vous utilisez ce projet. L'URL présente le format suivant : https://publisher.xsolla.com//projects/.
    Example: 44056

## Request fields (application/json):

  - `sandbox` (boolean)
    Passez la valeur true pour tester le processus de paiement. Dans ce cas, utilisez l'URL https://sandbox-secure.xsolla.com pour accéder à l'interface de paiement de test.

  - `user` (object, required)

  - `user.id` (object, required)

  - `user.id.value` (string)
    ID utilisateur. Pour les tests, passez une valeur aléatoire. Pour accepter des paiements réels, utilisez la valeur de l'ID utilisateur dans votre système. Cet ID est passé dans le webhook [User validation](https://developers.xsolla.com/fr/webhooks/operation/user-validation/).

  - `user.name` (object)

  - `user.name.value` (string)
    Pseudo de l'utilisateur.

  - `user.email` (object)

  - `user.email.value` (string)
    Adresse e-mail utilisateur. Doit être valide selon le protocole RFC 822.

  - `user.country` (object)

  - `user.country.value` (string)
    Code pays à deux lettres majuscules selon la norme [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Requis si l'adresse IP n'est pas passée dans l'en-tête X-User-Ip. Consultez la documentation pour obtenir des informations détaillées sur les [pays pris en charge par Xsolla](https://developers.xsolla.com/fr/doc/shop-builder/references/supported-countries/). Exemple : country=US
    Example: "US"

  - `user.country.allow_modify` (boolean)
    Indique si l'utilisateur peut changer de pays dans l'interface de paiement.

  - `user.age` (integer)
    Âge de l'utilisateur.

  - `user.phone` (object)

  - `user.phone.value` (string, required)
    Numéro de téléphone de l'utilisateur.

  - `user.phone.allow_modify` (boolean)
    Détermine si l'utilisateur peut changer de téléphone dans l'interface de paiement. Si le paramètre phone.value est passé dans le jeton, la valeur est false.

  - `user.phone.hidden` (boolean)

  - `user.tracking_id` (object)

  - `user.tracking_id.value` (string, required)
    ID unique de suivi (utilisé dans les campagnes de marketing).

  - `user.steam_id` (object)

  - `user.steam_id.value` (string, required)
    ID Steam.

  - `user.is_legal` (boolean)
    Détermine si l'utilisateur est une personne morale.

  - `user.legal` (object)
    Informations de la personne morale. L'objet et tous ses paramètres sont requis si user.is_legal est défini sur true.

  - `user.legal.name` (string)
    Nom légal complet.

  - `user.legal.address` (string)
    Adresse légale complète.

  - `user.legal.vat_id` (string)
    Numéro d'identification fiscal.

  - `user.legal.country` (string)
    Pays de constitution. Code pays à deux lettres majuscules selon la norme [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

  - `purchase` (object, required)

  - `purchase.items` (array, required)

  - `purchase.items.sku` (string, required)
    ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.

AttentionPour vendre une même UGS plusieurs fois, indiquez la quantité requise dans le paramètre purchase.items[].quantity. Les doublons d’UGS dans le tableau ne sont pas pris en charge, seule la première occurrence est utilisée lors de la création du jeton. Aucune erreur n’est renvoyée dans ce cas.
    Example: "t-shirt"

  - `purchase.items.quantity` (number, required)
    Quantité de l'objet.
    Example: 2

  - `promo_code` (string)
    Code unique sensible à la casse. Comprend des lettres et des chiffres.

  - `settings` (object)
    Paramètres pour la configuration de la procédure de paiement et de l'interface de paiement pour l'utilisateur.

  - `settings.ui` (object)
    Paramètres d'interface.

  - `settings.ui.theme` (string)
    Thème d'interface de paiement. Les valeurs possibles sont : 63295a9a2e47fab76f7708e1 pour le thème clair (par défaut) ou 63295aab2e47fab76f7708e3 pour le thème foncé. Vous pouvez également [créer un thème personnalisé](https://developers.xsolla.com/fr/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_in_token) et passez son ID dans ce paramètre.
    Enum: "63295a9a2e47fab76f7708e1", "63295aab2e47fab76f7708e3"

  - `settings.ui.desktop` (object)
    Paramètres de l'interface pour la version de bureau.

  - `settings.ui.desktop.header` (object)
    Paramètres de l'en-tête.

  - `settings.ui.desktop.header.is_visible` (boolean)
    Détermine l'affichage de l'en-tête dans l'interface de paiement.

  - `settings.ui.desktop.header.visible_logo` (boolean)
    Si true, le logo est affiché dans l'en-tête. Pour télécharger l'image, ouvrez votre projet dans [Publisher Account](https://publisher.xsolla.com/) et allez dans la section Pay Station > Settings.

  - `settings.ui.desktop.header.visible_name` (boolean)
    Détermine l'affichage du nom du projet dans l'en-tête.

  - `settings.ui.desktop.header.visible_purchase` (boolean)
    Détermine l'affichage de la description de l'achat (purchase.description.value) dans l'en-tête. Défini sur true par défaut.

  - `settings.ui.desktop.header.type` (string)
    Apparence de l'en-tête. La valeur peut être compact (le nom du projet et l'ID utilisateur ne s'affichent pas) ou normal (par défaut).
    Enum: "compact", "normal"

  - `settings.ui.desktop.header.close_button` (boolean)
    Détermine l'affichage du bouton Fermer dans l'interface de paiement sur ordinateur. Un clic sur ce bouton ferme l'interface de paiement et redirige l'utilisateur vers l'URL passée dans le paramètre settings.return_url. Défini sur false par défaut.

  - `settings.ui.mode` (string)
    Mode d'interface dans l'interface de paiement. L'unique valeur possible est user_account. Dans ce mode, l'en-tête ne contient que le menu de navigation du compte, et l'utilisateur ne peut ni sélectionner un produit ni effectuer un paiement. Ce mode est disponible uniquement sur la version de bureau.
    Enum: "user_account"

  - `settings.ui.user_account` (object)
    Informations de compte utilisateur.

  - `settings.ui.user_account.payment_accounts` (object)
    Le sous-menu Mes comptes de paiement.

  - `settings.ui.user_account.payment_accounts.enable` (boolean, required)
    Détermine l'affichage du sous-menu. La valeur par défaut est false.

  - `settings.ui.user_account.info` (object)
    Page My account.

  - `settings.ui.user_account.info.enable` (boolean, required)
    Détermine l'affichage du sous-menu. La valeur par défaut est false.

  - `settings.ui.user_account.info.order` (integer, required)
    Position du sous-menu dans le menu.

  - `settings.ui.user_account.subscriptions` (object)
    Sous-menu Gestion des abonnements.

  - `settings.ui.user_account.subscriptions.enable` (boolean, required)
    Détermine l'affichage du sous-menu. La valeur par défaut est false.

  - `settings.ui.user_account.subscriptions.order` (integer, required)
    Position du sous-menu dans le menu.

  - `settings.ui.header` (object)

  - `settings.ui.header.visible_virtual_currency_balance` (boolean)
    Détermine l'affichage de cet élément dans l'interface de paiement.

  - `settings.ui.mobile` (object)

  - `settings.ui.mobile.header` (object)

  - `settings.ui.mobile.header.close_button` (boolean)
    Détermine l'affichage du bouton Fermer dans l'interface de paiement sur appareil mobile. Un clic sur ce bouton ferme l'interface de paiement et redirige l'utilisateur vers l'URL passée dans le paramètre settings.return_url.

  - `settings.ui.is_prevent_external_link_open` (boolean)
    Détermine la désactivation des liens de redirection vers une ressource externe. Un clic sur un lien externe déclenche l'envoi de l'événement external-link-open via le mécanisme postMessage. L'adresse du lien de redirection est passée dans le paramètre url.

  - `settings.ui.is_payment_methods_list_mode` (boolean)
    Détermine l'affichage de la liste des modes de paiement disponibles dans le pays de l'utilisateur à l'ouverture de l'interface de paiement. Si false (par défaut), le mode de paiement passé dans le paramètre settings.payment_method ou le mode sélectionné selon l'[algorithme du PayRank](https://developers.xsolla.com/fr/solutions/payments/payment-ui-management/top-payment-methods-management/) s'affiche.

  - `settings.ui.is_independent_windows` (boolean)
    Détermine la redirection des utilisateurs du navigateur du lanceur intégré (WebView) vers leur navigateur par défaut pour effectuer un achat.

  - `settings.ui.currency_format` (string)
    Définissez sur code pour afficher un code de devise à trois lettres selon la norme [ISO 4217](https://developers.xsolla.com/fr/doc/pay-station/references/supported-currencies/) dans l'interface de paiement. Par défaut, le symbole de la devise est affiché à la place du code de devise à trois lettres.

  - `settings.ui.is_show_close_widget_warning` (boolean)
    Détermine l'affichage d'une infobulle sur le traitement de la transaction au passage de la souris sur l'icône × avant la fermeture de la page de paiement. Défini sur false, ou si le paramètre n'est pas passé, l'infobulle ne s'affiche pas.

  - `settings.ui.layout` (string)
    Emplacement des principaux éléments de l'interface de paiement. Vous pouvez ouvrir l'interface de paiement à l'intérieur de votre jeu et/ou permuter les colonnes contenant des informations sur la commande et les modes de paiement. Reportez-vous aux [instructions de customisation](https://developers.xsolla.com/fr/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_layout) pour des informations détaillées.
    Enum: "embed", "column_reverse", "embed_column_reverse"

  - `settings.ui.is_three_ds_independent_windows` (boolean)
    Détermine l'ouverture de la vérification 3-D Secure dans une nouvelle fenêtre du navigateur. Définissez sur true, si votre configuration applique une politique de sécurité du contenu (CSP).

  - `settings.ui.is_cart_open_by_default` (boolean)
    Affichage de la liste des objets dans le panier lors de l'ouverture de la version mobile de l'interface de paiement. Si true, la liste s'affiche dans une vue étendue. Si false(valeur par défaut) ou si le paramètre n'est pas passé, la liste s'affiche dans une vue réduite.

  - `settings.currency` (string)
    Devise de paiement préférée. Code de devise à trois lettres selon [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). Consultez la documentation pour obtenir des informations détaillées sur les devises [prises en charge par Xsolla](https://developers.xsolla.com/fr/doc/pay-station/references/supported-currencies/).

  - `settings.language` (string)
    Langue d'interface. [Code de langue](https://developers.xsolla.com/fr/doc/pay-station/features/localization/) à deux lettres minuscules.

  - `settings.external_id` (string)
    External ID de la transaction.

  - `settings.payment_method` (integer)
    ID du mode de paiement. Il détermine l'affichage de la devise dans l'interface de paiement, car certains modes de paiement ne prennent en charge que certaines devises.

  - `settings.return_url` (string)
    Page vers laquelle l'utilisateur est redirigé après un paiement. Les paramètres user_id, foreigninvoice, invoice_id et status sont automatiquement ajoutés au lien.

  - `settings.redirect_policy` (object)

  - `settings.redirect_policy.redirect_conditions` (string)
    Statut du paiement déclenchant la redirection de l'utilisateur vers l'URL de retour.
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.redirect_policy.delay` (integer)
    Délai après lequel l'utilisateur est automatiquement redirigé vers l'URL de retour.

  - `settings.redirect_policy.status_for_manual_redirection` (string)
    Statut de paiement déclenchant l'affichage d'un bouton de redirection de l'utilisateur vers l'URL de retour.
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.redirect_policy.redirect_button_caption` (string)
    Légendes localisées des boutons de redirection.
    Example: "Text button"

  - `custom_parameters` (object,null)
    Vos paramètres personnalisés représentés sous la forme d'un JSON valide de paires clé-valeur.
Pour configurer des filtres anti-fraude, passez des paramètres supplémentaires via ce champ. [Voir la documentation de Pay Station](https://developers.xsolla.com/fr/doc/pay-station/features/antifraud/).

## Response 201 fields (application/json):

  - `token` (string)
    Jeton de paiement.

  - `order_id` (integer)
    ID de commande.
    Example: 1

## Response 401 fields (application/json):

  - `statusCode` (integer)
    Example: 401

  - `errorCode` (integer)
    Example: 1020

  - `errorMessage` (string)
    Example: "[0401-1020]: Error in Authentication method occurred"

## Response 422 fields (application/json):

  - `statusCode` (number)
    Code d'état de la réponse.
    Example: 422

  - `errorCode` (number)
    Code d'erreur.
    Example: 1102

  - `errorMessage` (string)
    Message d'erreur lisible.
    Example: "[0401-1102]: Unprocessable Entity. The property `external_id` is required"

  - `transactionId` (string)
    ID unique de la demande.
    Example: "da145238620011eb8e24fe6913ff226a"


