Saltar al contenido

Descripción general

  • Versión: 2.0.0
  • Servidores:
    • https://api.xsolla.com/api

Con Pay Station, los socios podrán monetizar sus productos ofreciendo a los usuarios una cómoda interfaz para pagar las compras dentro del juego en la tienda del juego. Para establecer la apertura de la interfaz de pago, consulte estas instrucciones.

Pay Station API proporciona los siguientes grupos de llamadas:

  • El token incluye la llamada API que permite generar un token con parámetros de usuario arbitrarios para procesar posteriormente los pagos a través de la interfaz de pago.
  • Tokenización: incluye las llamadas API para procesar pagos de forma segura sin abrir la interfaz de pago ni implicar al usuario.
  • Informes: incluye las llamadas API para devolver datos sobre las transacciones de los usuarios, generar informes, así como obtener el desglose de las retribuciones por moneda.
  • Reembolso: incluye las llamadas API para solicitar reembolsos totales y parciales.
  • Pruebas: incluye la llamada API que permite probar el proceso de contracargo.

En el documento Guía de integración de la solución Payments encontrará información detallada sobre la configuración de la interfaz de pago.

Nota

También puede consultar la sección de la Xsolla Base API de la Colección Postman para probar las llamadas API empleadas para la integración.

Descargar descripción de OpenAPI
Idiomas
Servidores
https://api.xsolla.com/merchant/v2/
Mock server
https://xsolla.redocly.app/_mock/es/api/pay-station/
Operaciones

Solicitud

Puede generar un token con parámetros de usuario arbitrarios. Envía dichos parámetros al obtener el token y los recupera tras realizarse un pago. Un token solo puede incluir los parámetros mencionados en este documento o que haya definido previamente.

Si se envía algún parámetro con un formato o de tipo incorrecto, no se generará ningún token. Aparecerá el código HTTP 422 junto con la descripción del error en el cuerpo JSON. En extended_message encontrará los detalles exactos de los parámetros que se han enviado incorrectamente.

Por defecto, el ciclo de vida del token es de 24 horas. Si quiere cambiar este valor, contacte con su gestor del éxito del cliente o envíe un correo electrónico a csm@xsolla.com. El nuevo valor se habilitará para todos los proyectos de su empresa creados en Cuenta del editor.

Aviso

El token que obtiene tras solicitar este método API solo se puede utilizar para autorizar otras solicitudes. Puede utilizar este token para abrir la interfaz de pago si tiene integrado el producto Subscriptions.

Para abrir la interfaz de pago en una nueva ventana, utilice el siguiente enlace: https://secure.xsolla.com/paystation4/?token={token}, en el cual {token} es el token recibido.

Para realizar pruebas, utilice esta URL: https://sandbox-secure.xsolla.com/paystation4/?token={token}.

Aviso

Esta llamada API no contiene el parámetro de ruta project_id, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.

Seguridad
basicAuth
Ruta
merchant_idintegerrequerido

ID de vendedor.

Cuerpoapplication/jsonrequerido
custom_parametersobject(custom_parameters)

Este objeto contiene parámetros destinados a configurar los filtros antifraude. La lista de parámetros se muestra a continuación. Para agregar parámetros personalizados, contacte con su gestor del éxito del cliente o envíe un correo electrónico a csm@xsolla.com.

custom_parameters.​active_datestring

Fecha de última visita conforme a la norma ISO 8601.

custom_parameters.​additional_verificationboolean

Si el jugador usa o no procedimientos de verificación de cuenta.

custom_parameters.​character_customizedboolean

Si el jugador ha personalizado o no su personaje.

custom_parameters.​chat_activityboolean

Si el jugador emplea o no la función de chat.

custom_parameters.​completed_tasksinteger

Número de tareas/objetivos realizados/alcanzados.

custom_parameters.​forum_activityboolean

Si el jugador emplea o no la función del foro.

custom_parameters.​items_usedboolean

Si el jugador usa o no artículos comprados en el juego.

custom_parameters.​karma_pointsinteger

Karma del jugador.

custom_parameters.​last_change_password_datestring

Fecha del último cambio de contraseña conforme a la norma ISO 8601.

custom_parameters.​non_premium_currencynumber(float)

