API – Developers Docs API – Developers Docs
  • Cyberpac
  • Addon Payments
  • Pagos integrados en TPV
  • Inglés
API – Developers Docs API – Developers Docs
API – Developers Docs
  • Cyberpac
  • Addon Payments
  • Pagos integrados en TPV
  • Inglés

Addon Payments

  • Icono de carpeta cerrada Icono de apertura de carpetaIntegraciones
    • Empieza a integrar
      • Bienvenida para las integraciones en CMS
      • Introducción a las integraciones: Hosted, Host2Host y JavaScript
    • Plugins para CMS
      • PrestaShop
        • Instalación y configuración de PrestaShop
        • Errores frecuentes en la instalación y configuración de PrestaShop
        • Gestión de transacciones en PrestaShop
      • WooCommerce
        • Instalación y configuración de WooCommerce
        • Errores frecuentes en la instalación y configuración de WooCommerce
        • Gestión de transacciones en WooCommerce
      • Magento
        • Instalación y configuración de Magento
        • Errores frecuentes en la instalación y configuración de Magento
        • Gestión de transacciones en Magento
      • Salesforce
        • Salesforce Commerce Cloud
    • Tarjetas
      • Integración Hosted
      • Integración Host2Host
      • Integración JavaScript
      • PSD2 y 3DSv2
      • Certificación PCI DSS
    • Complementa tu integración
      • Funcionalidades adicionales
      • Gestión de las notificaciones
      • Complementa la integración JavaScript
      • Personalización de la experiencia de pago
      • Pase a Producción
      • Cifrado, firma y envío de la petición
      • Redirección del cliente
    • Métodos de pago
      • Apple Pay
      • PayByBank
      • Amex
      • PayPal
      • Worldpay
      • Bizum
      • PeX
      • Quix
    • Recursos
      • Glosario
      • Soluciones de pago
      • Códigos de respuesta
      • Códigos de países y estados
      • Códigos de divisa
      • Códigos y validaciones del tipo de documento identificativo
      • Tarjetas para pruebas
    • Herramientas
      • Cifrado y descifrado
      • Postman
      • SDKs
  • Icono de carpeta cerrada Icono de apertura de carpetaPortal BackOffice
    • Guía de uso de Pago por Enlace
    • Consulta de operaciones
    • Creación de usuarios
  • Icono de carpeta cerrada Icono de apertura de carpetaConsultas frecuentes

Integración JavaScript

Introducción

En esta sección se exponen los pasos a seguir para realizar la integración JavaScript. En esta integración, el cajero de Addon Payments se renderiza en el frontal de tu comercio electrónico y se encuentra hospedado en la pasarela. De esta forma se reducen los requerimientos PCI DSS del lado de tu comercio.

Adjuntamos ejemplos de código para completar pasos, peticiones formadas y respuestas recibidas desde la pasarela. Los parámetros, operativas y procedimientos pueden variar entre las soluciones de pago o servicios. En esta guía se indican los más comunes a la mayoría de soluciones de pago.

Los siguientes enlaces te ayudarán durante tu integración:

  • Glosario, para familiarizarte con los conceptos que usaremos a lo largo de la documentación.
  • Postman, para que pruebas las operativas de esta integración.
  • SDKs, herramienta completa para integrar Addon Payments de forma rápida, flexible y sencilla.
  • Complementa la integración JavaScript.

Por último, al final de esta guía dispones de enlaces a otros documentos de interés.

Esperamos que esta guía te sea de utilidad. 

Flujo de la transacción

A continuación, tienes un diagrama con todo el proceso que sigue la integración JavaScript.

El flujo que sigue es el siguiente:

  1. El comercio realiza una solicitud de authToken y transmite información relacionada con el comercio y el cliente. Consulta la sección Obtención del authToken de esta guía para más información.
  2. Addon Payments devuelve un authToken único y de un solo uso que está vinculado a los datos enviados.
  3. En este momento, el comercio podría enviar el authToken al navegador del cliente y comenzar a procesar el cajero Addon Payments JS.
  4. Utilizando authToken, el comercio presenta el formulario de pago en caja. Consulta Renderizar el cajero frontal para obtener más información.
  5. El cliente competa toda la información del cliente o del pago y envía el formulario.
  6. Addon Payments recopila la información de pago y genera un prepayToken único que está vinculado a los valores solicitados de authToken originales. Una vez que se genera el token, Addon Payments realizará una llamada al método merchantPrePayCallback que se establece en el paso 4. Para obtener más información, consulta la sección Renderizado del cajero frontal.
  7. Envía el prepayToken al backend del comercio.
  8. Crea y realiza la solicitud charge configurando todos los parámetros requeridos. Recuerda que hay que enviar el prepayToken en la solicitud. Consulta Charge para más información.
  9. Addon Payments hace el charge.
  10. Addon Payments obtiene la respuesta de la solución de pago.
  11. Addon Payment devuelve la respuesta del charge al comercio. Dependiendo de la respuesta, podría requerir alguna redirección del cliente.
  12. El pago se completa al finalizar el estado final. Consulta la sección Respuesta para más información.
  13. El pago requiere una redirección del cliente, por lo que el comercio debe redirigir al cliente a la URL del tercero, indicada en la respuesta. Consulta la sección Charge para más información.
  14. El cliente interactúa con la página de la solución de pago.
  15. La solución de pago informa el estado del pago.
  16. Addon Payment envía una notificación al comercio usando el campo statusURL de la solicitud.
  17. El comercio muestra la página de pago final al cliente.

Entornos: Staging y Producción

Addon Payments cuenta con dos (2) entornos operativos independientes:

  • Entorno de Staging:
    • Es el primer entorno con el que entrarás en contacto.
    • Tienes a tu disposición un listado de tarjetas para pruebas que permiten realizar transacciones simulando diferentes operativas, tipos de autenticación (frictionless, challenge) y resultados (autorizada, denegada).
    • Esto te permite comprobar la correcta gestión de las diferentes casuísticas por parte de tu integración.
    • Las tarjetas y cuentas reales no funcionan.
  • Entorno de Producción:
    • Es el entorno en el que las transacciones tienen efectos contables.
    • Únicamente se puede transaccionar con tarjetas y cuentas reales y operativas.

Esta es una tabla con los endpoints donde enviar la petición, ya sea de autorización o de pago, según el entorno donde operes: 

PeticiónEntornoURL
Petición /authStaginghttps://epgjs-mep-stg.addonpayments.com/auth
Petición /chargeStaginghttps://epgjs-mep-stg.addonpayments.com/charge/v2
Petición /authProducciónhttps://epgjs-mep.addonpayments.com/auth
Petición /chargeProducciónhttps://epgjs-mep.addonpayments.com/charge/v2

A continuación, tienes una tabla con la biblioteca de AP de JavaScript que debes importar y la llamada para definir la URL base de la pasarela de pago.

  • Debes añadir, en la página de pago de tu plataforma de comercio electrónico, un elemento HTML <script> con la ruta de la biblioteca JS de AP. Esta ruta debe incluir la versión de la biblioteca a cargar. Actualmente recomendamos la versión 4.0.0. 
FunciónEntorno URL
Importar la biblioteca JS de Addon PaymentsStaginghttps://epgjs-rendercashier-stg.addonpayments.com/js/public/epgjs-[versión]-min.js
Definir la URL base de la pasarela de pagoStaginghttps://epgjs-web-stg.addonpayments.com/
Importar la biblioteca JS de Addon PaymentsProducciónhttps://epgjs-rendercashier.addonpayments.com/js/public/epgjs-[versión]-min.js
Definir la URL base de la pasarela de pago Producciónhttps://epgjs-web.addonpayments.com/

Obtención del authToken

El primer paso es obtener el «authToken» que nos permitirá renderizar el cajero. Este paso es común en toda la integración. 

La obtención del authToken es común en toda la integración JavaScript, independientemente de la operativa que vayas a realizar (autorización, pre-autorización, etc.).

Este es un ejemplo de petición para obtener el authToken, el primero como cadena y el segundo como cURL. 

				
					{   
    "merchantId": "12345",
    "merchantKey": "dd0bc115-6f8f-4e65-9447-e06862eb62ec",
    "productId": "123450001",
    "currency": "EUR",
    "country": "ES",
    "customerId": "customer25879",
    "operationType": "debit"
}
				
			
				
					curl --location --request POST 'https://epgjs-mep-stg.addonpayments.com/auth' \
--header 'Content-Type: application/json' \
--data-raw '{
    "merchantId":"12345",
    "merchantKey":"356a8a53-b188-404d-b6c1-5bd44f48066a",
    "productId":"123450001",
    "currency":"EUR",
    "country":"ES",
    "customerId":"000001",
    "operationType": "DEBIT"
}'
				
			

Si la petición es válida, Addon Payments te devolverá un «authToken» con el que podrás renderizar el cajero en el frontal de tu página. Si la petición no es válida, se devolverá un mensaje como el que ves en la segunda pestaña:

				
					{
    "authToken": "23ed4dda-79f5-4a60-bcc0-52fe2f27b26e"
}
				
			
				
					{
    "error": true,
    "errorMessage": "Invalid merchant id or merchant key",
    "errorCode": 400
}

				
			

Las referencias de autorización recibidas tienen las siguientes características:

  • Validez de 30 minutos.
  • Puede usarse varias veces para enlazar la pasarela de pago.

Parámetros de la solicitud authToken

El tipo indica si el elemento es Requerido/Obligatorio (R) u Opcional (O).

CampoFormatoTipoDescripciónEjemplo
merchantIdNumérico entero
4~7 dígitos
REs el indicador de tu comercio en la plataforma de AP. Es facilitado por Soporte en el correo de bienvenida, es común para los dos entornos14983
merchantKeyAlfanumérico
Formato UUID
REs la contraseña de JavaScript. Se usa para verificar que la petición es legítima. Para el entorno de staging se envía en el correo de bienvenida, en entornos de producción se recupera a través del BackOffice.67a33d37-64b9-408e-a1b7-cef28ef94970
productIdNumérico entero
6~11 dígitos
RIdentificador del producto creado en tu comercio en AP. Es facilitado en el correo de bienvenida.149830
currencyAlfabético
3 caracteres
ISO-4217.3
RDivisa de la transacciónEUR
countryAlfabético
2 caracteres
ISO 3166-1 alfa-2
RPaís desde el que se envía la transacciónES
customerIdAlfanumérico
Máx. 80 caracteres
RId. del cliente en tu plataforma de comercio electrónico.
– Para guardar la tarjeta del cliente, usa el parámetro «forceTokenRequest«, con valor «true» para guardar el token y «false» para no hacerlo.
– Para que el cliente vea o no la opción de recordar su tarjeta, usa el parámetro «showRememberMe«, con valor «true» para mostrarle y «false» para ocultarlo.
A34623
operationTypeAlfanumérico
Máx. 45 caracteres
REspecifica el tipo de operación a realizar. Valores admitidos:
– debit (por defecto): Transacción de pago. Es decir, el efectivo viaja desde la cuenta del cliente al comercio.
– credit: Transacción de ingreso en cuenta del cliente. Es decir, el efectivo viaja desde el comercio hasta la cuenta del cliente. Por ejemplo, en el pago de un premio. No confundir con las devoluciones. Estas tienen su propio tipo de transacción.
debit
showRememberMeValores posibles:
– true: Muestra el checkbox de «Recuérdame», que el cliente puede marcar (o no) para guardar el token de la tarjeta.
– false: No muestra el checkbox de «Recuérdame». Sólo guardará el token de la tarjeta si «forceTokenRequest» es true.
OOculta o muestra el checkbox de «Recuérdame», para que el cliente elija si guardar o no el token de la tarjeta. true
forceTokenRequestBooleano
– true
– false
OIndica si guardar o no el token de la tarjeta del cliente. Si no quieres guardar la tarjeta, usa «false». Si este valor es «true» pero el cliente no marca el check de Recuérdame, no se guardará el token. false

Renderizado del cajero en el frontal

