# 创建令牌

您可以通过任意用户参数创建令牌。您在获取令牌时发送这些参数并在成功支付后会收到发回的参数。令牌只能包含本文档中描述的参数或您预定义的参数。

如果任何参数以不正确的格式或类型发送，将不会获得令牌。作为响应，您将收到422 
HTTP代码，JSON正文中有相应的错误描述。在extended_message中，您将收到具体错误参数的相关信息。

默认情况下，令牌有效期是24小时。如要更改该值，请联系您的客户成功经理或发送邮件至csm@xsolla.com。新值将对您公司在发布商帐户中创建的所有项目启用。


注意调用此API方法后获得的令牌只能用于授权其他请求。只有在集成了订阅产品的情况下才能使用此令牌打开支付UI。要在新窗口中打开支付UI，请使用以下链接：https://secure.xsolla.com/paystation4/?token={token} ，其中{token}是收到的令牌。如要进行测试，请使用以下URL： https://sandbox-secure.xsolla.com/paystation4/?token={token}。





注意此API调用不包含project_id路径参数，因此您需要使用在您公司的所有项目中都有效的API密钥来设置授权。

Endpoint: POST /merchants/{merchant_id}/token
Version: 2.0
Security: basicAuth

## Path parameters:

  - `merchant_id` (integer, required)
    商户ID。