Importe de la moneda no prémium.

custom_parameters.​notifications_enabledboolean

Si el jugador habilitó o no las notificaciones.

custom_parameters.​profile_completedboolean

Si el jugador añadió o no información adicional a su perfil.

custom_parameters.​profile_image_addedboolean

Si el jugador ha subido o no una imagen de perfil.

custom_parameters.​pvp_activityboolean

Si el jugador participa en batallas PvP (jugadores contra jugadores).

custom_parameters.​registration_datestring

Fecha de creación de la cuenta conforme a la norma ISO 8601.

custom_parameters.​session_timestring

Duración media de sesión conforme a la norma ISO 8601.

custom_parameters.​social_networks_addedboolean

Si el jugador ha conectado o no perfiles de redes sociales.

custom_parameters.​total_bansinteger

Número de veces que el jugador fue expulsado del chat/foro.

custom_parameters.​total_charactersinteger

Número de personajes dentro del juego.

custom_parameters.​total_clansinteger

Número de clanes a los que pertenece el jugador.

custom_parameters.​total_friendsinteger

Número de amigas/os.

custom_parameters.​total_game_eventsinteger

Número de eventos internos del juego en los que participó el jugador.

custom_parameters.​total_giftsinteger

Número de regalos internos del juego que el jugador ha enviado/recibido.

custom_parameters.​total_hoursinteger

Número total de horas dentro del juego.

custom_parameters.​total_inventory_valuenumber(float)

Valor total del inventario (moneda del juego).

custom_parameters.​total_sumnumber(float)

Importe total de los pagos.

custom_parameters.​tutorial_completedboolean

Si el jugador ha finalizado o no el tutorial del juego.

custom_parameters.​unlocked_achievementsinteger

Número de logros desbloqueados.

custom_parameters.​user_levelinteger

Nivel, reputación o rango del jugador.

custom_parameters.​win_rateinteger

Índice de victorias.

purchaseobject(purchase)

Objeto con los detalles de la compra.

purchase.​is_lootboxboolean(is_lootbox)

Si el artículo es una caja de botín.

Predeterminado false
purchase.​subscriptionobject(subscription)

Datos de la suscripción.

purchase.​subscription.​available_plansArray of strings

Planes de suscripción que deben aparecer en la interfaz de pago.

purchase.​subscription.​currencystring

Moneda del plan de suscripción que debe usarse en todos los cálculos.

purchase.​subscription.​operationstring

El tipo de operación aplicado al plan de suscripción del usuario. Para cambiar el plan de suscripción, transmite el valor change_plan. Debes especificar el ID del nuevo plan en el parámetro purchase.subscription.plan_id.

purchase.​subscription.​plan_idstring

ID externo del plan de suscripción. Puede encontrarse en la sección Suscripciones > Planes de suscripción de la Cuenta del editor.

purchase.​subscription.​product_idstring

ID del producto.

purchase.​subscription.​trial_daysinteger

Periodo de prueba en días.

settingsobject(settings)

Configuración del proceso de pago y de la interfaz de pago para un usuario.

settings.​currencystring(currency)

Moneda preferida para la compra. Código de moneda de tres letras de conformidad con la norma ISO 4217.

settings.​external_idstring(external_id)

ID de transacción en el juego. Debe ser distinto para cada pago de usuario. Consulta la documentación para obtener información detallada.

settings.​languagestring(language)

Idioma de la interfaz. Código de idioma de dos letras minúsculas.

settings.​modestring(mode.settings)

Establécelo en sandbox para probar el proceso de pago. En este caso, usa https://sandbox-secure.xsolla.com para acceder a la interfaz de pago de prueba.

settings.​payment_methodinteger(payment_method)

ID del método de pago.

settings.​payment_widgetstring(payment_widget)

Widget de pago. Puede ser paybycash o giftcard. Si se establece el parámetro, al usuario se le redirige al widget "Pagar en efectivo" o "Tarjetas regalo", respectivamente.

Enumeración"paybycash""giftcard"
settings.​project_idinteger(project_id)requerido

ID en Xsolla del juego. Se puede encontrar en Cuenta del editor.

settings.​redirect_policyobject(redirect_policy)