Una vez obtenido el «authToken» podrás renderizar el cajero en el frontal. Recuerda que no es posible renderizar el cajero en un localhost y debes autorizar el dominio desde el panel de control de Addon Payments. Puedes consultar más opciones de renderizado en nuestra guía ampliada sobre JavaScript.

A continuación, te ofrecemos un ejemplo simple que muestra como renderizar el método de pago por tarjeta:

				
					<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS render cashier</title>
    <style>
        #render-cashier {
            width: 350px;
            margin-top: 100px;
            border: 1px solid #ccc;
            padding: 20px;
            text-align: center;
        }
    </style>
</head>
<body>
    <div id="render-cashier"></div>
    <script src="https://epgjs-rendercashier-stg.addonpayments.com/js/public/epgjs-4.0.0-min.js"></script>
    <script>
        var authtoken = "bdae356b-0236-47db-bbea-24de03168195"; // Add here your authToken
        function prePayCallback(prepayData) {
            // Show prepayToken This is just for example purposes only and should not be shown to your customer
            alert(JSON.stringify(prepayData, null, 2));
        }
        function displayingMessageOnButtonClick() {
            EPGJS_COMM.setEpgBaseUrl('https://epgjs-web-stg.addonpayments.com/');
            EPGJS.renderIntegratedCashier(authtoken, 'render-cashier', 'creditcards');
            EPGJS_COMM.setMerchantPrePayCallback(prePayCallback);
        }
        window.onload = displayingMessageOnButtonClick;
    </script>
</body>
</html>
				
			

En este código de ejemplo hay 3 funciones obligatorias para el correcto funcionamiento del cajero de JavaScript. Estas son: 

1. EPGJS_COMM.setEpgBaseUrl(‘URL base’): Establece la URL a la cual el formulario enviará los datos del cliente. Cambia según el entorno donde estés operando. Puedes ver las URLs en esta sección.

2. EPGJS.renderIntegratedCashier: Es la función de renderizado del cajero. Establece cómo se verá el mismo. En este ejemplo, el cajero renderiza sólo tarjetas de crédito. Si quieres cargar todas las soluciones de pago que tengas disponibles, borra ‘creditcards’ de «EPGJS.renderIntegratedCashier». Quedaría así:

EPGJS.renderIntegratedCashier(authtoken, 'render-cashier');

3. EPGJS_COMM.setMerchantPrePayCallback(función recepción): Establece la captura de la respuesta, que debemos crear previamente. 

Esto te permitirá renderizar el cajero en el div del frontal para que el cliente pueda proceder con el pago, como ves en la imagen inferior. Cuando el cliente proceda con el botón de pago, Addon Payments te devolverá un objeto con el «prepayToken, lo que te permitirá enviar la petición de pago. 

Si el cliente introduce los datos de una tarjeta o cuenta, tu plataforma de comercio electrónico recibe un objeto de JS con la referencia de preparación del pago (prepayToken). Este es un ejemplo de «prePayToken»:

"prePayToken": "8862abf9-ca5a-49da-9527-1e3163e64954"

Tu plataforma debe almacenar este código para continuar con el siguiente paso. Las referencias de autorización recibidas tienen las siguientes características:

  • Validez de 30 minutos.
  • Puede ser usada una única vez para autorizar el pago.

Parámetros requeridos y opcionales charge JavaScript

Estos son los parámetros comunes para las distintas operativas del charge JavaScript en pagos con tarjeta: autorización, pre-autorización, validación de tarjeta, almacenar tarjetas y dar de un alta plan de suscripción.

Además, recomendamos que visites nuestra sección 3DSecure con el objetivo de añadir campos adicionales al proceso de pago. Estos datos opcionales enriquecen la solicitud de pago y pueden facilitar el proceso de autenticación.

El tipo indica si el elemento es Requerido (R) u Opcional (O).

CampoFormatoTipoDescripciónEjemplo
prepayTokenAlfanumérico
UUID
RSe envía en la cabecera de la petición.
AP devuelve esta referencia después de que el cliente introduzca sus datos en el formulario de pago de JS. Es la referencia que enlaza con los datos de la tarjeta o cuenta del cliente para integración JavaScript.
97fe3726-adb1-4e24-9fb8-92593a75ae74
merchantIdNumérico entero
4~7 dígitos
REs el indicador de tu comercio en la plataforma de AP. Es facilitado por Soporte en el correo de bienvenida, es común para los dos entornos14983
productIdNumérico entero
6~11 dígitos
RIdentificador del producto creado en tu comercio en AP. Es facilitado en el correo de bienvenida.149830
apiVersionNumérico
Valor aceptado:
5
RVersión del API de la pasarela de Addon Payments por la que debe procesarse la transacción.5
paymentSolutionAlfanumérico
Máx. 45 caracteres
RNombre de la solución de pago por la cual debe procesarse la transacción. IMPORTANTE: Si quieres que se muestren todas las soluciones de pago que tengas disponibles, NO envíes este parámetro. creditcards
operationTypeAlfanumérico
Máx. 45 caracteres
REspecifica el tipo de operación a realizar. Valores admitidos:
– debit (por defecto): Transacción de pago. Es decir, el efectivo viaja desde la cuenta del cliente al comercio.
– credit: Transacción de ingreso en cuenta del cliente. Es decir, el efectivo viaja desde el comercio hasta la cuenta del cliente. Por ejemplo, en el pago de un premio. No confundir con las devoluciones. Estas tienen su propio tipo de transacción.
debit
merchantTransactionIdAlfanumérico
Máx. 45 caracteres
REs el identificador único de la transacción del comercio. Sirve para que tu plataforma enlace las notificaciones recibidas con el pedido del cliente.pedido_91684
amountNumérico decimal
0~1000000.00
RImporte de la transacción. Si el importe tiene decimales, el separador es un punto (.). No se puede incluir el separador en los millares127.5
currencyAlfabético
3 caracteres
ISO-4217.3
RDivisa de la transacciónEUR
countryAlfabético
2 caracteres
ISO 3166-1 alfa-2
RPaís desde el que se envía la transacciónES
customerIdAlfanumérico
Máx. 80 caracteres
RId. del cliente en tu plataforma de comercio electrónico.
– Para guardar la tarjeta del cliente, usa el parámetro «forceTokenRequest«, con valor «true» para guardar el token y «false» para no hacerlo.
– Para que el cliente vea o no la opción de recordar su tarjeta, usa el parámetro «showRememberMe«, con valor «true» para mostrarle y «false» para ocultarlo.
A34623
statusURLAlfanumérico (caracteres permitidos en URL)
Máx. 2048 caracteres
RURL de tu plataforma de comercio electrónico donde AP enviará la notificación con el estado de la transacción. Si se envía en la petición, tendrá prioridad sobre la configurada en el Portal BackOffice de Addon Payments. Si no se envía en la petición, se redirigirá al cliente a la URL configurada en el módulo de administración.https://www.example.com/status
successURLAlfanumérico (caracteres permitidos en URL)
Máx. 2048 caracteres
RURL de tu plataforma a la que se redirecciona al cliente si la transacción es autorizada. Si se envía en la petición, tendrá prioridad sobre la configurada en el Portal BackOffice de Addon Payments. Si no se envía en la petición, se redirigirá al cliente a la URL configurada en el módulo de administración.https://www.example.com/success
errorURLAlfanumérico (caracteres permitidos en URL)
Máx. 2048 caracteres
RURL de tu plataforma a la que se redirecciona al cliente si la transacción es denegada. Si se envía en la petición, tendrá prioridad sobre la configurada en el Portal BackOffice de Addon Payments. Si no se envía en la petición, se redirigirá al cliente a la URL configurada en el módulo de administración.https://www.example.com/error
cancelURLAlfanumérico (caracteres permitidos en URL)
Máx. 2048 caracteres
RURL de tu plataforma a la que se redirecciona el cliente si cancela la transacción durante el proceso de pago. Si se envía en la petición, tendrá prioridad sobre la configurada en el Portal BackOffice de Addon Payments. Si no se envía en la petición, se redirigirá al cliente a la URL configurada en el módulo de administración.https://www.example.com/cancel
awaitingURLAlfanumérico (caracteres permitidos en URL)
Máx. 2048 caracteres
RURL de tu plataforma a la que se redirecciona el cliente si la transacción está pendiente de procesar. Si se envía en la petición, tendrá prioridad sobre la configurada en el Portal BackOffice de Addon Payments. Si no se envía en la petición, se redirigirá al cliente a la URL configurada en el módulo de administración.https://www.example.com/awaiting
customerEmailAlfanumérico
Máximo 100 caracteres
R*Dirección de correo electrónico del titular de la tarjeta.

Comercios europeos: requerido para SCA.
*Se debe enviar el customerEmail o telephone, sólo se requiere 1 de estos campos.
correo@ejemplo.com
telephoneAlfanumérico
Máximo 45 caracteres
R*Prefijo internacional + Número de teléfono del titular de la tarjeta. Puede ser el teléfono móvil, del trabajo o de casa.

Comercios europeos: requerido para SCA.
*Se debe enviar el customerEmail o telephone, sólo se requiere 1 de estos campos.
34600600600
languageCódigo ISO 639-1Oidioma para mostrar en la pasarela de pago al cliente. Actualmente, sólo está disponible en castellano (ES) y en inglés (EN).ES
referenceIdAlfanumérico
12 caracteres
OReferencia variable para comercios que necesiten de archivos de conciliación FB500.SM1258X795WW
merchantParamsClave1:Valor1;Clave2:Valor2;ClaveN:ValorN
Máx. 500 caracteres
OParámetros que se envían para modificar la configuración del comercio o el procesamiento de una trasacción.
Se reciben de vuelta dentro de la etiqueta
No admite caracteres especiales
nombre:pablo;apellido:ferrer;idcliente:12345
printReceiptBooleanoOMuestra al cliente final un recibo en el proceso de redirección tipo opcional.True
autoCaptureBooleanoOEstablece si la transacción será una autorización o pre autorización. En el último caso, requiere una captura o liberación posterior por parte del comercio.True
typeAlfanumérico:
MOTO
ECOM
OEstablece si la petición de pago es tipo comercio electrónico o MO/TO. Si no se incluye, es tipo comercio electrónico por defecto.ECOM
descriptionAlfanumérico
Máx. 1000 caracteres
ODescripción de la transacción.Descripción del producto
cityAlfanumérico
Máximo 100 caracteres
OCiudad del titular de la tarjeta.

Comercios europeos: Opcional para SCA
Barcelona
chCountry2 caracteres
ISO 3166-1 alfa-2
OCódigo ISO 3166-1 alfa-2 del país del titular de la tarjeta.

Comercios europeos: Opcional para SCA
ES
addressLine1Alfanumérico
Máximo 250 caracteres
OPrimera línea de la dirección del titular de la tarjeta

Comercios europeos: Opcional para SCA
Calle Romero 123
addressLine2Alfanumérico
Máximo 50 caracteres
OCódigo postal del titular de la tarjeta

Comercios europeos: Opcional para SCA
08001
stateAlfanumérico
Máximo 45 caracteres
OProvincia o estado del titular de la tarjeta

Comercios europeos: Opcional para SCA
Barcelona

Pago con tarjeta

Tu plataforma tiene que enviar varios parámetros y sus respectivos valores para poder generar una petición válida que enviar a AP. En cada solicitud y caso de uso tendrás una solicitud de ejemplo, los parámetros obligatorios y opcionales y un ejemplo de respuesta. 

Autorización

A continuación, vamos a conocer los pasos necesarios para procesar un pago con tarjeta mediante JavaScript. 

Obtención del authToken y renderizado del cajero frontal 

Puedes conocer cómo obtener el authToken y cómo renderizar el cajero frontal en las secciones anteriores. 

Charge

Con la obtención del «prepayToken», podrás enviar la petición de pago/charge. A continuación, te mostramos un ejemplo de solicitud y respuesta con los campos básicos.

Además, recomendamos que visites nuestra sección 3DSecure con el objetivo de añadir campos adicionales al proceso de pago. Estos datos opcionales enriquecen la solicitud de pago y pueden facilitar el proceso de autenticación.