## Request fields (application/json):

  - `custom_parameters` (object)
    此对象包含配置防欺诈筛选条件的参数。参数列表如下所示。要添加自定义参数，请联系您的客户成功经理或发送邮件至[csm@xsolla.com](mailto:csm@xsolla.com)。

  - `custom_parameters.active_date` (string)
    上一次出现日期（按照[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)格式）。

  - `custom_parameters.additional_verification` (boolean)
    玩家是否使用了帐户验证流程。

  - `custom_parameters.character_customized` (boolean)
    玩家是否对角色进行了自定义。

  - `custom_parameters.chat_activity` (boolean)
    玩家是否使用了聊天功能。

  - `custom_parameters.completed_tasks` (integer)
    完成的任务/目标数。

  - `custom_parameters.forum_activity` (boolean)
    玩家是否使用了论坛功能。

  - `custom_parameters.items_used` (boolean)
    玩家是否使用了购买的游戏装备。

  - `custom_parameters.karma_points` (integer)
    玩家的贡献/业力。

  - `custom_parameters.last_change_password_date` (string)
    上一次出现日期（按照[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)格式）。

  - `custom_parameters.non_premium_currency` (number)
    非高级货币数量。

  - `custom_parameters.notifications_enabled` (boolean)
    玩家是否启用了通知。

  - `custom_parameters.profile_completed` (boolean)
    玩家在帐户资料中是否添加了其它信息。

  - `custom_parameters.profile_image_added` (boolean)
    玩家是否上传了简介头像。

  - `custom_parameters.pvp_activity` (boolean)
    玩家是否参与了PvP（玩家对战）战斗。

  - `custom_parameters.registration_date` (string)
    上一次出现日期（按照[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)格式）。

  - `custom_parameters.session_time` (string)
    上一次出现日期（按照[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)格式）。

  - `custom_parameters.social_networks_added` (boolean)
    玩家是否有关联的社交媒体帐户资料。

  - `custom_parameters.total_bans` (integer)
    玩家在聊天/论坛中被禁言的次数。

  - `custom_parameters.total_characters` (integer)
    游戏角色数。

  - `custom_parameters.total_clans` (integer)
    玩家所属的家族数。

  - `custom_parameters.total_friends` (integer)
    好友数。

  - `custom_parameters.total_game_events` (integer)
    玩家参与的游戏事件数。

  - `custom_parameters.total_gifts` (integer)
    玩家发出/收到的游戏礼物数。

  - `custom_parameters.total_hours` (integer)
    游戏总时数。

  - `custom_parameters.total_inventory_value` (number)
    库存总值（以游戏货币为单位）。

  - `custom_parameters.total_sum` (number)
    付款总额。

  - `custom_parameters.tutorial_completed` (boolean)
    玩家是否完成了游戏教程。

  - `custom_parameters.unlocked_achievements` (integer)
    未解锁的通关数。

  - `custom_parameters.user_level` (integer)
    玩家的等级、口碑或排名。

  - `custom_parameters.win_rate` (integer)
    赢率。

  - `purchase` (object)
    带有购买相关数据的对象。

  - `purchase.is_lootbox` (boolean)
    该商品是否为宝箱。

  - `purchase.subscription` (object)
    带有订阅相关数据的对象。

  - `purchase.subscription.available_plans` (array)
    包含订阅套餐相关数据的数组。只有这些套餐会显示在支付用户界面中。

  - `purchase.subscription.currency` (string)
    购买计划的货币，以此币种进行所有计算。

  - `purchase.subscription.operation` (string)
    此操作的类型应用于用户订阅计划。要更改订阅计划，请传入change_plan值。需在purchase.subscription.plan_id参数中指定新计划的ID。

  - `purchase.subscription.plan_id` (string)
    订阅计划的外部ID。可在发布商帐户的订阅 > 订阅计划中找到。

  - `purchase.subscription.product_id` (string)
    产品ID。

  - `purchase.subscription.trial_days` (integer)
    试用期，以天为单位。

  - `settings` (object)
    为用户配置支付流程和支付UI的设置。

  - `settings.cancel_url` (string)
    用户在完成支付前关闭支付UI时的重定向页面URL。仅在通过settings.​ui.​desktop.​header或settings.​ui.​mobile对象配置了支付UI关闭按钮时生效。若配置了关闭按钮但未在此参数中传入URL，则使用settings.return_url参数中传入的URL。

  - `settings.currency` (string)
    首选支付币种。参照[ISO 4217](https://developers.xsolla.com/zh/doc/pay-station/references/supported-currencies/)标准的三字母货币代码。

  - `settings.external_id` (string)
    游戏中的交易ID。该值对每个用户支付必须唯一。详细信息请参阅文档。

  - `settings.language` (string)
    界面语言。2字母（小写字母）[语言代码](https://developers.xsolla.com/zh/doc/pay-station/features/localization/)。

  - `settings.mode` (string)
    设置为sandbox值以测试支付流程。请使用https://sandbox-secure.xsolla.com来访问测试支付UI。

  - `settings.payment_method` (integer)
    付款方式ID。

  - `settings.payment_widget` (string)
    支付小部件。可以是 paybycash 或 giftcard。如果参数已设置，用户将分别重定向到 Pay by Cash 或 Gift Cards 小部件。
    Enum: "paybycash", "giftcard"

  - `settings.project_id` (integer, required)
    游戏的艾克索拉ID。可以在发布商帐户中找到该ID。

  - `settings.redirect_policy` (object)
    重定向政策设置（对象）。

  - `settings.redirect_policy.delay` (integer)
    延迟时间（单位为秒），经过该时间后用户将自动重定向至返回URL。

  - `settings.redirect_policy.manual_redirection_action` (string)
    由用户点击关闭按钮或返回游戏按钮触发的支付中心行为。可以是redirect（默认）或postmessage。如果设置为redirect，则用户将被重定向至令牌中传入的URL或发布商帐户中指定的URL。如果设置为postmessage，则用户留在原页面。点击关闭按钮发起发送close事件，点击返回游戏则发起发送return事件。
    Enum: "redirect", "postmessage"

  - `settings.redirect_policy.redirect_button_caption` (string)
    手动重定向按钮上的文字。

  - `settings.redirect_policy.redirect_conditions` (string)
    将用户重定向至返回URL的支付状态。可以是none, successful, successful_or_canсeled或any。
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.redirect_policy.show_redirect_countdown` (boolean)
    是否在支付状态页面显示重定向倒计时。倒计时时长由settings.redirect_policy.delay参数的值决定。

  - `settings.redirect_policy.status_for_manual_redirection` (string)
    显示让用户重定向至返回URL按钮的支付状态。可以是none, successful, successful_or_canсeled或any。
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.return_url` (string)
    用户付款后重定向到的页面的URL。关于配置重定向的详细信息，请参阅文档。

  - `settings.ui` (object)
    带有界面设置相关数据的对象。

  - `settings.ui.alternative_first_screen` (string)
    支付中心界面打开时的备选展示方式。例如，可优先显示某些支付方式。
    Enum: "apple-pay", "compact_list"

  - `settings.ui.apple_pay_quick_payment_button` (boolean)
    是否在支持设备的支付UI顶部显示通过Apple Pay快速支付的按钮。默认为true。如为false，则根据[PayRank](/zh/doc/pay-station/how-to/how-to-manage-top-payment-methods/)算法在支付方式列表中显示Apple Pay。


注：在Android设备和其他不支持Apple Pay支付的设备上，无论该参数值如何，此支付方式都将在可用支付方式列表中隐藏。

  - `settings.ui.components` (object)
    带有模块菜单设置相关数据的对象。

  - `settings.ui.components.subscriptions` (object)
    带有订阅模块设置相关数据的对象。

  - `settings.ui.components.subscriptions.hidden` (boolean)
    在菜单中显示还是隐藏“管理订阅”页面。

  - `settings.ui.components.subscriptions.order` (integer)
    虚拟物品在模块菜单中的排列顺序。

  - `settings.ui.components.virtual_currency` (object)
    带有虚拟货币模块设置相关数据的对象。

  - `settings.ui.components.virtual_currency.custom_amount` (boolean)
    是否允许在支付UI中输入任意数量的虚拟货币。

  - `settings.ui.components.virtual_currency.hidden` (boolean)
    在菜单中显示还是隐藏“管理订阅”页面。

  - `settings.ui.components.virtual_currency.order` (integer)
    虚拟物品在模块菜单中的排列顺序。

  - `settings.ui.components.virtual_items` (object)
    带有虚拟物品模块设置相关数据的对象。

  - `settings.ui.components.virtual_items.hidden` (boolean)
    在菜单中显示还是隐藏“管理订阅”页面。

  - `settings.ui.components.virtual_items.order` (integer)
    虚拟物品在模块菜单中的排列顺序。

  - `settings.ui.components.virtual_items.selected_group` (string)
    用户打开虚拟物品选项卡时将会选择的组。

  - `settings.ui.components.virtual_items.selected_item` (string)
    用户打开虚拟物品选项卡时将会选择的物品。物品 SKU 应发送至此处。

  - `settings.ui.currency_format` (string)
    设置为code以在支付UI中显示三字母的[ISO 4217](https://developers.xsolla.com/zh/doc/pay-station/references/supported-currencies/)货币代码。默认显示货币符号而不是三字母货币代码。

  - `settings.ui.desktop` (object)
    带有对桌面版本有效的界面设置相关数据的对象。

  - `settings.ui.desktop.header` (object)
    带有标题设置相关数据的对象。

  - `settings.ui.desktop.header.close_button` (boolean)
    是否显示支付UI关闭按钮。用户点击该按钮后，支付UI关闭并重定向至settings.cancel_url参数指定的URL。若未在此参数传入URL，则使用settings.return_url参数传入的URL。

  - `settings.ui.desktop.header.close_button_icon` (string)
    支付UI中的关闭按钮图标。
    Enum: "arrow", "cross"

  - `settings.ui.desktop.header.is_visible` (boolean)
    标题在支付UI上是否可见。

  - `settings.ui.desktop.header.type` (string)
    如何显示标题。不能为compact（隐藏项目名称和用户ID）或normal（默认）。
    Enum: "compact", "normal"

  - `settings.ui.desktop.header.visible_logo` (boolean)
    如为true，Logo在标题中显示。要上传图片，请在[发布商帐户](https://publisher.xsolla.com/)中打开您的项目，然后前往支付中心 > 设置部分。

  - `settings.ui.desktop.header.visible_name` (boolean)
    标题中是否显示项目名称。

  - `settings.ui.desktop.header.visible_purchase` (boolean)
    是否在标题中显示购买描述（purchase.description.value）。默认为true。

  - `settings.ui.desktop.subscription_list` (object)
    带有订阅列表设置相关数据的对象。

  - `settings.ui.desktop.subscription_list.description` (string)
    可以在此传递订阅相关的任意文本。文本将显示在订阅计划列表的上方。

  - `settings.ui.desktop.subscription_list.display_local_price` (boolean)
    如为true且如果用户的当地货币与订阅计划的货币不同，则用户将看到两种价格：以当地货币和基础货币标价的价格。

  - `settings.ui.gp_quick_payment_button` (boolean)
    Google Pay支付方式的显示方式。如为true，则通过Google Pay快速支付的按钮在支付UI顶部显示，无论用户使用的是什么设备或浏览器。如为false，则根据[PayRank](/zh/doc/pay-station/how-to/how-to-manage-top-payment-methods/)算法在支付方式列表中显示Google Pay。如果未传递此参数，Google Pay将显示在支付UI的顶部，适用于所有用户设备和除Safari外的浏览器。在Safari浏览器中，它会显示在支付方式列表中。

  - `settings.ui.header` (object)

  - `settings.ui.header.visible_virtual_currency_balance` (boolean)
    此元素是否可在支付UI上隐藏。默认为true。

  - `settings.ui.is_cart_open_by_default` (boolean)
    在支付UI中显示购物车商品列表和结算明细。如为true，将以展开视图显示信息。如为false（默认情况）或未传递参数，将以折叠视图显示信息。

  - `settings.ui.is_independent_windows` (boolean)
    是否将用户从嵌入式启动器浏览器(WebView)跳转到其默认的浏览器来进行购买。默认为false。

  - `settings.ui.is_language_selector_hidden` (boolean)
    是否在支付页面隐藏语言选择器。如为false（默认），将显示选择器。

  - `settings.ui.is_payment_methods_list_mode` (boolean)
    打开支付UI时是否显示在该用户所在国家/地区可用的支付方式。如为false（默认），将显示在settings.payment_method参数中传入的支付方式或[PayRank算法](https://developers.xsolla.com/zh/solutions/payments/payment-ui-management/top-payment-methods-management/)选择的支付方式。

  - `settings.ui.is_prevent_external_link_open` (boolean)
    是否禁用将链接重定向至外部资源。默认为false。点击外部链接时，将通过postMessage机制发送external-link-open事件。重定向链接的地址在url参数中传递。

  - `settings.ui.is_search_field_hidden` (boolean)
    是否在支付UI中显示支付方式搜索栏。如为true，则隐藏搜索栏，默认为false。

  - `settings.ui.is_show_close_widget_warning` (boolean)
    关闭支付页面前鼠标悬停在 ×图标时是否显示交易正在处理中的警告。如传入false，或未传入参数，则不显示警告。默认为true。

  - `settings.ui.is_three_ds_independent_windows` (boolean)
    是否在新浏览器窗口中打开3-D Secure检查。如果您的设置强制执行内容安全政策(CSP)，请设置为true。

  - `settings.ui.layout` (string)
    支付UI主要元素的位置。您可以在游戏内打开支付UI和/或交换订单信息和支付方式信息列的位置。详细信息请参阅[自定义说明](https://developers.xsolla.com/zh/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_layout)。
    Enum: "embed", "column_reverse", "embed_column_reverse"

  - `settings.ui.mobile` (object)

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

  - `settings.ui.mobile.header.close_button` (boolean)
    是否在移动端版本显示支付UI关闭按钮。用户点击该按钮后，支付UI关闭并重定向至settings.cancel_url参数指定的URL。若未在此参数传入URL，则使用settings.return_url参数传入的URL。

  - `settings.ui.mobile.header.close_button_icon` (string)
    支付UI中的关闭按钮图标。
    Enum: "arrow", "cross"

  - `settings.ui.mode` (string)
    支付UI的显示模式，用于管理已保存的支付方式。可设置为user_account或省略。在此模式下，用户只能更改语言、添加新支付方式和删除现有支付方式。


注：传入此参数后，跳转按钮将不会显示。若要在用户保存支付方式后进行重定向，请配置自动重定向。

  - `settings.ui.theme` (string)
    支付UI主题。可以是63295a9a2e47fab76f7708e1（浅色主题（默认）），或63295aab2e47fab76f7708e3（深色主题）。您也可以[创建自定义主题](https://developers.xsolla.com/zh/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_in_token)，然后在此参数中传入其ID。
    Enum: "63295a9a2e47fab76f7708e1", "63295aab2e47fab76f7708e3"

  - `settings.ui.user_account` (object)
    对象以及有关用户账号的数据。

  - `settings.ui.user_account.payment_accounts` (object)
    保存的支付方式部分。

  - `settings.ui.user_account.payment_accounts.enable` (boolean)
    指定是否在支付UI中显示前往支付方式编辑页面的铅笔图标。默认为true。

  - `settings.ui.user_account.payment_accounts.order` (integer)
    该部分在支付UI下拉列表中的位置。如传入了settings.ui.user_account.payment_accounts.enable，则该属性为必需。

  - `user` (object)
    带用户相关数据的对象。

  - `user.age` (integer)
    用户年龄。

  - `user.attributes` (object)
    带有用户属性相关数据的对象，用于筛选物品列表。应当是带键值对的有效JSON哈希。

  - `user.country` (object)

  - `user.country.allow_modify` (boolean)
    用户是否可以更改支付UI上的国家/地区。如果令牌中传入了country.value值，则值默认为false。

  - `user.country.value` (string)
    使用[ISO 3166-1 alpha-2标准](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)规定的2字母组合表示国家/地区。

  - `user.email` (object)
    user.email对象是反欺诈模型的必要部分，有助于提高接受率。同时它也是艾克索拉和支付系统的要求。如果未传入该参数，支付页面将显示输入邮箱必填字段。购买凭证将发送至在该参数中传入的或在支付页面上输入的邮箱地址。

  - `user.email.allow_modify` (boolean)
    用户是否可在支付UI中输入其邮箱。如令牌中传入了user.email.value参数，该值默认为false。

  - `user.email.value` (string, required)
    用户电子邮箱。必须符合[RFC 822](https://www.w3.org/Protocols/rfc822/#z8)协议标准。

  - `user.id` (object, required)

  - `user.id.value` (string, required)
    存储在己侧的游戏内唯一用户ID。请确保传入现有用户ID。如遇到错误，请参阅[常见问题回答](/zh/doc/pay-station/references/faq/#faq_validation)。

  - `user.is_legal` (boolean)
    用户是否为法律实体。

  - `user.legal` (object)
    包含法律实体详细信息的对象。如果user.is_legal为true，则对象及其所有参数为必需。

  - `user.legal.address` (string)
    完整法定地址。

  - `user.legal.country` (string)
    公司所在国家/地区。参照[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)标准的两个大写字母表示的国家/地区代码。

  - `user.legal.name` (string)
    完整法定名称。

  - `user.legal.vat_id` (string)
    个人纳税人识别号。

  - `user.name` (object)

  - `user.name.allow_modify` (boolean)
    用户是否可在支付UI中输入其名字。如令牌中传入了user.name.value参数，该值默认为false。

  - `user.name.value` (string)
    用户昵称。

  - `user.phone` (object,null)

  - `user.phone.value` (string)
    电话号码。

  - `user.public_id` (object)

  - `user.public_id.value` (string)
    唯一识别用户并为用户所熟知的参数，与用户ID（电子邮件、昵称等）不同。此参数在可以在游戏商店以外进行购买时使用（如现金售货亭中的游戏按键）。

  - `user.steam_id` (object)

  - `user.steam_id.value` (string)
    Steam ID。

  - `user.tracking_id` (object)

  - `user.tracking_id.value` (string)
    唯一用户ID — 用于营销活动。可包含数字和英文字符。

  - `user.utm` (object)
    对象包含描述流量特性的数据。

  - `user.utm.utm_campaign` (string)
    活动标题。该参数应当包含直译的活动标题或者翻译为英文的活动标题。

  - `user.utm.utm_content` (string)
    该活动的实质。

  - `user.utm.utm_medium` (string)
    流量渠道（内容关联广告、媒体广告、邮件列表消息）。

  - `user.utm.utm_source` (string)
    流量来源。

  - `user.utm.utm_term` (string)
    活动关键词。在指定该参数的情况下，统计数据是基于在确定您的广告活动的目标对象过程中所使用的关键词数据而生成的，而不是基于检索项数据。在Google Analytics中，utm_term标签的内容成为包含检索项的综合报告中的一部分。

## Response 200 fields (application/json):

  - `token` (string)

## Response 422 fields (application/json):

  - `extended_message` (object)

  - `extended_message.global_errors` (array)

  - `extended_message.property_errors` (object)
    对象包含参数名称和错误描述。

  - `http_status_code` (integer)

  - `message` (string)

  - `request_id` (string)