Ajustes de las directivas de redireccionamiento.

settings.​redirect_policy.​delayinteger

Retraso (en segundos) tras el cual a un usuario se le redirige automáticamente a la URL de retorno.

settings.​redirect_policy.​manual_redirection_actionstring

Comportamiento de Pay Station que se desencadena cuando el usuario pulsa el botón cerrar o el botón Volver al juego. Puede ser redirect (por defecto) y postmessage. Si se establece como redirect, al usuario se le redirige a la URL transmitida en el token o especificada en la Cuenta del editor. Si se establece como postmessage, al usuario no se le redirige a otras páginas. Al pulsar en el icono de cerrar, se inicia el envío del evento close, y al pulsar en el botón Volver al juego, se inicia el evento return.

Enumeración"redirect""postmessage"
settings.​redirect_policy.​redirect_button_captionstring

Texto del botón para el redireccionamiento manual.

settings.​redirect_policy.​redirect_conditionsstring

Estado del pago por el que se redirige a un usuario a la URL de retorno. Puede ser none, successful, "successful_or_canсeled" o any.

Enumeración"none""successful""successful_or_canceled""any"
settings.​redirect_policy.​show_redirect_countdownboolean

Si se muestra un temporizador de cuenta atrás para la redirección en la página de estado del pago. La duración del temporizador se determinará en función del valor transmitido en el parámetro settings.redirect_policy.delay.

Predeterminado false
settings.​redirect_policy.​status_for_manual_redirectionstring

Se muestra el estado del pago por el que se redirige a un usuario a la URL de retorno. Puede ser none, successful, "successful_or_canсeled" o any.

Enumeración"none""successful""successful_or_canceled""any"
settings.​return_urlstring(return_url)

URL de la página a la que se redirige al usuario tras el pago. Consulta la documentación para obtener información detallada sobre la configuración de redirecciones.

settings.​uiobject(ui)

Ajustes de la interfaz.

settings.​ui.​alternative_first_screenstring(alternative_first_screen)

Vista alternativa de la pantalla de la interfaz de pago al abrirse. Por ejemplo, puede mostrar los métodos de pago prioritarios.

Cuando se ha configurado apple-pay, el usuario ve el botón de Apple Pay como la opción de pago principal junto con un enlace a una lista de otros métodos de pago. Esta lógica no se aplica a los dispositivos Android.

Valor"apple-pay"
settings.​ui.​apple_pay_quick_payment_buttonboolean(ap_quick_payment_button)

Si se muestra o no el botón de pago rápido a través de Apple Pay en la parte superior de la interfaz de pago en los dispositivos admitidos. Es true por defecto. Si es false, Apple Pay aparece en la lista de métodos de pago según el algoritmo de PayRank.

Nota

En dispositivos Android y en cualquier otro dispositivo que no admita pagos con Apple Pay, este método de pago quedará oculto en la lista de métodos disponibles, con independencia del valor del parámetro.

settings.​ui.​componentsobject(components)

Ajustes del menú.

settings.​ui.​components.​subscriptionsobject

Ajustes del submenú de planes de suscripción.

settings.​ui.​components.​subscriptions.​hiddenboolean

Si se muestra o no el submenú.

settings.​ui.​components.​subscriptions.​orderinteger

Posición del submenú en el menú.

settings.​ui.​components.​virtual_currencyobject

Ajustes del submenú de moneda virtual.

settings.​ui.​components.​virtual_currency.​custom_amountboolean

Si el usuario puede ingresar o no una cantidad arbitraria de moneda virtual en la interfaz de pago.

settings.​ui.​components.​virtual_currency.​hiddenboolean

Si se muestra o no el submenú.

settings.​ui.​components.​virtual_currency.​orderinteger

Posición del submenú en el menú.

settings.​ui.​components.​virtual_itemsobject

Ajustes del submenú de artículos virtuales.

settings.​ui.​components.​virtual_items.​hiddenboolean

Si se muestra o no el submenú.

settings.​ui.​components.​virtual_items.​orderinteger

Posición del submenú en el menú.

settings.​ui.​components.​virtual_items.​selected_groupstring

Grupo que se mostrará tras abrir la pestaña de artículos virtuales.