Este es un ejemplo de petición de autorización, el primero como cadena y el segundo como cURL. 

				
					{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "apiVersion": "5",
    "amount": "10.00",
    "currency": "EUR",
    "country": "ES",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https:// micomercio.com/url-ok.php",
    "errorURL": "https:// micomercio.com/url-ko.php",
    "cancelURL": "https:// micomercio.com/url-cancelacion.php",
    "awaitingURL": "https:// micomercio.com/url-espera.php",
    "operationType": "debit"
}
				
			
				
					curl --location --request POST 'https://epgjs-mep-stg.addonpayments.com/charge/v2' \
--header 'Content-Type: application/json' \
--header 'prepayToken: 8862abf9-ca5a-49da-9527-1e3163e64954' \
--data-raw '{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "apiVersion": "5",
    "amount": "10.00",
    "currency": "EUR",
    "country": "ES",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https://micomercio.com/url-ok.php",
    "errorURL": "https://micomercio.com/url-ko.php",
    "cancelURL": "https://micomercio.com/url-cancelacion.php"
}'
				
			

Para conocer más sobre cuando redireccionar al cliente, visita la sección Redirección del cliente.

Es posible que tengas que redirigir al cliente a otra URL para que complete el pago. Por ejemplo, en pagos con tarjeta para que el cliente autentique la titularidad de su cuenta. 

Este es un ejemplo de solicitud de redirección al ACS del banco emisor para realizar la autenticación, la URL a la que redirigir se indica en el campo «redirectionResponse»

				
					<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<payfrex-response operation-size=\"2\">
	<message>WorkFlow has finished successfully, for transaction Id: 7711867</message>
	<operations>
		<operation sorted-order=\"1\">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Exemptions has been removed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7711867</payFrexTransactionId>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>cbf23a6a_70a8_402d_a27d_c7ae2e61e121</uuid>
			</respCode>
			<service>TRA</service>
			<status>SUCCESS</status>
		</operation>
		<operation sorted-order=\"2\">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Starting 3DSecure 2.0 process.</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<originalPayFrexTransactionId>7711867</originalPayFrexTransactionId>
			<payFrexTransactionId>1004146</payFrexTransactionId>
			<paymentDetails>
				<cardHolderName>Pruebas Visa Frictioless</cardHolderName>
				<extraDetails>
					<entry>
						<key>threeDSMethodData</key>
						<value>eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImVlMDRiZjZjLTk0NWItNDg0ZC1hMzE0LTk1NjhjYTk1NmY4YiIsICJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjogImh0dHBzOi8vY2hlY2tvdXQuc3RnLWV1LXdlc3QzLmVwZ2ludC5jb20vRVBHQ2hlY2tvdXQvY2FsbGJhY2svZ2F0aGVyRGV2aWNlTm90aWZpY2F0aW9uL3BheXNvbC8zZHN2Mi8xMDA0MTQ2In0=</value>
					</entry>
					<entry>
						<key>threeDSv2Token</key>
						<value>ee04bf6c-945b-484d-a314-9568ca956f8b</value>
					</entry>
				</extraDetails>
			</paymentDetails>
			<redirectionResponse>redirect:https://checkout.stg-eu-west3.epgint.com/EPGCheckout/rest/online/3dsv2/redirect?action=gatherdevice&amp;params=eyJ0aHJlZURTdjJUb2tlbiI6ImVlMDRiZjZjLTk0NWItNDg0ZC1hMzE0LTk1NjhjYTk1NmY4YiIsInRocmVlRFNNZXRob2RVcmwiOiJodHRwczovL21vY2stZHMuc3RnLWV1LXdlc3QzLmVwZ2ludC5jb20vcHVibGljL21ldGhvZC1kYXRhLyIsInRocmVlRFNNZXRob2REYXRhIjoiZXlKMGFISmxaVVJUVTJWeWRtVnlWSEpoYm5OSlJDSTZJbVZsTURSaVpqWmpMVGswTldJdE5EZzBaQzFoTXpFMExUazFOamhqWVRrMU5tWTRZaUlzSUNKMGFISmxaVVJUVFdWMGFHOWtUbTkwYVdacFkyRjBhVzl1VlZKTUlqb2dJbWgwZEhCek9pOHZZMmhsWTJ0dmRYUXVjM1JuTFdWMUxYZGxjM1F6TG1Wd1oybHVkQzVqYjIwdlJWQkhRMmhsWTJ0dmRYUXZZMkZzYkdKaFkyc3ZaMkYwYUdWeVJHVjJhV05sVG05MGFXWnBZMkYwYVc5dUwzQmhlWE52YkM4elpITjJNaTh4TURBME1UUTJJbjA9IiwiYnJhbmQiOiJWSVNBIiwicmVzdW1lQXV0aGVudGljYXRpb24iOiJodHRwczovL2NoZWNrb3V0LnN0Zy1ldS13ZXN0My5lcGdpbnQuY29tL0VQR0NoZWNrb3V0L3JldHVybnVybC9mcmljdGlvbmxlc3MvcGF5c29sLzNkc3YyLzEwMDQxNDY/dGhyZWVEU3YyVG9rZW49ZWUwNGJmNmMtOTQ1Yi00ODRkLWEzMTQtOTU2OGNhOTU2ZjhiIiwicmVuZGVyQ2FzaGllckxvY2F0aW9uIjoiaHR0cHM6Ly9lcGdqcy1yZW5kZXJjYXNoaWVyLXN0Zy5lYXN5cGF5bWVudGdhdGV3YXkuY29tIiwiY2hhbGxlbmdlV2luZG93c1NpemUiOiIwNSJ9</redirectionResponse>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>cbf23a6a_70a8_402d_a27d_c7ae2e61e121</uuid>
			</respCode>
			<service>3DSv2</service>
			<status>REDIRECTED</status>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>31380</id>
		<name>debit creditcards (TRA)</name>
		<version>0</version>
	</workFlowResponse>
</payfrex-response>
				
			

Parámetros de la solicitud de charge

Los parámetros requeridos/obligatorios y opcionales para el charge de autorización de JavaScript se encuentran en esta tabla.

Respuesta

 

Visita nuestra sección de Recepción y gestión de las notificaciones para conocer su estructura.

Una vez finalizado el pago por parte del cliente, será redireccionado a la URL success o error en función del resultado de la transacción. Por otro lado, notificaremos el resultado del pago a la statusURL del comercio.

				
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payfrex-response operation-size="3">
	<message>WorkFlow has finished successfully, for transaction Id: 7711867</message>
	<operations>
		<operation sorted-order="1">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Exemptions has been removed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7711867</payFrexTransactionId>
			<service>TRA</service>
			<status>SUCCESS</status>
		</operation>
		<operation sorted-order="2">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>3dsv2 - processed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7711867</payFrexTransactionId>
			<paymentDetails>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<extraDetails/>
			</paymentDetails>
			<service>3DSv2</service>
			<status>SUCCESS3DS</status>
		</operation>
		<operation sorted-order="3">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<details>{"resultCode":"00000","resultDescription":"OK","values":{"rfTransactionCurrency":"EUR","rfRTS":"355534686 790190 845433 231030160823","rfContactlessLogo":"false","rfOperationType":"Settle","rfAuthMode":"On","rfDataEntryMode":"Manual","rfCardHolderVerificationMode":"No","rfFuc":"355534686","rfTerminalID":"00000500","rfProcessor":"Redsys","rfMerchantName":"Pruebas Addon 25","rfMerchantCity":"BARCELONA","rfMerchantPostalCode":"08014","rfMerchantAddress":"GRAN VIA DE LES CORTS CATALANE, 159 PLANTA 7","rfMaskedPan":"************2227","rfOperationDateTime":"30/10/23 16:08:23","rfTerminalOperationNumber":"1197","rfAuthNumber":"150515","rfTransactionAmountCurrency":"10,00 EUR","rfProcessorMessage":"","rfPrintSignatureBox":"false","rfCardPresent":"true","rfReferenceId":"1197","posTransactionToken":"{\"pucIdMsg\":\"1200\",\"pucP3ProcessCode\":\"000000\",\"pucP4OriginalAmount\":\"000000001000\",\"pucP11TransactionNumber\":\"845433\",\"pucP12LocalDateTime\":\"231030160823\",\"pucP22ServicePointData\":\"1U00506K3000\",\"pucP38AuthNumber\":\"150515\",\"pucP39ActionCode\":\"000\",\"pucP53SecurityControlInfo\":\"0102000001000000\",\"pinpadId\":\"1440\",\"pinpadAcquirerId\":\"00000500\",\"pinpadManufacturer\":null,\"pinpadModel\":null,\"pinpadSerialNumber\":null,\"pinpadSoftwareName\":null,\"pinpadSoftwareVersion\":null,\"pinpadKernelEmv\":null,\"pinpadVccStrip\":null,\"pinpadVerPup\":null,\"pinpadPciStage\":null,\"pinpadVerEmvParams\":null,\"pinpadEmvType\":null,\"pinpadCapabilities\":null,\"pinpadLanguage\":null,\"transactionType\":\"O\",\"transactionContactless\":\"0\",\"transactionDcc\":\"0\",\"transactionDccComission\":null,\"transactionDccExchangeRate\":null,\"transactionDccMarkUp\":null,\"transactionDccEntity\":null,\"transactionDccBceExchangeRate\":null,\"transactionDccBceMarkUp\":null,\"transactionPanSequenceNumber\":null,\"transactionTerminalOperationNumber\":\"1197\",\"transactionResponseCode\":null,\"transactionCurrency\":\"978\",\"transactionFuc\":\"355534686\",\"cardMaskedPan\":\"************2227\",\"cardAid\":null,\"cardDdfName\":null,\"cardApplicationLabel\":null,\"cardCypherData\":null}","OperationResult":"000"},"threeDsProtocolVersion":"2.2.0"}</details>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Success 'Settle' operation</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<payFrexTransactionId>7711867</payFrexTransactionId>
			<paySolTransactionId>355534686 790190 845433 231030160823</paySolTransactionId>
			<paymentDetails>
				<cardHolderName>Pruebas Visa Frictioless</cardHolderName>
				<cardNumber>490727****2227</cardNumber>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<cardType>VISA/CREDIT</cardType>
				<expDate>1234</expDate>
				<extraDetails>
					<entry>
						<key>cardCategory</key>
						<value>Not Available</value>
					</entry>
					<entry>
						<key>rememberMe</key>
						<value>true</value>
					</entry>
				</extraDetails>
				<issuerBank>SERVIRED MASTERCARD INTERNACIONAL</issuerBank>
				<issuerCountry>ES</issuerCountry>
			</paymentDetails>
			<paymentMethod>19900</paymentMethod>
			<paymentSolution>caixapucpuce</paymentSolution>
			<status>SUCCESS</status>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>31380</id>
		<name>debit creditcards (TRA)</name>
		<version>0</version>
	</workFlowResponse>
</payfrex-response>
				
			

Pre-autorización

Las pre-autorizaciones son un método de pago en 2 fases. Después de que el cliente haya autorizado la transacción, el dinero correspondiente se aparta temporalmente de su cuenta bancaria o del saldo de su tarjeta. El comercio tiene un plazo máximo de 30 días para confirmar o rechazar esta pre-autorización. Sin embargo, no se asegura que el importe retenido se liquide después de 7 días. Es importante destacar que el comercio no recibirá los fondos de la pre-autorización en su cuenta hasta que esta sea confirmada.

Las pre-autorizaciones, si la transacción está autorizada, quedarán en status «Pending». Puedes liquidar manualmente estas transacciones desde el portal BackOffice de Addon Payments o mediante una solicitud H2H para capturar el importe.

Obtención del authToken y renderizado del cajero frontal 

Puedes conocer cómo obtener el authToken y cómo renderizar el cajero frontal en las secciones anteriores. 

Charge

Con la obtención del «prepayToken», podrás enviar la petición de pago /charge. A continuación, te mostramos un ejemplo de solicitud y respuesta con los campos básicos para una pre-autorización.

Además, recomendamos que visites nuestra sección 3DSecure con el objetivo de añadir campos adicionales al proceso de pago. Estos datos opcionales enriquecen la solicitud de pago y pueden facilitar el proceso de autenticación.