settings.​ui.​components.​virtual_items.​selected_itemstring

Artículo que se mostrará tras abrir la pestaña de artículos virtuales (código de artículo —SKU—).

settings.​ui.​currency_formatstring(currency_format)

Establecer en code para mostrar un código de moneda ISO 4217 de tres letras en la interfaz de pago. Por defecto, se muestra el símbolo de moneda en lugar del código de moneda de tres letras.

settings.​ui.​desktopobject(desktop.ui)

Ajustes de la interfaz para la versión de escritorio.

settings.​ui.​desktop.​headerobject(header.desktop)

Ajustes del encabezado.

settings.​ui.​desktop.​header.​close_buttonboolean

Mostrar o no el botón Close* (Cerrar) en la interfaz de pago. El botón cierra la interfaz de pago y redirige al usuario a la URL especificada en el parámetro settings.return_url. Por defecto es false.

settings.​ui.​desktop.​header.​close_button_iconstring(close_button_icon)

El icono del botón Cerrar en la interfaz de pago.

Enumeración ValorDescripción
arrow

El icono a la izquierda del encabezado de la interfaz de pago.

cross

El icono × a la derecha del encabezado de la interfaz de pago.

settings.​ui.​desktop.​header.​is_visibleboolean

Si se muestra o no el encabezado en la interfaz de pago.

settings.​ui.​desktop.​header.​typestring

Cómo mostrar el encabezado. Puede ser compact (oculta el nombre del proyecto y el ID del usuario) o normal (por defecto).

Enumeración"compact""normal"
settings.​ui.​desktop.​header.​visible_logoboolean

Si es true, el logotipo se muestra en el encabezado. Para subir una imagen, abra su proyecto en Cuenta del editor y vaya a la sección Pay Station > Settings.

settings.​ui.​desktop.​header.​visible_nameboolean

Si se muestra o no el nombre del proyecto en el encabezado.

settings.​ui.​desktop.​header.​visible_purchaseboolean

Si se muestra o no la descripción de la compra (purchase.description.value) en el encabezado. Por defecto es true.

settings.​ui.​desktop.​subscription_listobject(subscription_list.desktop)

Configuración de la lista de planes de suscripción.

settings.​ui.​desktop.​subscription_list.​descriptionstring

Cualquier texto que se muestre encima de la lista de planes de suscripción disponibles en la interfaz de pago.

settings.​ui.​desktop.​subscription_list.​display_local_priceboolean

Si es true, y si la moneda local del usuario difiere de la establecida para el plan de suscripción, el usuario podrá ver ambos precios: uno en la moneda local y otro en la moneda básica.

settings.​ui.​gp_quick_payment_buttonboolean(gp_quick_payment_button)

La forma en que se muestra el método de pago Google Pay. Si es true, el botón de pago rápido mediante Google Pay se muestra en la parte superior de la interfaz de pago, independientemente del dispositivo y del navegador del usuario. Si es false, Google Pay aparece en la lista de métodos de pago según el algoritmo PayRank. Si no se transmite el parámetro, Google Pay se muestra en la parte superior de la interfaz de pago en los dispositivos y navegadores de cualquier usuario, salvo en Safari; en este sistema operativo se muestra en la lista de métodos de pago.

settings.​ui.​headerobject(header.ui)
settings.​ui.​header.​visible_virtual_currency_balanceboolean

Si este elemento puede ocultarse o no en la interfaz de pago. true por defecto.

settings.​ui.​is_cart_open_by_defaultboolean(is_cart_open_by_default)

La visualización de la lista de artículos de la cesta y los datos financieros en la interfaz de pago. Si es true, la información se muestra en una vista ampliada. Si es false (por defecto) o no se transmiten los parámetros, la información se muestra en una vista contraída.

settings.​ui.​is_independent_windowsboolean(is_independent_windows)

Si se redirige a los usuarios desde el navegador del lanzador incrustado (WebView) a su navegador predeterminado para realizar una compra. false por defecto.

settings.​ui.​is_language_selector_hiddenboolean(is_language_selector_hidden)

Si el selector del idioma está oculto en la página de pago. Si es false (por defecto), se mostrará el selector.

settings.​ui.​is_payment_methods_list_modeboolean(is_payment_methods_list_mode)

Si se muestra la lista de métodos de pago disponibles en el país del usuario al abrir la interfaz de pago. Si es false (opción por defecto), se muestra el método de pago transmitido en el parámetro settings.payment_method o el método seleccionado por el algoritmo de PayRank.

settings.​ui.​is_prevent_external_link_openboolean(is_prevent_external_link_open)

Si se desactiva o no la redirección de enlaces a un recurso externo. false por defecto. Al hacer clic en un enlace externo, se envía el evento external-link-open a través del mecanismo postMessage. La dirección del enlace redirigido se transmite en el parámetro url.

settings.​ui.​is_search_field_hiddenboolean(is_search_field_hidden)

Si se muestra o no una barra del método de pago en la interfaz de pago. Si es true, la barra de búsqueda se oculta. Es false por defecto.

settings.​ui.​is_show_close_widget_warningboolean(is_show_close_widget_warning)

Si se muestra un aviso sobre el procesamiento de la transacción al pasar el ratón por encima del icono × antes de cerrar la página de pago. Si se transmite false o no se transmite el parámetro, no se mostrará el aviso. true por defecto.

settings.​ui.​is_three_ds_independent_windowsboolean(is_three_ds_independent_windows)

Si se abre o no la verificación de 3D Secure en una nueva ventana del navegador. Si su configuración aplica una Política de seguridad de contenidos (CSP), establézcala como true.

Predeterminado false
settings.​ui.​layoutstring(layout)

Ubicación de los principales elementos de la interfaz de pago. Puedes abrir la interfaz de pago dentro de tu juego o intercambiar las columnas con información sobre un pedido y los métodos de pago. Consulta las instrucciones de personalización para obtener información detallada.

Enumeración"embed""column_reverse""embed_column_reverse"
settings.​ui.​mobileobject(mobile.ui)
settings.​ui.​mobile.​headerobject
settings.​ui.​mobile.​header.​close_buttonboolean

Si se muestra o no el botón Cerrar en la versión móvil de Pay Station. El botón cierra Pay Station y redirige al usuario a la URL definida en el parámetro settings.return_url. Por defecto es false.

settings.​ui.​mobile.​header.​close_button_iconstring(close_button_icon)

El icono del botón Cerrar en la interfaz de pago.

Enumeración ValorDescripción
arrow

El icono a la izquierda del encabezado de la interfaz de pago.

cross

El icono × a la derecha del encabezado de la interfaz de pago.

settings.​ui.​modestring(mode.ui)

Modo de visualización de la interfaz de pago para gestionar los métodos de pago guardados. Puede establecerse como user_account u omitirse. En este modo, el usuario solamente puede cambiar el idioma, agregar nuevos métodos de pago y eliminar los existentes.

Observación

Cuando se transmite este parámetro, no se muestra el botón de redireccionamiento. Para redirigir a un usuario tras guardar un método de pago, configure los redireccionamientos automáticos.

settings.​ui.​themestring(theme.ui)

Tema de interfaz de pago. Puede ser 63295a9a2e47fab76f7708e1 para el tema claro (por defecto) o 63295aab2e47fab76f7708e3 para el tema oscuro. También puede crear un tema personalizado y transmitir el ID del tema en este parámetro.

Enumeración"63295a9a2e47fab76f7708e1""63295aab2e47fab76f7708e3"
settings.​ui.​user_accountobject(user_account)

Datos de la cuenta del usuario.

settings.​ui.​user_account.​payment_accountsobject

Sección Métodos guardados.

settings.​ui.​user_account.​payment_accounts.​enableboolean

Especifica si se muestra el icono del lápiz en la interfaz de usuario de pago que va a la página de edición del método de pago. true por defecto.

settings.​ui.​user_account.​payment_accounts.​orderinteger>= 1

Posición de la sección en la lista desplegable de la interfaz de pago. Es necesario si se transmite settings.ui.user_account.payment_accounts.enable.

userobject(user)

Datos del usuario.

user.​ageinteger(age.user)

Edad del usuario.

user.​attributesobject(attributes.user)

Atributos de usuario para filtrar la lista de artículos, representados como un conjunto JSON válido de pares clave-valor.