Este es un ejemplo de petición de pre-autorización, el primero como cadena y el segundo como cURL. 

				
					{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "apiVersion": "5",
    "amount": "10.00",
    "currency": "EUR",
    "country": "ES",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "autoCapture": false,
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https:// micomercio.com/url-ok.php",
    "errorURL": "https:// micomercio.com/url-ko.php",
    "cancelURL": "https:// micomercio.com/url-cancelacion.php",
    "awaitingURL": "https:// micomercio.com/url-espera.php",
    "operationType":"debit"
}
				
			
				
					curl --location --request POST 'https://epgjs-mep-stg.addonpayments.com/charge/v2' \
--header 'Content-Type: application/json' \
--header 'prepayToken: 839dabca-217d-4851-a426-ff3ccf0fa872' \
--data-raw '{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "apiVersion": "5",
    "amount": "10.00",
    "currency": "EUR",
    "country": "ES",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "autoCapture": false,
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https://micomercio.com/url-ok.php",
    "errorURL": "https://micomercio.com/url-ko.php",
    "cancelURL": "https://micomercio.com/url-cancelacion.php",
    "operationType": "debit"
}'
				
			

Para conocer más sobre cuando redireccionar al cliente, visita la sección Redirección del cliente.

Es posible que tengas que redirigir al cliente a otra URL para que complete el pago. Por ejemplo, en pagos con tarjeta para que el cliente autentique la titularidad de su cuenta. 

Este es un ejemplo de solicitud de redirección al ACS del banco emisor para realizar la autenticación, la URL a la que redirigir se indica en el campo «redirectionResponse»

				
					<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<payfrex-response operation-size=\"2\">
	<message>WorkFlow has finished successfully, for transaction Id: 7711906</message>
	<operations>
		<operation sorted-order=\"1\">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Exemptions has been removed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7711906</payFrexTransactionId>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>fc69c0fc_57c9_42f5_899b_495da1e4539d</uuid>
			</respCode>
			<service>TRA</service>
			<status>SUCCESS</status>
		</operation>
		<operation sorted-order=\"2\">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Starting 3DSecure 2.0 process.</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<originalPayFrexTransactionId>7711906</originalPayFrexTransactionId>
			<payFrexTransactionId>1004158</payFrexTransactionId>
			<paymentDetails>
				<cardHolderName>Pruebas Visa Frictioless</cardHolderName>
				<extraDetails>
					<entry>
						<key>threeDSMethodData</key>
						<value>eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjM2MGQ3MDVmLWM0ZmUtNGU5NC1hMjg2LTcxMTBkZDA4MDQ1NCIsICJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjogImh0dHBzOi8vY2hlY2tvdXQzMy5zdGctZXUtd2VzdDMuZXBnaW50LmNvbS9FUEdDaGVja291dC9jYWxsYmFjay9nYXRoZXJEZXZpY2VOb3RpZmljYXRpb24vcGF5c29sLzNkc3YyLzEwMDQxNTgifQ==</value>
					</entry>
					<entry>
						<key>threeDSv2Token</key>
						<value>360d705f-c4fe-4e94-a286-7110dd080454</value>
					</entry>
				</extraDetails>
			</paymentDetails>
			<redirectionResponse>redirect:https://checkout33.stg-eu-west3.epgint.com/EPGCheckout/rest/online/3dsv2/redirect?action=gatherdevice&amp;params=eyJ0aHJlZURTdjJUb2tlbiI6IjM2MGQ3MDVmLWM0ZmUtNGU5NC1hMjg2LTcxMTBkZDA4MDQ1NCIsInRocmVlRFNNZXRob2RVcmwiOiJodHRwczovL21vY2stZHMuc3RnLWV1LXdlc3QzLmVwZ2ludC5jb20vcHVibGljL21ldGhvZC1kYXRhLyIsInRocmVlRFNNZXRob2REYXRhIjoiZXlKMGFISmxaVVJUVTJWeWRtVnlWSEpoYm5OSlJDSTZJak0yTUdRM01EVm1MV00wWm1VdE5HVTVOQzFoTWpnMkxUY3hNVEJrWkRBNE1EUTFOQ0lzSUNKMGFISmxaVVJUVFdWMGFHOWtUbTkwYVdacFkyRjBhVzl1VlZKTUlqb2dJbWgwZEhCek9pOHZZMmhsWTJ0dmRYUXpNeTV6ZEdjdFpYVXRkMlZ6ZERNdVpYQm5hVzUwTG1OdmJTOUZVRWREYUdWamEyOTFkQzlqWVd4c1ltRmpheTluWVhSb1pYSkVaWFpwWTJWT2IzUnBabWxqWVhScGIyNHZjR0Y1YzI5c0x6TmtjM1l5THpFd01EUXhOVGdpZlE9PSIsImJyYW5kIjoiVklTQSIsInJlc3VtZUF1dGhlbnRpY2F0aW9uIjoiaHR0cHM6Ly9jaGVja291dDMzLnN0Zy1ldS13ZXN0My5lcGdpbnQuY29tL0VQR0NoZWNrb3V0L3JldHVybnVybC9mcmljdGlvbmxlc3MvcGF5c29sLzNkc3YyLzEwMDQxNTg/dGhyZWVEU3YyVG9rZW49MzYwZDcwNWYtYzRmZS00ZTk0LWEyODYtNzExMGRkMDgwNDU0IiwicmVuZGVyQ2FzaGllckxvY2F0aW9uIjoiaHR0cHM6Ly9lcGdqcy1yZW5kZXJjYXNoaWVyLXN0Zy5lYXN5cGF5bWVudGdhdGV3YXkuY29tIiwiY2hhbGxlbmdlV2luZG93c1NpemUiOiIwNSJ9</redirectionResponse>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>fc69c0fc_57c9_42f5_899b_495da1e4539d</uuid>
			</respCode>
			<service>3DSv2</service>
			<status>REDIRECTED</status>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>31380</id>
		<name>debit creditcards (TRA)</name>
		<version>0</version>
	</workFlowResponse>
</payfrex-response>
				
			

Parámetros de la solicitud de charge

Los parámetros requeridos/obligatorios y opcionales para el charge de pre-autorización de JavaScript se encuentran en esta tabla.

Además de esos parámetros, para una pre-autorización debes incluir:

  • autoCapture: false

 

Respuesta

 

Visita nuestra sección de Recepción y gestión de las notificaciones para conocer su estructura.

Una vez finalizado el pago por parte del cliente, será redireccionado a la URL success o error en función del resultado de la transacción. Por otro lado, notificaremos el resultado del pago a la statusURL del comercio.

				
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payfrex-response operation-size="3">
	<message>WorkFlow has finished successfully, for transaction Id: 7711906</message>
	<operations>
		<operation sorted-order="1">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Invalid threeDSv2Token.</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7711906</payFrexTransactionId>
			<service>3DSv2</service>
			<status>ERROR3DS</status>
		</operation>
		<operation sorted-order="2">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>3dsv2 - processed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7711906</payFrexTransactionId>
			<paymentDetails>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<extraDetails/>
			</paymentDetails>
			<service>3DSv2</service>
			<status>SUCCESS3DS</status>
		</operation>
		<operation sorted-order="3">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<details>{"resultCode":"00000","resultDescription":"OK","values":{"rfTransactionCurrency":"EUR","rfRTS":"355534686 790190 845454 231030163255","rfContactlessLogo":"false","rfOperationType":"Auth","rfAuthMode":"On","rfDataEntryMode":"Manual","rfCardHolderVerificationMode":"No","rfFuc":"355534686","rfTerminalID":"00000500","rfProcessor":"Redsys","rfMerchantName":"Pruebas Addon 25","rfMerchantCity":"BARCELONA","rfMerchantPostalCode":"08014","rfMerchantAddress":"GRAN VIA DE LES CORTS CATALANE, 159 PLANTA 7","rfMaskedPan":"************2227","rfOperationDateTime":"30/10/23 16:32:55","rfTerminalOperationNumber":"1198","rfAuthNumber":"965487","rfTransactionAmountCurrency":"10,00 EUR","rfProcessorMessage":"","rfPrintSignatureBox":"false","rfCardPresent":"true","rfReferenceId":"1198","posTransactionToken":"{\"pucIdMsg\":\"1100\",\"pucP3ProcessCode\":\"000000\",\"pucP4OriginalAmount\":\"000000001000\",\"pucP11TransactionNumber\":\"845454\",\"pucP12LocalDateTime\":\"231030163255\",\"pucP22ServicePointData\":\"1U00506K3000\",\"pucP38AuthNumber\":\"965487\",\"pucP39ActionCode\":\"000\",\"pucP53SecurityControlInfo\":\"0102000001000000\",\"pinpadId\":\"1440\",\"pinpadAcquirerId\":\"00000500\",\"pinpadManufacturer\":null,\"pinpadModel\":null,\"pinpadSerialNumber\":null,\"pinpadSoftwareName\":null,\"pinpadSoftwareVersion\":null,\"pinpadKernelEmv\":null,\"pinpadVccStrip\":null,\"pinpadVerPup\":null,\"pinpadPciStage\":null,\"pinpadVerEmvParams\":null,\"pinpadEmvType\":null,\"pinpadCapabilities\":null,\"pinpadLanguage\":null,\"transactionType\":\"O\",\"transactionContactless\":\"0\",\"transactionDcc\":\"0\",\"transactionDccComission\":null,\"transactionDccExchangeRate\":null,\"transactionDccMarkUp\":null,\"transactionDccEntity\":null,\"transactionDccBceExchangeRate\":null,\"transactionDccBceMarkUp\":null,\"transactionPanSequenceNumber\":null,\"transactionTerminalOperationNumber\":\"1198\",\"transactionResponseCode\":null,\"transactionCurrency\":\"978\",\"transactionFuc\":\"355534686\",\"cardMaskedPan\":\"************2227\",\"cardAid\":null,\"cardDdfName\":null,\"cardApplicationLabel\":null,\"cardCypherData\":null}","OperationResult":"000"},"threeDsProtocolVersion":"2.2.0"}</details>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Success 'Auth' operation</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<payFrexTransactionId>7711906</payFrexTransactionId>
			<paySolTransactionId>355534686 790190 845454 231030163255</paySolTransactionId>
			<paymentDetails>
				<cardHolderName>Pruebas Visa Frictioless</cardHolderName>
				<cardNumber>490727****2227</cardNumber>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<cardType>VISA/CREDIT OR DEBIT</cardType>
				<expDate>1234</expDate>
				<extraDetails>
					<entry>
						<key>cardCategory</key>
						<value>Not Available</value>
					</entry>
					<entry>
						<key>rememberMe</key>
						<value>true</value>
					</entry>
				</extraDetails>
				<issuerBank>SERVIRED MASTERCARD INTERNACIONAL</issuerBank>
				<issuerCountry>ES</issuerCountry>
			</paymentDetails>
			<paymentMethod>19900</paymentMethod>
			<paymentSolution>caixapucpuce</paymentSolution>
			<status>PENDING</status>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>31380</id>
		<name>debit creditcards (TRA)</name>
		<version>0</version>
	</workFlowResponse>
</payfrex-response>
				
			

Validación de tarjeta

La validación de tarjeta consiste en una operación con importe 0, que genera un token o referencia de la tarjeta del cliente para futuras operaciones. Esta operativa también se conoce como Open To Buy (OTB). 

Normalmente, estas validaciones de tarjeta con importe 0 tienen como objetivo guardar la tarjeta del cliente para futuros pagos, en ese caso recomendamos que adicionalmente se incluyan los parámetros:

  • amount: 0
  • paymentRecurringType: newCof
  • challengeInd: 04 (recomendable para forzar la SCA de la transacción y evitar denegaciones del emisor en peticiones posteriores)

Esta operativa valida que la tarjeta está operativa en el momento de la consulta, por lo que no garantiza que los pagos posteriores sean autorizados. 

Obtención del authToken y renderizado del cajero frontal 

Puedes conocer cómo obtener el authToken y cómo renderizar el cajero frontal en las secciones anteriores. 

Charge

Con la obtención del «prepayToken», podrás enviar la petición de pago /charge. A continuación, te mostramos un ejemplo de solicitud y respuesta con los campos básicos para una validación de tarjeta.

Además, recomendamos que visites nuestra sección 3DSecure con el objetivo de añadir campos adicionales al proceso de pago. Estos datos opcionales enriquecen la solicitud de pago y pueden facilitar el proceso de autenticación.

Este es un ejemplo de petición de validación de tarjeta, el primero como cadena y el segundo como cURL.

				
					{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "apiVersion": "5",
    "amount": "0.00",
    "currency": "EUR",
    "country": "ES",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https:// micomercio.com/url-ok.php",
    "errorURL": "https:// micomercio.com/url-ko.php",
    "cancelURL": "https:// micomercio.com/url-cancelacion.php",
    "awaitingURL": "https:// micomercio.com/url-espera.php",
    "operationType":"debit"
}
				
			
				
					curl --location --request POST 'https://epgjs-mep-stg.addonpayments.com/charge/v2' \
--header 'Content-Type: application/json' \
--header 'prepayToken: 96d2fc44-0ad8-492d-96f8-b733d82eefbd' \
--data-raw '{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "apiVersion": "5",
    "amount": "0.00",
    "currency": "EUR",
    "country": "ES",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https://micomercio.com/url-ok.php",
    "errorURL": "https://micomercio.com/url-ko.php",
    "cancelURL": "https://micomercio.com/url-cancelacion.php",
    "operationType":"debit"
}'
				
			

Para conocer más sobre cuando redireccionar al cliente, visita la sección Redirección del cliente.

Es posible que tengas que redirigir al cliente a otra URL para que complete el pago. Por ejemplo, en pagos con tarjeta para que el cliente autentique la titularidad de su cuenta. 

Este es un ejemplo de solicitud de redirección al ACS del banco emisor para realizar la autenticación, la URL a la que redirigir se indica en el campo «redirectionResponse»

				
					<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<payfrex-response operation-size=\"2\">
	<message>WorkFlow has finished successfully, for transaction Id: 7711936</message>
	<operations>
		<operation sorted-order=\"1\">
			<amount>0.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Exemptions has been removed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7711936</payFrexTransactionId>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>cbf23a6a_70a8_402d_a27d_c7ae2e61e121</uuid>
			</respCode>
			<service>TRA</service>
			<status>SUCCESS</status>
		</operation>
		<operation sorted-order=\"2\">
			<amount>0.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Starting 3DSecure 2.0 process.</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<originalPayFrexTransactionId>7711936</originalPayFrexTransactionId>
			<payFrexTransactionId>1004167</payFrexTransactionId>
			<paymentDetails>
				<cardHolderName>Pruebas Visa Frictioless</cardHolderName>
				<extraDetails>
					<entry>
						<key>threeDSMethodData</key>
						<value>eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjJjMDk3OWQyLWQyNTctNDVhMS05YmI0LTk2ODAyMmVlYjZkNyIsICJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjogImh0dHBzOi8vY2hlY2tvdXQuc3RnLWV1LXdlc3QzLmVwZ2ludC5jb20vRVBHQ2hlY2tvdXQvY2FsbGJhY2svZ2F0aGVyRGV2aWNlTm90aWZpY2F0aW9uL3BheXNvbC8zZHN2Mi8xMDA0MTY3In0=</value>
					</entry>
					<entry>
						<key>threeDSv2Token</key>
						<value>2c0979d2-d257-45a1-9bb4-968022eeb6d7</value>
					</entry>
				</extraDetails>
			</paymentDetails>
			<redirectionResponse>redirect:https://checkout.stg-eu-west3.epgint.com/EPGCheckout/rest/online/3dsv2/redirect?action=gatherdevice&amp;params=eyJ0aHJlZURTdjJUb2tlbiI6IjJjMDk3OWQyLWQyNTctNDVhMS05YmI0LTk2ODAyMmVlYjZkNyIsInRocmVlRFNNZXRob2RVcmwiOiJodHRwczovL21vY2stZHMuc3RnLWV1LXdlc3QzLmVwZ2ludC5jb20vcHVibGljL21ldGhvZC1kYXRhLyIsInRocmVlRFNNZXRob2REYXRhIjoiZXlKMGFISmxaVVJUVTJWeWRtVnlWSEpoYm5OSlJDSTZJakpqTURrM09XUXlMV1F5TlRjdE5EVmhNUzA1WW1JMExUazJPREF5TW1WbFlqWmtOeUlzSUNKMGFISmxaVVJUVFdWMGFHOWtUbTkwYVdacFkyRjBhVzl1VlZKTUlqb2dJbWgwZEhCek9pOHZZMmhsWTJ0dmRYUXVjM1JuTFdWMUxYZGxjM1F6TG1Wd1oybHVkQzVqYjIwdlJWQkhRMmhsWTJ0dmRYUXZZMkZzYkdKaFkyc3ZaMkYwYUdWeVJHVjJhV05sVG05MGFXWnBZMkYwYVc5dUwzQmhlWE52YkM4elpITjJNaTh4TURBME1UWTNJbjA9IiwiYnJhbmQiOiJWSVNBIiwicmVzdW1lQXV0aGVudGljYXRpb24iOiJodHRwczovL2NoZWNrb3V0LnN0Zy1ldS13ZXN0My5lcGdpbnQuY29tL0VQR0NoZWNrb3V0L3JldHVybnVybC9mcmljdGlvbmxlc3MvcGF5c29sLzNkc3YyLzEwMDQxNjc/dGhyZWVEU3YyVG9rZW49MmMwOTc5ZDItZDI1Ny00NWExLTliYjQtOTY4MDIyZWViNmQ3IiwicmVuZGVyQ2FzaGllckxvY2F0aW9uIjoiaHR0cHM6Ly9lcGdqcy1yZW5kZXJjYXNoaWVyLXN0Zy5lYXN5cGF5bWVudGdhdGV3YXkuY29tIiwiY2hhbGxlbmdlV2luZG93c1NpemUiOiIwNSJ9</redirectionResponse>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>cbf23a6a_70a8_402d_a27d_c7ae2e61e121</uuid>
			</respCode>
			<service>3DSv2</service>
			<status>REDIRECTED</status>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>31380</id>
		<name>debit creditcards (TRA)</name>
		<version>0</version>
	</workFlowResponse>
</payfrex-response>
				
			

Parámetros de la solicitud de charge

Los parámetros requeridos/obligatorios y opcionales para el charge de validación de tarjeta de JavaScript se encuentran en esta tabla.

Además de esos parámetros debes incluir los de la siguiente tabla. El tipo indica si el elemento es Requerido (R) u Opcional (O):

CampoFormatoTipoDescripciónEjemplo
amountNumérico decimal
0~1000000.00
RImporte de la transacción. Si el importe tiene decimales, el separador es un punto (.). No se puede incluir el separador en los millares. En validaciones de tarjeta, ha de ser «0». 0
paymentRecurringType– newCof: Pagos puntuales, sin importe ni intervalo de tiempo fijo.
– newSubscription: Pago recurrente con importe e intervalo de tiempo definido.
– newInstallment: Pago aplazado limitado a una compra individual con importe e intervalo de tiempo definido.
OTipo de pago recurrente o sucesivo. Indica si la transacción C.O.F. es inicial o sucesiva, así como el motivo u objetivo del pago.newCof
challengeIndValores aceptados:
– 01: sin preferencia (valor por defecto si no se envía este parámetro)
– 02: evitar challenge
– 03: requerir challenge (preferencia del comercio)
– 04: requerir challenge (obligatorio)
– 05: evitar challenge (realizado análisis de riesgo de transacción)
– 06: evitar challenge (sólo en compartir datos)
– 07: evitar challenge (SCA ya realizada)
– 08: evitar challenge (utiliza exención de lista blanca)
– 09: evitar challenge (solicitar lista blanca)
OIndica la preferencia marcada por el comercio ante un proceso de autenticación. El emisor puede modificar la preferencia especificada en este campo.04

Respuesta

Visita nuestra sección de Recepción y gestión de las notificaciones para conocer su estructura.

Una vez finalizado el pago por parte del cliente, será redireccionado a la URL success o error en función del resultado de la transacción. Por otro lado, notificaremos el resultado del pago a la statusURL del comercio.

				
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payfrex-response operation-size="3">
	<message>WorkFlow has finished successfully, for transaction Id: 7711936</message>
	<operations>
		<operation sorted-order="1">
			<amount>0.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Invalid threeDSv2Token.</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7711936</payFrexTransactionId>
			<service>3DSv2</service>
			<status>ERROR3DS</status>
		</operation>
		<operation sorted-order="2">
			<amount>0.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>3dsv2 - processed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7711936</payFrexTransactionId>
			<paymentDetails>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<extraDetails/>
			</paymentDetails>
			<service>3DSv2</service>
			<status>SUCCESS3DS</status>
		</operation>
		<operation sorted-order="3">
			<amount>0.00</amount>
			<currency>EUR</currency>
			<details>{"resultCode":"00000","resultDescription":"OK","values":{"rfTransactionCurrency":"EUR","rfRTS":"355534686 790190 845464 231030164630","rfContactlessLogo":"false","rfOperationType":"Auth","rfAuthMode":"On","rfDataEntryMode":"Manual","rfCardHolderVerificationMode":"No","rfFuc":"355534686","rfTerminalID":"00000500","rfProcessor":"Redsys","rfMerchantName":"Pruebas Addon 25","rfMerchantCity":"BARCELONA","rfMerchantPostalCode":"08014","rfMerchantAddress":"GRAN VIA DE LES CORTS CATALANE, 159 PLANTA 7","rfMaskedPan":"************2227","rfOperationDateTime":"30/10/23 16:46:30","rfTerminalOperationNumber":"1199","rfAuthNumber":"313990","rfTransactionAmountCurrency":"0,00 EUR","rfProcessorMessage":"","rfPrintSignatureBox":"false","rfCardPresent":"true","rfReferenceId":"1199","posTransactionToken":"{\"pucIdMsg\":\"1100\",\"pucP3ProcessCode\":\"000000\",\"pucP4OriginalAmount\":\"000000000000\",\"pucP11TransactionNumber\":\"845464\",\"pucP12LocalDateTime\":\"231030164630\",\"pucP22ServicePointData\":\"1U00506K3000\",\"pucP38AuthNumber\":\"313990\",\"pucP39ActionCode\":\"085\",\"pucP53SecurityControlInfo\":\"0102000001000000\",\"pinpadId\":\"1440\",\"pinpadAcquirerId\":\"00000500\",\"pinpadManufacturer\":null,\"pinpadModel\":null,\"pinpadSerialNumber\":null,\"pinpadSoftwareName\":null,\"pinpadSoftwareVersion\":null,\"pinpadKernelEmv\":null,\"pinpadVccStrip\":null,\"pinpadVerPup\":null,\"pinpadPciStage\":null,\"pinpadVerEmvParams\":null,\"pinpadEmvType\":null,\"pinpadCapabilities\":null,\"pinpadLanguage\":null,\"transactionType\":\"O\",\"transactionContactless\":\"0\",\"transactionDcc\":\"0\",\"transactionDccComission\":null,\"transactionDccExchangeRate\":null,\"transactionDccMarkUp\":null,\"transactionDccEntity\":null,\"transactionDccBceExchangeRate\":null,\"transactionDccBceMarkUp\":null,\"transactionPanSequenceNumber\":null,\"transactionTerminalOperationNumber\":\"1199\",\"transactionResponseCode\":null,\"transactionCurrency\":\"978\",\"transactionFuc\":\"355534686\",\"cardMaskedPan\":\"************2227\",\"cardAid\":null,\"cardDdfName\":null,\"cardApplicationLabel\":null,\"cardCypherData\":null}","OperationResult":"000"},"threeDsProtocolVersion":"2.2.0"}</details>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Success 'Auth' operation</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<payFrexTransactionId>7711936</payFrexTransactionId>
			<paySolTransactionId>355534686 790190 845464 231030164630</paySolTransactionId>
			<paymentDetails>
				<cardHolderName>Pruebas Visa Frictioless</cardHolderName>
				<cardNumber>490727****2227</cardNumber>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<cardType>VISA/CREDIT</cardType>
				<expDate>1234</expDate>
				<extraDetails>
					<entry>
						<key>cardCategory</key>
						<value>Not Available</value>
					</entry>
					<entry>
						<key>rememberMe</key>
						<value>true</value>
					</entry>
				</extraDetails>
				<issuerBank>SERVIRED MASTERCARD INTERNACIONAL</issuerBank>
				<issuerCountry>ES</issuerCountry>
			</paymentDetails>
			<paymentMethod>19900</paymentMethod>
			<paymentSolution>caixapucpuce</paymentSolution>
			<status>SUCCESS</status>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>31380</id>
		<name>debit creditcards (TRA)</name>
		<version>0</version>
	</workFlowResponse>