user.​countryobject(country.user)
user.​country.​allow_modifyboolean

Si el usuario puede cambiar o no el país en la interfaz de pago. Si se transmite country.value en el token, el valor es false por defecto.

user.​country.​valuestring

Código de país de dos letras mayúsculas de conformidad con la norma ISO 3166-1 alpha-2.

user.​emailobject(email.user)

El objeto user.email es un componente fundamental del desarrollo de los modelos antifraude y contribuye a aumentar los índices de aceptación. Es un requisito para Xsolla y para los sistemas de pago. Si no se transmite el parámetro, el campo obligatorio para introducir el correo electrónico aparece en la página de pago. Un usuario recibe un recibo de compra en el correo electrónico transmitido en el parámetro o introducido en la página de pago.

user.​email.​allow_modifyboolean

Si un usuario puede introducir su correo electrónico en la interfaz de pago. Si el parámetro user.email.value se transmite en el token, el valor es false por defecto.

user.​email.​valuestring<= 100 charactersrequerido

Correo electrónico del usuario. Debe ser válido conforme al protocolo RFC 822.

user.​idobject(id.user)requerido
user.​id.​valuestringrequerido

ID único de usuario en el juego que está almacenado en su lado. Asegúrese de transmitir el ID de usuario existente. Si se produce un error, consulte las respuestas a las Preguntas frecuentes.

user.​is_legalboolean(is_legal.user)

Si el usuario es una entidad jurídica.

user.​legalobject(legal.user)

Objeto con datos de la entidad jurídica.

user.​legal.​addressstring

Dirección legal completa.

user.​legal.​countrystring

País de constitución. Código de país de dos letras mayúsculas de conformidad con la norma ISO 3166-1 alpha-2.

user.​legal.​namestring

Nombre legal completo.

user.​legal.​vat_idstring

Identificador del contribuyente individual.

user.​nameobject(name.user)
user.​name.​allow_modifyboolean

Si un usuario puede introducir su nombre en la interfaz de pago. Si el parámetro user.name.value se transmite en el token, el valor es false por defecto.

user.​name.​valuestring

Nombre de pantalla del usuario.

user.​phoneobject or null(phone.user)
user.​phone.​valuestring

Número de teléfono del usuario.

user.​public_idobject(public_id.user)
user.​public_id.​valuestring

Parámetro que identifica de forma unívoca al usuario y que este conoce (correo electrónico, nombre de usuario, etc.). Permite al usuario hacer compras fuera de la tienda del juego (p. ej., a través de quioscos de efectivo).

user.​steam_idobject(steam_id.user)
user.​steam_id.​valuestring

ID de Steam.

user.​tracking_idobject(tracking_id.user)
user.​tracking_id.​valuestring= 32 characters

ID único de usuario: se utiliza en campañas de marketing. Puede contener dígitos y caracteres latinos.

user.​utmobject(utm.user)

Atributos de tráfico.

user.​utm.​utm_campaignstring

Título de la campaña, transliterado o traducido al inglés.

user.​utm.​utm_contentstring

Contenido de campaña.

user.​utm.​utm_mediumstring

Canal de tráfico (anuncios contextuales, anuncios en medios de comunicación, listas de correo electrónico, etc.).

user.​utm.​utm_sourcestring

Fuente de tráfico.

user.​utm.​utm_termstring

Palabras clave de la campaña. Si están establecidas, las estadísticas dependerán de las palabras clave utilizadas para la segmentación de los anuncios, en vez de en consultas de búsqueda específicas. En Google Analytics, el utm_term especificado forma parte del informe de términos de búsqueda general.

curl -i -X POST \
  -u <username>:<password> \
  'https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token' \
  -H 'Content-Type: application/json' \
  -d '{
    "settings": {
      "currency": "USD",
      "language": "en",
      "project_id": 16184,
      "ui": {
        "size": "medium"
      }
    },
    "user": {
      "email": {
        "value": "email@example.com"
      },
      "id": {
        "value": "user_2"
      },
      "name": {
        "value": "John Smith"
      }
    }
  }'

Respuestas

Created.

Cuerpoapplication/json
tokenstring
Respuesta
application/json
{ "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT" }
Operaciones
Operaciones
Operaciones
Operaciones