</payfrex-response>
				
			

Guardado de tarjetas

En Addon Payments puedes guardar tarjetas mediante la generación de referencias o tokenización. Esta operativa tiene varios casos de uso, que veremos a continuación.

Almacenamiento de tarjetas

El guardado de tarjetas se controla según los parámetros enviados en la petición del authToken. Si el cliente finaliza la transacción con éxito obtendrás el «cardNumberToken», que es el token de la tarjeta del cliente. Este campo está directamente relacionado con el «customerId» enviado en la solicitud de pago. Además, ten en cuenta que un «customerId» puede tener varios tokens de tarjetas asociados.

Casos de uso y parámetros 

En la siguiente tabla tienes los distintos casos de uso del guardado de tarjetas junto con los parámetros necesarios. Estos parámetros son opcionales: 

ObjetivoParámetroTipoValorDescripción
Guardar la tarjetaforceTokenRequestBooleanotrueSi fuerzas el guardado del token recibirás el token de la tarjeta y esta se guardará para usos posteriores. Debes informar al cliente de que almacenarás información de su tarjeta. Nota: Aunque fuerces el guardado de token, si muestras las casilla de «Recuérdame» y el cliente NO la marca, no se guardará el token. Para forzar el guardado del token, no envíes el parámetro «showRememberMe» o envíalo a «false».
No guardar tarjetashowRememberMeBooleanofalseSe ocultará el checkbox en nuestro formulario que permite elegir al cliente guardar o no la tarjeta. No tendrás el «cardNumberToken» en la respuesta y no aparecerá cumplimentada en pagos subsiguientes del mismo cliente (customerId). Nota: Para asegurarte de que NO se guarda, envía adicionalmente «forceTokenRequest=false», de esta forma, aunque se muestre y se marque la casilla «Recúerdame», no se guardará el token.
Permitir guardar tarjeta al clienteshowRememberMeBooleanotrueMostrará el check de guardado de tarjeta «Recuérdame». Si el cliente elige guardar la tarjeta y la transacción se autoriza, se guardará para este customerId y obtendrás el token en la respuesta. Si el cliente no marca «Recuérdame», no se guardará el token de la tarjeta.
No enviar ninguno de los parámetros anterioresN/AN/AN/ASi no se envía ninguno de los parámetros anteriores, se mostrará el check de guardado de la tarjeta «Recuérdame». Si el cliente lo marca, se guardará la tarjeta para usos posteriores. Si el cliente no lo marca, se generará el token pero no lo podrás usar para pagos posteriores. Nota: En la notificación se recibirá el «rememberMe» con valor «false», de esta forma sabrás que no se puede usar ese token.

Obtención del authToken

El primer paso es obtener el «authToken» que nos permitirá renderizar el cajero. Se debe mandar una petición con los datos que mostramos a continuación, en este caso, se ha añadido «showRememberMe:true» para permitir al cliente almacenar su tarjeta.

				
					{
    "merchantId":"12345",
    "merchantKey":"356a8a53-b188-404d-b6c1-5bd44f48066a",
    "productId":"123450001",
    "currency":"EUR",
    "country":"ES",
    "customerId":"000001",
    "showRememberMe":true
}
				
			
				
					curl --location --request POST 'https://epgjs-mep-stg.addonpayments.com/auth' \
--header 'Content-Type: application/json' \
--data-raw '{
    "merchantId":"12345",
    "merchantKey":"356a8a53-b188-404d-b6c1-5bd44f48066a",
    "productId":"123450001",
    "currency":"EUR",
    "country":"ES",
    "customerId":"000001",
    "showRememberMe":true
}'
				
			

Si la petición es válida, Addon Payments te devolverá un «authToken» con el que podrás renderizar el cajero en el frontal de tu página. Si la petición no es válida, se devolverá un mensaje como el que ves en la segunda pestaña:

				
					{
    "authToken": "32041b38-fdcd-43f2-b7f6-26b5d73b28e4"
}
				
			
				
					{
    "error": true,
    "errorMessage": "Invalid merchant id or merchant key",
    "errorCode": 400
}

				
			

Tu plataforma debe almacenar este código para continuar con el siguiente paso. Las referencias de autorización recibidas tienen las siguientes características:

  • Validez de 30 minutos.
  • Puede ser usada varias veces para enlazar la pasarela de pago.

Renderizado del cajero

El siguiente paso es renderizar el cajero. Visita la sección correspondiente en esta guía. 

Charge

Con la obtención del «prepayToken», podrás enviar la petición de pago / charge. Este es un ejemplo de petición de almacenamiento de tarjeta, el primero como cadena y el segundo como cURL.

				
					{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "amount": "10.00",
    "apiVersion": "5",
    "currency": "EUR",
    "country": "ES",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https:// micomercio.com/url-ok.php",
    "errorURL": "https:// micomercio.com/url-ko.php",
    "cancelURL": "https:// micomercio.com/url-cancelacion.php"
}
				
			
				
					curl --location --request POST 'https://epgjs-mep-stg.addonpayments.com/charge/v2' \
--header 'Content-Type: application/json' \
--header 'prepayToken: 0966178f-e1f7-4d47-9a66-7a77bc8d692b' \
--data-raw '{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "amount": "10.00",
    "apiVersion": "5",
    "currency": "EUR",
    "country": "ES",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https://micomercio.com/url-ok.php",
    "errorURL": "https://micomercio.com/url-ko.php",
    "cancelURL": "https://micomercio.com/url-cancelacion.php"
}'
				
			

Este es un ejemplo de la respuesta que recibes para redirigir al cliente para realizar una autenticación:

				
					<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<payfrex-response operation-size=\"2\">
	<message>WorkFlow has finished successfully, for transaction Id: 7712092</message>
	<operations>
		<operation sorted-order=\"1\">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Exemptions has been removed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7712092</payFrexTransactionId>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>cbf23a6a_70a8_402d_a27d_c7ae2e61e121</uuid>
			</respCode>
			<service>TRA</service>
			<status>SUCCESS</status>
		</operation>
		<operation sorted-order=\"2\">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Starting 3DSecure 2.0 process.</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<originalPayFrexTransactionId>7712092</originalPayFrexTransactionId>
			<payFrexTransactionId>1004197</payFrexTransactionId>
			<paymentDetails>
				<cardHolderName>Pruebas Visa Frictioless</cardHolderName>
				<extraDetails>
					<entry>
						<key>threeDSMethodData</key>
						<value>eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImJjNzIwNzZjLTI5MzktNDQ1Zi05MzMwLTg5OWM5Nzk1Y2VjMSIsICJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjogImh0dHBzOi8vY2hlY2tvdXQuc3RnLWV1LXdlc3QzLmVwZ2ludC5jb20vRVBHQ2hlY2tvdXQvY2FsbGJhY2svZ2F0aGVyRGV2aWNlTm90aWZpY2F0aW9uL3BheXNvbC8zZHN2Mi8xMDA0MTk3In0=</value>
					</entry>
					<entry>
						<key>threeDSv2Token</key>
						<value>bc72076c-2939-445f-9330-899c9795cec1</value>
					</entry>
				</extraDetails>
			</paymentDetails>
			<redirectionResponse>redirect:https://checkout.stg-eu-west3.epgint.com/EPGCheckout/rest/online/3dsv2/redirect?action=gatherdevice&amp;params=eyJ0aHJlZURTdjJUb2tlbiI6ImJjNzIwNzZjLTI5MzktNDQ1Zi05MzMwLTg5OWM5Nzk1Y2VjMSIsInRocmVlRFNNZXRob2RVcmwiOiJodHRwczovL21vY2stZHMuc3RnLWV1LXdlc3QzLmVwZ2ludC5jb20vcHVibGljL21ldGhvZC1kYXRhLyIsInRocmVlRFNNZXRob2REYXRhIjoiZXlKMGFISmxaVVJUVTJWeWRtVnlWSEpoYm5OSlJDSTZJbUpqTnpJd056WmpMVEk1TXprdE5EUTFaaTA1TXpNd0xUZzVPV001TnprMVkyVmpNU0lzSUNKMGFISmxaVVJUVFdWMGFHOWtUbTkwYVdacFkyRjBhVzl1VlZKTUlqb2dJbWgwZEhCek9pOHZZMmhsWTJ0dmRYUXVjM1JuTFdWMUxYZGxjM1F6TG1Wd1oybHVkQzVqYjIwdlJWQkhRMmhsWTJ0dmRYUXZZMkZzYkdKaFkyc3ZaMkYwYUdWeVJHVjJhV05sVG05MGFXWnBZMkYwYVc5dUwzQmhlWE52YkM4elpITjJNaTh4TURBME1UazNJbjA9IiwiYnJhbmQiOiJWSVNBIiwicmVzdW1lQXV0aGVudGljYXRpb24iOiJodHRwczovL2NoZWNrb3V0LnN0Zy1ldS13ZXN0My5lcGdpbnQuY29tL0VQR0NoZWNrb3V0L3JldHVybnVybC9mcmljdGlvbmxlc3MvcGF5c29sLzNkc3YyLzEwMDQxOTc/dGhyZWVEU3YyVG9rZW49YmM3MjA3NmMtMjkzOS00NDVmLTkzMzAtODk5Yzk3OTVjZWMxIiwicmVuZGVyQ2FzaGllckxvY2F0aW9uIjoiaHR0cHM6Ly9lcGdqcy1yZW5kZXJjYXNoaWVyLXN0Zy5lYXN5cGF5bWVudGdhdGV3YXkuY29tIiwiY2hhbGxlbmdlV2luZG93c1NpemUiOiIwNSJ9</redirectionResponse>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>cbf23a6a_70a8_402d_a27d_c7ae2e61e121</uuid>
			</respCode>
			<service>3DSv2</service>
			<status>REDIRECTED</status>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>31380</id>
		<name>debit creditcards (TRA)</name>
		<version>0</version>
	</workFlowResponse>
</payfrex-response>
				
			

Respuesta

Esta es la respuesta con el token de la tarjeta que debes almacenar:

				
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payfrex-response operation-size="3">
	<message>WorkFlow has finished successfully, for transaction Id: 7712092</message>
	<operations>
		<operation sorted-order="1">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Exemptions has been removed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7712092</payFrexTransactionId>
			<service>TRA</service>
			<status>SUCCESS</status>
		</operation>
		<operation sorted-order="2">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>3dsv2 - processed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7712092</payFrexTransactionId>
			<paymentDetails>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<extraDetails/>
			</paymentDetails>
			<service>3DSv2</service>
			<status>SUCCESS3DS</status>
		</operation>
		<operation sorted-order="3">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<details>{"resultCode":"00000","resultDescription":"OK","values":{"rfTransactionCurrency":"EUR","rfRTS":"355534686 790190 845525 231030180016","rfContactlessLogo":"false","rfOperationType":"Settle","rfAuthMode":"On","rfDataEntryMode":"Manual","rfCardHolderVerificationMode":"No","rfFuc":"355534686","rfTerminalID":"00000500","rfProcessor":"Redsys","rfMerchantName":"Pruebas Addon 25","rfMerchantCity":"BARCELONA","rfMerchantPostalCode":"08014","rfMerchantAddress":"GRAN VIA DE LES CORTS CATALANE, 159 PLANTA 7","rfMaskedPan":"************2227","rfOperationDateTime":"30/10/23 18:00:16","rfTerminalOperationNumber":"1200","rfAuthNumber":"372125","rfTransactionAmountCurrency":"10,00 EUR","rfProcessorMessage":"","rfPrintSignatureBox":"false","rfCardPresent":"true","rfReferenceId":"1200","posTransactionToken":"{\"pucIdMsg\":\"1200\",\"pucP3ProcessCode\":\"000000\",\"pucP4OriginalAmount\":\"000000001000\",\"pucP11TransactionNumber\":\"845525\",\"pucP12LocalDateTime\":\"231030180016\",\"pucP22ServicePointData\":\"1U00506K3000\",\"pucP38AuthNumber\":\"372125\",\"pucP39ActionCode\":\"000\",\"pucP53SecurityControlInfo\":\"0102000001000000\",\"pinpadId\":\"1440\",\"pinpadAcquirerId\":\"00000500\",\"pinpadManufacturer\":null,\"pinpadModel\":null,\"pinpadSerialNumber\":null,\"pinpadSoftwareName\":null,\"pinpadSoftwareVersion\":null,\"pinpadKernelEmv\":null,\"pinpadVccStrip\":null,\"pinpadVerPup\":null,\"pinpadPciStage\":null,\"pinpadVerEmvParams\":null,\"pinpadEmvType\":null,\"pinpadCapabilities\":null,\"pinpadLanguage\":null,\"transactionType\":\"O\",\"transactionContactless\":\"0\",\"transactionDcc\":\"0\",\"transactionDccComission\":null,\"transactionDccExchangeRate\":null,\"transactionDccMarkUp\":null,\"transactionDccEntity\":null,\"transactionDccBceExchangeRate\":null,\"transactionDccBceMarkUp\":null,\"transactionPanSequenceNumber\":null,\"transactionTerminalOperationNumber\":\"1200\",\"transactionResponseCode\":null,\"transactionCurrency\":\"978\",\"transactionFuc\":\"355534686\",\"cardMaskedPan\":\"************2227\",\"cardAid\":null,\"cardDdfName\":null,\"cardApplicationLabel\":null,\"cardCypherData\":null}","OperationResult":"000"},"threeDsProtocolVersion":"2.2.0"}</details>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Success 'Settle' operation</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<payFrexTransactionId>7712092</payFrexTransactionId>
			<paySolTransactionId>355534686 790190 845525 231030180016</paySolTransactionId>
			<paymentDetails>
				<cardHolderName>Pruebas Visa Frictioless</cardHolderName>
				<cardNumber>490727****2227</cardNumber>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<cardType>VISA/CREDIT</cardType>
				<expDate>1234</expDate>
				<extraDetails>
					<entry>
						<key>cardCategory</key>
						<value>Not Available</value>
					</entry>
					<entry>
						<key>rememberMe</key>
						<value>true</value>
					</entry>
				</extraDetails>
				<issuerBank>SERVIRED MASTERCARD INTERNACIONAL</issuerBank>
				<issuerCountry>ES</issuerCountry>
			</paymentDetails>
			<paymentMethod>19900</paymentMethod>
			<paymentSolution>caixapucpuce</paymentSolution>
			<status>SUCCESS</status>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>31380</id>
		<name>debit creditcards (TRA)</name>
		<version>0</version>
	</workFlowResponse>
</payfrex-response>
				
			

Mostrar tarjetas

En Addon Payments puedes decidir si mostrar las tarjetas guardadas al cliente. Esta operativa está relacionada con el guardado de tarjetas y el identificador del cliente.

Para mostrar las tarjetas guardadas a un cliente se deben cumplir estos requisitos:

  • Has forzado el guardado de tarjeta como se muestra en la sección anterior o el cliente ha decidido guardar su tarjeta marcando el checkbox de «Recuérdame». El token de la tarjeta que se guarda se asocia a un identificador de cliente (customerId).
  • En las siguientes transacciones, el identificador de cliente (customerId) debe ser el mismo que el que se usó para guardar la tarjeta. Por lo que estas se muestran en el cajero de pago.

Por ejemplo, el cliente con el «customerId» «01» hace una compra en tu comercio electrónico y decide marcar la casilla de «recuérdame», por lo que se guarda su tarjeta. Más tarde, el mismo cliente (con el «customerId» «01») hace otra compra y tiene su tarjeta disponible en el cajero de pago.

Si el cliente entra como invitado a tu plataforma, tendrá otro «customerId», por lo que no verá sus tarjetas guardadas.

Obtener authtToken, renderizar cajero y charge

El proceso para mostrar las tarjetas a un cliente es igual que el resto de operativas. Sin embargo, debes enviar el mismo «customerId» que se ha utilizado para guardar tarjetas.

Puedes ver cómo obtener el authToken, renderizar el cajero y hacer el charge en las secciones correspondientes. 

Un cliente puede tener varias tarjetas guardadas. Si el mismo cliente entra como invitado (customerId diferente) no verá ninguna de sus tarjetas.

Visualización del cajero 

Pagos recurrentes

En esta sección, encontrarás cómo guardar la tarjeta del cliente con el objetivo de realizar pagos posteriores sin la interacción del cliente o C.I.T (Customer Initiated Transaction).

En estos casos de uso, el cliente debe realizar un pago inicial autenticado con 3DS2 y SCA, que permitirá guardar los datos de su tarjeta y dar su consentimiento para pagos posteriores. Este tipo de transacción se denomina C.O.F (Credential On File).

Para los siguientes pagos sin la interacción del cliente o M.I.T (Merchant Initiated Transaction), visita la guía Host2Host.

Alta plan de suscripción

Mediante esta integración puedes dar de alta un plan de suscripción, permitiendo que el cliente guarde su tarjeta para pagos posteriores. En la petición, deberás incluir parámetros C.O.F y forzar SCA, para evitar futuras denegaciones del emisor. En la respuesta, recibirás el «subscriptionPlan», que será el identificador para las operaciones posteriores y está directamente vinculado al «cardNumberToken» de la respuesta, y al «customerId» remitido por tu parte en la solicitud del pago. Todo esto lo veremos a continuación.

En esta primera transacción, debes informar del tipo de transacciones que se emitirán posteriormente en función de tus necesidades. Aquí tienes una tabla con los parámetros para indicarlo, dentro de «paymentRecurringType«, y su función:

Pago inicialPagos sucesivosDescripciónEjemplo
newCofcofPagos puntuales, sin importe ni intervalo de tiempo fijo.Compra en la cual el cliente selecciona guardar la tarjeta para transacciones posteriores.
newSubscriptionsubscriptionPago recurrente con importe e intervalo de tiempo definido.Cuotas o suscripciones.
newInstallmentinstallmentPago aplazado limitado a una compra individual con importe e intervalo de tiempo definido.Compra a plazos

Además, recomendamos que visites nuestra sección 3DSecure con el objetivo de añadir campos adicionales al proceso de pago. Estos datos opcionales enriquecen la solicitud de pago y pueden facilitar el proceso de autenticación.

Obtención del authToken y renderizado del cajero frontal 

Puedes conocer cómo obtener el authToken y cómo renderizar el cajero frontal en las secciones anteriores. 

Nota: Recuerda incluir el parámetro «forceTokenRequest=true» para guardar el token de la tarjeta del cliente.

Charge

Con la obtención del «prepayToken», podrás enviar la petición de pago / charge. Este es un ejemplo de petición de alta de plan de suscripción, el primero como cadena y el segundo como cURL. 

				
					{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "amount": "0.00",
    "paymentRecurringType":"newSubscription",
    "challengeInd":"04",
    "currency": "EUR",
    "country": "ES",
    "apiVersion": "5",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https:// micomercio.com/url-ok.php",
    "errorURL": "https:// micomercio.com/url-ko.php",
    "cancelURL": "https:// micomercio.com/url-cancelacion.php"
}
				
			
				
					curl --location --request POST 'https://epgjs-mep-stg.addonpayments.com/charge/v2' \
--header 'Content-Type: application/json' \
--header 'prepayToken: 8862abf9-ca5a-49da-9527-1e3163e64954' \
--data-raw '{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "amount": "10.00",
    "currency": "EUR",
    "country": "ES",
    "apiVersion": "5",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "challengeInd": "04",
    "paymentRecurringType": "newSubscription",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https://micomercio.com/url-ok.php",
    "errorURL": "https://micomercio.com/url-ko.php",
    "cancelURL": "https://micomercio.com/url-cancelacion.php"}'
				
			

Parámetros de la solicitud de charge

Los parámetros de la solicitud los puedes encontrar en la tabla del charge de Autorización.

Además de esos parámetros, para dar de alta un plan de suscripción, debes añadir los siguientes parámetros. El tipo indica si el elemento es Requerido (R) u Opcional (O):

CampoFormatoTipoDescripciónEjemplo
paymentRecurringType– newCof: Pagos puntuales, sin importe ni intervalo de tiempo fijo.
– newSubscription: Pago recurrente con importe e intervalo de tiempo definido.
– newInstallment: Pago aplazado limitado a una compra individual con importe e intervalo de tiempo definido.
RTipo de pago recurrente o sucesivo. Indica si la transacción C.O.F. es inicial o sucesiva, así como el motivo u objetivo del pago.newSubscription
challengeIndValores aceptados:
– 01: sin preferencia (valor por defecto si no se envía este parámetro)
– 02: evitar challenge
– 03: requerir challenge (preferencia del comercio)
– 04: requerir challenge (obligatorio)
– 05: evitar challenge (realizado análisis de riesgo de transacción)
– 06: evitar challenge (sólo en compartir datos)
– 07: evitar challenge (SCA ya realizada)
– 08: evitar challenge (utiliza exención de lista blanca)
– 09: evitar challenge (solicitar lista blanca)
RIndica la preferencia marcada por el comercio ante un proceso de autenticación. El emisor puede modificar la preferencia especificada en este campo.04

Respuesta

Visita nuestra sección de Recepción y gestión de las notificaciones para conocer su estructura.

Este es un ejemplo de notificación recibida tras dar de alta un plan de suscripción: 

				
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payfrex-response operation-size="3">
	<message>WorkFlow has finished successfully, for transaction Id: 7712668</message>
	<operations>
		<operation sorted-order="1">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Invalid threeDSv2Token.</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7712668</payFrexTransactionId>
			<service>3DSv2</service>
			<status>ERROR3DS</status>
		</operation>
		<operation sorted-order="2">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>3dsv2 - processed</message>
			<operationType>DEBIT</operationType>
			<payFrexTransactionId>7712668</payFrexTransactionId>
			<paymentDetails>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<extraDetails/>
			</paymentDetails>
			<service>3DSv2</service>
			<status>SUCCESS3DS</status>
		</operation>
		<operation sorted-order="3">
			<amount>10.00</amount>
			<currency>EUR</currency>
			<details>{"resultCode":"00000","resultDescription":"OK","values":{"rfTransactionCurrency":"EUR","rfRTS":"355534686 790190 846363 231031084720","rfContactlessLogo":"false","rfOperationType":"Settle","rfAuthMode":"On","rfDataEntryMode":"Manual","rfCardHolderVerificationMode":"No","rfFuc":"355534686","rfTerminalID":"00000500","rfProcessor":"Redsys","rfMerchantName":"Pruebas Addon 25","rfMerchantCity":"BARCELONA","rfMerchantPostalCode":"08014","rfMerchantAddress":"GRAN VIA DE LES CORTS CATALANE, 159 PLANTA 7","rfMaskedPan":"************2227","rfOperationDateTime":"31/10/23 08:47:20","rfTerminalOperationNumber":"1202","rfAuthNumber":"246289","rfTransactionAmountCurrency":"10,00 EUR","rfProcessorMessage":"","rfPrintSignatureBox":"false","rfCardPresent":"true","rfReferenceId":"1202","posTransactionToken":"{\"pucIdMsg\":\"1200\",\"pucP3ProcessCode\":\"000000\",\"pucP4OriginalAmount\":\"000000001000\",\"pucP11TransactionNumber\":\"846363\",\"pucP12LocalDateTime\":\"231031084720\",\"pucP22ServicePointData\":\"1U00506K3000\",\"pucP38AuthNumber\":\"246289\",\"pucP39ActionCode\":\"000\",\"pucP53SecurityControlInfo\":\"0102000001000000\",\"pinpadId\":\"1440\",\"pinpadAcquirerId\":\"00000500\",\"pinpadManufacturer\":null,\"pinpadModel\":null,\"pinpadSerialNumber\":null,\"pinpadSoftwareName\":null,\"pinpadSoftwareVersion\":null,\"pinpadKernelEmv\":null,\"pinpadVccStrip\":null,\"pinpadVerPup\":null,\"pinpadPciStage\":null,\"pinpadVerEmvParams\":null,\"pinpadEmvType\":null,\"pinpadCapabilities\":null,\"pinpadLanguage\":null,\"transactionType\":\"O\",\"transactionContactless\":\"0\",\"transactionDcc\":\"0\",\"transactionDccComission\":null,\"transactionDccExchangeRate\":null,\"transactionDccMarkUp\":null,\"transactionDccEntity\":null,\"transactionDccBceExchangeRate\":null,\"transactionDccBceMarkUp\":null,\"transactionPanSequenceNumber\":null,\"transactionTerminalOperationNumber\":\"1202\",\"transactionResponseCode\":null,\"transactionCurrency\":\"978\",\"transactionFuc\":\"355534686\",\"cardMaskedPan\":\"************2227\",\"cardAid\":null,\"cardDdfName\":null,\"cardApplicationLabel\":null,\"cardCypherData\":null}","OperationResult":"000","cofAdditionalInformation":"RS675003676677589"},"threeDsProtocolVersion":"2.2.0"}</details>
			<merchantTransactionId>00000001</merchantTransactionId>
			<message>Success 'Settle' operation</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<payFrexTransactionId>7712668</payFrexTransactionId>
			<paySolTransactionId>355534686 790190 846363 231031084720</paySolTransactionId>
			<paymentDetails>
				<cardHolderName>Pruebas Visa Frictioless</cardHolderName>
				<cardNumber>490727****2227</cardNumber>
				<cardNumberToken>5774655584592227</cardNumberToken>
				<cardType>VISA/CREDIT OR DEBIT</cardType>
				<expDate>1234</expDate>
				<extraDetails>
					<entry>
						<key>cardCategory</key>
						<value>Not Available</value>
					</entry>
					<entry>
						<key>rememberMe</key>
						<value>true</value>
					</entry>
				</extraDetails>
				<issuerBank>SERVIRED MASTERCARD INTERNACIONAL</issuerBank>
				<issuerCountry>ES</issuerCountry>
			</paymentDetails>
			<paymentMethod>19900</paymentMethod>
			<paymentSolution>caixapucpuce</paymentSolution>
			<status>SUCCESS</status>
			<paymentMessage>Operación finalizada con éxito</paymentMessage>
         <subscriptionPlan>708120533554282</subscriptionPlan>
      </operation>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>31380</id>
		<name>debit creditcards (TRA)</name>
		<version>0</version>
	</workFlowResponse>
</payfrex-response>
				
			
Para los siguientes pagos sin la interacción del cliente o M.I.T (Merchant Initiated Transaction), visita la guía Host2Host.

Payouts

Los payouts son una operativa de pagos del comercio a la cuenta del cliente. No confundir con devoluciones. El objetivo de esta operativa es el pago de premios, por ejemplo. Debes solicitar esta operativa a Soporte para su activación.

La petición es muy parecida a la de una autorización normal, pero con «operationType: credit». El tipo de Payout depende del flujo que tenga activo tu comercio, no se puede elegir el tipo de Payout (directo o en 2 pasos) con los parámetros de la petición. Existen 2 tipos de Payouts:

  • Payout directo: El cliente recibe el importe cuando la petición se completa con éxito.
  • Payout en 2 fases: El cliente inicia el proceso del Payout pero este queda pendiente de ser aprobado o rechazado por el comercio.

Además, por seguridad, para realizar un Payout debe existir un pago autorizado previo (del cliente al comercio). El Payout se realizará con la misma solución de pago y a la misma tarjeta con la que se hizo el pago previo. Sin embargo, hay excepciones donde se puede realizar un Payout sin depósito previo, según la naturaleza del comercio.

Debes solicitar la operativa de Payout a Soporte para su activación.

Obtención del authToken y renderizado del cajero frontal 

Puedes conocer cómo obtener el authToken y cómo renderizar el cajero frontal en las secciones anteriores. 

Charge

Tu plataforma de comercio electrónico envía el charge de Payout al endpoint establecido. Tienes un ejemplo en cadena y cURL. Recuerda que la cadena debe pasar el proceso de cifrado.  

				
					{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "amount": "10.00",
    "currency": "EUR",
    "country": "ES",
    "apiVersion": "5",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "cardNumberToken": "4535954006730084",
    "operationType"= "credit",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php",
    "successURL": "https:// micomercio.com/url-ok.php",
    "errorURL": "https:// micomercio.com/url-ko.php",
    "awaitingURL": "https:// micomercio.com/url-espera.php",
    "cancelURL": "https:// micomercio.com/url-cancelacion.php"
}
				
			
				
					curl --location --request POST 'https://epgjs-mep-stg.addonpayments.com/charge/v2' \
--header 'Content-Type: application/json' \
--header 'prepayToken: 8862abf9-ca5a-49da-9527-1e3163e64954' \
--data-raw '{
    "merchantId": "12345",
    "merchantTransactionId": "00000001",
    "amount": "10.00",
    "currency": "EUR",
    "country": "ES",
    "apiVersion": "5",
    "customerId": "000001",
    "paymentSolution": "creditcards",
    "productId": "123450001",
    "cardNumberToken": "4535954006730084",
    "operationType"= "credit",
    "statusURL": "https://micomercio.com/recepcion_notificacion.php?tipo=redireccion",
    "successURL": "https:// micomercio.com/url-ok.php",
    "errorURL": "https:// micomercio.com/url-ko.php",
    "awaitingURL": "https:// micomercio.com/url-espera.php",
    "cancelURL": "https:// micomercio.com/url-cancelacion.php"}'
				
			

Parámetros del Payout JavaScript

Los parámetros requeridos para un Payout en JavaScript son los de esta tabla.

Además, debes añadir o modificar los siguientes datos:

CampoFormatoTipoDescripciónEjemplo
operationTypeAlfanumérico
Máx. 45 caracteres
REspecifica el tipo de operación a realizar. Valores admitidos:
– credit: Transacción de ingreso en cuenta del cliente. Es decir, el efectivo viaja desde el comercio hasta la cuenta del cliente. Por ejemplo, en el pago de un premio.
credit
cardNumberTokenAlfanumérico
16~20 caracteres
RToken de Addon Payments del número de tarjeta del cliente. Los últimos 4 dígitos coinciden con el número de tarjeta original.4535954006730084
cardNumberNumérico
Máximo 19 dígitos.
O (R si no se envía el cardNumberToken)PAN de la tarjeta. Debe superar el algoritmo Luhn Check.4907270002222227
expDateNumérico
4 dígitos
Formato MMAA, los meses son MM y AA el año.
O (R si no se envía el cardNumberToken)Fecha de caducidad de la tarjeta.0623
cvnNumberNumérico
3 a 4 dígitos.
O (R si no se envía el cardNumberToken)CVC de la tarjeta.123
chNameAlfanumérico
Máx. 100 caracteres
O (R si no se envía el cardNumberToken)Nombre completo del titular de la tarjeta.
Los nombres y apellidos se separan con espacios.
Soporta UTF-8.
Pablo Ferrer

Respuesta

Este es un ejemplo de la notificación que obtienes de una transacción Payout:

				
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <payfrex-response operation-size="1">
      <message>WorkFlow has finished successfully, for transaction Id: 199007517</message>
      <operations>
          <operation sorted-order="1">
              <amount>3.00</amount>
              <currency>EUR</currency>
              <details>{"resultCode":"00000","resultDescri ... ypherData\":null}","OperationResult":"000"}}</details>
              <merchantTransactionId>test-0305-014</merchantTransactionId>
              <message>A description - Success 'Payout' operation with status 'SUCCESS'</message>
              <operationType>CREDIT</operationType>
              <optionalTransactionParams/>
              <payFrexTransactionId>197517</payFrexTransactionId>
              <paySolTransactionId>008000853 790190 596484 210503172504</paySolTransactionId>
              <paymentDetails>
                  <cardNumber>466203****7594</cardNumber>
                  <cardNumberToken>3049400010087594</cardNumberToken>
                  <cardType>VISA/CREDIT</cardType>
                  <expDate>0425</expDate>
                  <extraDetails>
                      <entry>
                          <key>cardCategory</key>
                          <value>CLASSIC</value>
                      </entry>
                      <entry>
                          <key>rememberMe</key>
                          <value>true</value>
                      </entry>
                  </extraDetails>
                  <issuerBank>BANCO, S.A.U.</issuerBank>
                  <issuerCountry>ES</issuerCountry>
              </paymentDetails>
              <paymentSolution>caixapucpuce</paymentSolution>
              <status>SUCCESS</status>
              <respCode>
                  <code>0000</code>
                  <message>Successful</message>
                  <uuid>f82e5b47_bfa9_4135_a1b9_25202571208b</uuid>
              </respCode>
          </operation>
      </operations>
      <optionalTransactionParams/>
      <status>SUCCESS</status>
      <workFlowResponse>
          <id>12215</id>
          <name>Caixa Creditcards credit </name>
          <version>2</version>
      </workFlowResponse>
  </payfrex-response>
				
			

Aprobar y rechazar Payout

Si el flujo de tu comercio así lo indica, los Payouts se quedarán en status «PENDING» to «CREDIT» hasta que se aprueben o rechacen. Consulta la documentación Host2Host para realizar esta operativa

Próximos pasos

Llegados a este punto, esperamos que hayas podido integrar exitosamente por JavaScript. Consulta el resto de guías para conseguir una integración completa:

  • Pase a Producción.
  • Incluye otros métodos de pago.
  • Códigos de respuesta/error.
Comparte este documento

Integración JavaScript

Copiar el enlace

Icono del portapapeles
Tabla de Contenidos

Productos

  • Cyberpac
  • Addon Payments
  • Pagos integrados en TPV
  • Universal Pay
  • Addon 1 - XML API Integration

Ventas

Cuéntanos cómo es tu negocio para ofrecerte la mejor solución.

Contacta con un experto

Soporte técnico

¿Ya eres cliente y necesitas ayuda? Contacta con nosotros, estamos a tu disposición.

Ayuda

Socios

Trabajamos con los mejores partners de soluciones in-store y eCommerce. ¿Quieres unirte?

Únete a nosotros

© Comercia Global Payments

Política de privacidad
Ejercicio de Derechos
Información a Clientes
Canal de denuncia
Aviso Legal
Política de cookies
Pregúntale a la IA
Escribe tu pregunta. Por ejemplo: ¿Cómo creo un enlace de pago?
La SmartWiki puede omitir datos. Verifica la información o contacta con soporte.

SmartWiki, Impulsada por IA

API - Developers Docs
Gestionar el consentimiento de las cookies
Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en una web o en varias web con fines de marketing similares.
Administrar opciones Gestionar los servicios Gestionar {vendor_count} proveedores Leer más sobre estos propósitos
Ver preferencias
{title} {title} {title}

Cyberpac

Consulta la documentación de Cyberpac. Aquí tienes las distintas secciones:

Canales

Módulos de integración

Integraciones a medida

Consulta la documentación de las distintas secciones de integraciones:

Comienza a integrar

undraw_add_to_cart_re_wrdo 1 (1) (1)

Plugins para CMS

Complementa la integración

SDKs

Métodos de pago

Herramientas

Addon Payments

Consulta la documentación de Addon Payments. Aquí tienes las distintas secciones:

Integraciones

Consultas frecuentes

Portal Backoffice

Pagos integrados en TPV

Crea una solución que te ayudará a automatizar procesos. Incluso, podrás agregar procesos de pago en terminales físicos.

Pago integrado con TPV Android

Pago integrado con Smartphone TPV

Fichas Técnicas TPVs