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

Apple Pay

Introducción

Apple Pay es un sistema de pago móvil disponible en dispositivos Apple, como: iPhone, iPad, Mac o Apple Watch. Permite a los usuarios almacenar sus tarjetas y pagar sin necesidad de volver a introducir sus datos.

Apple muestra la opción de Pagar con Apple Pay en las webs donde se ha integrado el sistema y siempre que se acceda con un dispositivo compatible, como el iPhone. 

En esta guía veremos cómo integrar Apple Pay en tu comercio. De esta forma, los clientes que cumplan estos requisitos podrán usarlo:

  • Tener un dispositivo compatible con Apple Pay: iPhone, iPad, Mac o Apple Watch.
  • Acceder con un navegador compatible (Safari).
  • Tener activado Apple Pay en su dispositivo con al menos una tarjeta guardada. 
Tipo de pagoWallet
Países disponiblesTodos
Divisas disponiblesTodas
¿Necesita redirección?No
¿Admite pago en dos fases?No
¿Admite devoluciones?Sí, totales y parciales, desde el BackOffice o mediante petición H2H
Exenciones SCANo
DCCNo

Por parte del comercio, debes cumplir estos requisitos para usar Apple Pay en tu plataforma:

  • Solicitar al equipo de soporte de Addon Payments la activación y configuración de Apple Pay en tu TPV Virtual.
  • Para realizar pruebas en Staging o trabajar en un entorno de Producción, debes:
    • Tener un dispositivo Apple compatible, ya que el botón de Apple Pay sólo se muestra a estos equipos.
    • Tener activado Apple Pay en su dispositivo con al menos una tarjeta guardada.

Como requisito para el comercio en la integración JavaScript:

  • Validación en Apple del dominio de tu plataforma del comercio electrónico. Más información en esta sección.

Puedes verificar si tu dispositivo es compatible con Apple Pay con esta herramienta de Apple. Si el dispositivo y el navegador son compatibles, se mostrará el botón de Apple Pay en la parte inferior.

Por último, dispones de una colección Postman donde puedes probar las distintas operativas de Apple Pay:

  • Postman

Operativas admitidas

La integración de Apple Pay permite a tu comercio las siguientes operativas:

  1. Autorización: Un pago normal del cliente a tu comercio. La captura del importe es automática.
  2. Devoluciones: Totales y parciales. A través del portal BackOffice o mediante endpoint. 

Datos para las pruebas de Apple Pay

Además de los requisitos que ya hemos mencionado (disponer de dispositivo Apple con Apple Pay activo) debes tener en cuenta esto para la realización de pruebas: 

  • La tarjeta que uses en Apple Pay debe ser real. Las transacciones en el entorno de pruebas (Staging) no se cargarán en dicha tarjeta.
  • Si la transacción se procesa por Redsys (por defecto es así), el número de pedido debe cumplir con el formato de:
    • Alfanumérico (a-z A-Z 0-9 sin caracteres especiales).
    • Máx. 12 caracteres Min. 4 caracteres.
    • No se permiten número de pedidos duplicados. 

En el entorno de pruebas (Staging), el resultado de la transacción depende del importe enviado. Esto es:

ImporteResultado transacción
1 €Error (importe erróneo)
10 €Error (denegación del emisor)
30 €Error (nº de pedido duplicado)
50 €Autorizada

Entornos y endpoints: Staging y Producción

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

Entorno de Staging:

  • Es el primer entorno con el cual entrarás en contacto.
  • Puedes hacer pruebas con las credenciales de la sección anterior.
  • Esto te permite comprobar la correcta gestión de las diferentes casuísticas por parte de tu integración.

Entorno de Producción:

  • Es el entorno en el cual las transacciones tienen efectos contables.
  • Únicamente se puede transaccionar con tarjetas y cuentas reales y operativas.

A continuación, tienes los endpoints según el tipo de integración:

EntornoURL
Staginghttps://checkout-stg.addonpayments.com/EPGCheckout/rest/online/tokenize
Producciónhttps://checkout.addonpayments.com/EPGCheckout/rest/online/tokenize
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

Integración por Hosted

Con Addon Payments puedes utilizar la solución de pago Apple Pay en integraciones Hosted. En el cajero de pago, puedes elegir si el cliente ve todas las soluciones de pago que tengas activadas (Apple Pay, Bizum, tarjeta de crédito…), o si se limita sólo a Apple Pay. 

Para limitar el cajero sólo a Apple Pay, debes indicarlo con el campo «paymentSolution: applepaydecryptservice». 

Datos requeridos y opcionales Hosted

Estos son los parámetros requeridos/obligatorios (R) y opcionales (O) para realizar una transacción con Apple Pay vía Hosted:

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
merchantTransactionIdAlfanumérico
Máx. 12 caracteres
Min. 4 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
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
3 caracteres
ISO 4217.3
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.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
paymentSolutionAlfanumérico
Máx. 45 caracteres
ONombre de la solución de pago por la cual debe procesarse la transacción. Si quieres que el cliente solo vea Apple Pay debes incluir este parámetro. applepaydecryptservice

Autorización

A continuación veremos cómo realizar un pago con Apple Pay. La captura del importe tras la autorización es automática. Envía la petición al endpoint correspondiente. 

Petición

Recuerda que las peticiones enviadas a Addon Payments deben ser cifradas. Visita nuestra sección de Cifrado, firma y envío de la petición para más información.

Estos son unos ejemplos de petición de pago mediante Apple Pay por Hosted. Recuerda que la petición en cadena debe pasar el proceso de cifrado.

				
					merchantId=12345&merchantTransactionId=00000001&amount=50.00&currency=EUR&country=ES&customerId=000001&statusURL
=https://micomercio.com/recepcion_notificacion.php-tipo-redireccion&successURL=https://micomercio
.com/url-ok.php&errorURL=https://micomercio.com/url-ko.php

				
			
				
					curl --location --request POST 'https://checkout-stg.addonpayments.com/EPGCheckout/rest/online/tokenize' \
--header 'apiVersion: 5' \
--header 'encryptionMode: CBC' \
--header 'iv: mx3rdwlpuDA1vM14SFT5bw==' \
--form 'merchantId="12345"' \
--form 'encrypted="/kJtS1WhS33iGLIvOuv7QrAj7RCJXYgaiLpTFzNe9VDkGEYMCF5CI6z2eZmPQBFMsVJtroV3mvgBhRdK6j64utR' \
--form 'integrityCheck="e55c1dae947b376645b8fbd7f3612f0cf63045236c80b643f8335d3c4050ec70"'
				
			

Una vez enviado el POST a Addon Payments, recibirás la URL donde redirigir al cliente: 

				
					https://checkout.stg-eu-west3.epgint.com/EPGCheckout/rest/online/detokenize?token
=2166f73d-6412-48d3-b440-6da9a961594b&apiVersion=5
				
			

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

Parámetros de la solicitud

Los parámetros básicos para enviar una petición de autorización Apple Pay vía Hosted son los Requeridos/Obligatorios (R) de la tabla de requeridos y opcionales. 

Respuesta

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

A continuación, tienes un ejemplo de la notificación que recibes en la «statusURL» que hayas indicado informando del estado de la transacción.

				
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response operation-size="2">
	<message>WorkFlow has finished successfully, for transaction Id: 7798313</message>
	<operations>
		<operation sorted-order="1">
			<amount>50</amount>
			<currency>EUR</currency>
			<merchantTransactionId>27516260</merchantTransactionId>
			<message>Applepay decryption finished successfully</message>
			<operationType>DEBIT</operationType>
			<originalTransactionId>7798313</originalTransactionId>
			<paySolTransactionId>7798313</paySolTransactionId>
			<paymentDetails>
				<extraDetails>
					<entry>
						<key>stAp</key>
						<value>AWAITING_PAYSOL</value>
					</entry>
				</extraDetails>
			</paymentDetails>
			<service>ApplepayDecryptService</service>
			<status>SUCCESS</status>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>11b65f6d_5ee0_4192_bdb9_93ae168cd6b3</uuid>
			</respCode>
		</operation>
		<operation sorted-order="2">
			<amount>50</amount>
			<currency>EUR</currency>
 <details>{"Ds_Card_Brand":"1","Ds_Response":"0000","Ds_ProcessedPayMethod":"72","Ds_TransactionType":"0","Ds_Language":"1","Ds_Currency":"978","Ds_Card_Country":"724","Ds_MerchantCode":"008043853","Ds_SecurePayment":"0","Ds_Amount":"5000","Ds_Card_Type":"C","Ds_MerchantData":"","Ds_AuthorisationCode":"782076","Ds_Terminal":"50","Ds_Order":"2704003"}</details>
			<merchantTransactionId>27516260</merchantTransactionId>
			<message>Operation SUCCESS, with Authorization code :782076</message>
			<operationType>DEBIT</operationType>
			<optionalTransactionParams/>
			<paySolTransactionId>2704003</paySolTransactionId>
			<paymentDetails>
				<extraDetails>
					<entry>
						<key>stAp</key>
						<value>SUCCESS</value>
					</entry>
				</extraDetails>
			</paymentDetails>
			<paymentSolution>redsysrest-applepay</paymentSolution>
			<status>SUCCESS</status>
			<transactionId>7798313</transactionId>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>fc022bbe_e456_440b_8498_cf3ac389880b</uuid>
			</respCode>
		</operation>
	</operations>
	<optionalTransactionParams/>
	<status>SUCCESS</status>
	<workFlowResponse>
		<id>51594</id>
		<name>Applepay</name>
		<version>3</version>
	</workFlowResponse>
</response>
				
			

Integración por JavaScript

Con Addon Payments puedes utilizar la solución de pago Apple Pay en integraciones JavaScript.

La opción de Apple Pay se puede mostrar junto al resto de opciones de pago que tengas en tu comercio. Por otro lado, puedes elegir mostrar únicamente Apple Pay. Esto depende de la función que utilices para renderizar el cajero en tu plataforma,  como veremos en el Renderizado.

Este es un resumen de la integración de Apple Pay mediante JavaScript. Puedes obtener más información general en la guía de Complementa JavaScript:

  1. Solicitas un authToken único y de un sólo uso para poder enlazar el cajero en tu web.
  2. Tu plataforma de comercio electrónico enlaza el cajero de AP en un elemento “div” de tu web mediante la función de carga elegida (cajero completo o cajero limitado).
  3. AP compila el cajero seleccionado en el “div” de tu web pasado como parámetro a la función de carga.
  4. El cliente selecciona el método de pago Apple Pay y pulsa el botón “Pagar”
  5. AP devuelve un “prepayToken” a tu web, el cual deberás capturar mediante un listener de JavaScript.
  6. Tu plataforma de comercio electrónico recoge el “prepayToken” y envía una petición de charge a AP que lo contenga.
  7. AP envía una notificación con el resultado de la transacción a la URL de tu plataforma indicada en el parámetro “statusURL” enviado en la petición de charge.
  8. Tu plataforma de comercio electrónico comunica el resultado de la transacción a Apple Pay para que estos actualicen y reflejen el estado en el dispositivo del cliente. 

Configuración previa por parte del comercio

Para que el botón de Pagar con Apple Pay se muestre en el cajero JavaScript, Apple requiere que los dominios de tu plataforma de comercio electrónico desde donde se invoca el cajero estén registrados como autorizados.

Addon Payments dispone de un proceso automatizado mediante la API de Apple que permite registrar dominios de los comercios como autorizados. No obstante, Apple realiza una validación de cada dominio añadido y, en caso de no ser validado, rechaza la inclusión del dominio como seguro.

Para conseguir la validación de Apple, debes realizar las siguientes configuraciones en los dominios donde quieras integrar la solución de pago Apple Pay:

1. Obtén el fichero apple-developer-merchantid-domain-association. Solicítalo a soporte.

Solicita el fichero «apple-developer-merchantid-domain-association» al equipo de soporte.

2. Descomprime el fichero descargado.
Nota: Este archivo de validación es valido para el entorno de pruebas (Staging) y el de Producción, por lo que recomendamos mantenerlo a mano hasta que pases al entorno de producción.

3. Aloja el archivo adjunto “apple-developer-merchantid-domain-association” en la siguiente ruta de cada uno de los dominios a validar: https://dominio.com/.well-known/apple-developer-merchantid-domain-association
– El fichero debe estar sin comprimir y accesible de forma pública en Internet
– Los dominios a validar deben contar con un certificado de cifrado TLS instalado y válido. 

4. Si tienes activado algún firewall en tu servidor web, debes abrir el acceso a las siguientes IPs de validación de Apple:

17.32.139.128/27
17.32.139.160/27
17.140.126.0/27
17.140.126.32/27
17.179.144.128/27
17.179.144.160/27
17.179.144.192/27
17.179.144.224/27
17.253.0.0/16

5. Ambos puntos están detallados en la documentación de Apple disponible en este enlace. 

6. Para verificar si has realizado correctamente el alojamiento del fichero puedes introducir la ruta con el dominio de tu plataforma de comercio electrónico, preferiblemente desde un dispositivo que no esté en la misma red que el servidor web.

7. Una vez hayas verificado el correcto acceso al fichero de validación, contacta con Soporte e indica del/los dominios que pueden validar y activar en Apple Pay.

8. Tras la confirmación de Soporte de que los dominios se han validado correctamente, podrás realizar pruebas de integración con Apple Pay con la integración JavaScript. 

Obtención del authToken y renderizado del cajero 

El primer paso es obtener el «authToken» que nos permitirá renderizar el cajero. Se debe mandar una petición con los datos mínimos que mostramos a continuación. Envía la petición al endpoint correspondiente.

				
					{
    "merchantId":"12345",
    "merchantKey":"356a8a53-b188-404d-b6c1-5bd44f48066a",
    "productId":"123450001",
    "currency":"EUR",
    "country":"ES",
    "customerId":"000001"
}

				
			
				
					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",
    "currency":"EUR",
    "productId":"123450001",
    "country":"ES",
    "customerId":"000001"
}'
				
			

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 parámetro 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.A34623

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 Apple Pay:

				
					<!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 = "39c1cd83-fca9-4073-b056-7fbfe95c9e69"; // 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', 'applepayDecryptService');
            EPGJS.setInitPaysolParam({'amount':50, 'currency':'EUR', 'country':'ES', 'language':'ES'});
            EPGJS_COMM.setMerchantPrePayCallback(prePayCallback);
            // EPGJS.getContainerDiv().dispatchEvent(new CustomEvent('retrievePaymentResponse', {'detail': estado_pago}));
        }
        window.onload = displayingMessageOnButtonClick;
    </script>
</body>
</html>
				
			

En este código de ejemplo hay varias funciones obligatorias para el correcto funcionamiento del cajero de JavaScript con Apple Pay. 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 la segunda tabla de 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 Apple Pay. Si quieres cargar todas las soluciones de pago que tengas disponibles, borra ‘applepayDecryptService’ de «EPGJS.renderIntegratedCashier». Quedaría así:

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

3. EPGJS.SetInitPaysolParam: Inicializa la solución de pago Apple Pay con unos parámetros establecidos. Deben coincidir con los establecidos en la petición de authToken y Charge. Estos son: 

CampoFormatoDescripciónEjemplo
amountNumérico decimal
Importe de la transacción. Si el importe tiene decimales, el separador es un punto (.). No se puede incluir el separador en los millares50
currencyAlfabético
3 caracteres
ISO-4217.3
Divisa de la transacción.EUR
countryAlfabético
2 caracteres
ISO 3166-1 alfa-2
País desde el que se envía la transacción.ES
languageAlfabético
ISO 639-1
Idioma en el que se mostrará el botón de pago de Apple Pay.ES

Nota: Si quieres que el idioma del botón se cargue según el idioma del navegador, sigue estos pasos:

  1. Contacta con Soporte, que realizará los cambios pertinentes en el BackOffice.
  2. No envíes el campo «language» en la función «EPGJS.SetInitPaysolParam».
  3. La etiqueta «lang» no debe existir en el documento HTML donde se cargará el botón de Apple Pay. 

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

5. EPGJS.getContainerDiv(): Función que transmite el resultado de la transacción a la App de Apple Pay en el dispositivo del cliente. Debes crearla previamente. Más detalles en la Respuesta.

Esto te permitirá renderizar el cajero en el div del frontal para que el cliente pueda proceder con el pago. 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.

Obtención del prepayToken

Cuando el cliente seleccione el pago con Apple Pay, Addon Payments devolverá un «prepayToken», que deberás usar en el envío de la petición charge, como verás en las operativas siguientes. Este es un ejemplo:

"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.

Datos requeridos y opcionales charge JS

Estos son los parámetros requeridos/obligatorios (R) y opcionales (O) para realizar un charge con Apple Pay vía JavaScript:

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
merchantTransactionIdAlfanumérico
Máx. 12 caracteres
Min. 4 caracacteres
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
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
languageAlfabético
ISO 639-1
RIdioma en el cual se ha realizado el pagoES
paymentSolutionAlfanumérico
Máx. 45 caracteres
RNombre de la solución de pago por la cual debe procesarse la transacción. redsysrest-applepay
customerIdAlfanumérico
Máx. 80 caracteres
RId. del cliente en tu plataforma de comercio electrónico.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

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 un charge en Apple Pay. Envía la petición al endpoint correspondiente. 

A continuación tienes un ejemplo de autorización, el primero como cadena y el segundo como cURL.

				
					{
    "merchantId":"12345",
    "merchantTransactionId":"pedido_011",
    "amount":"50",
    "paymentSolution":"redsysrest-applepay",
    "currency":"EUR",
    "country":"ES",
    "language":"ES",
    "customerId":"A3434",
    "statusURL":"https://www.example.com/status",
    "successURL":"https://www.example.com/success",
    "errorURL":"https://www.example.com/error",
    "cancelURL":"https://www.example.com/cancel"
}
				
			
				
					curl --location --request POST 'http://epgjs-mep-stg.easypaymentgateway.com/charge/v2' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'prepayToken: e686282e-fad0-45d7-84b6-eff5bf0c126d' \
--data-raw '{
    "merchantId":"12345",
    "merchantTransactionId":"pedido_011",
    "amount":"50",
    "paymentSolution":"redsysrest-applepay",
    "currency":"EUR",
    "country":"ES",
    "language":"ES",
    "customerId":"A3434",
    "statusURL":"https://www.example.com/status",
    "successURL":"https://www.example.com/success",
    "errorURL":"https://www.example.com/error",
    "cancelURL":"https://www.example.com/cancel"
    }'
				
			

Respuesta

Cuando se envíe la petición Charge recibirás una notificación con el estado de la transacción.

En Apple Pay, debes transmitir el resultado de la transacción a la aplicación del dispositivo del cliente, para que actualice el estado e informe al cliente del resultado. Puedes ver el resto de funciones en el Renderizado. Esto se realiza con la siguiente función:

EPGJS.getContainerDiv().dispatchEvent(new CustomEvent('retrievePaymentResponse', {'detail': estado_pago}));

El resultado de la petición (SUCCESS, ERROR, etc.) debe enviarse en el valor «detail». 

Importante: Para que Apple Pay marque el pago como completado, se debe ejecutar esta función con los siguientes condiciones:

  • Antes de 30 segundos tras la autenticación del cliente en su dispositivo.
  • Que tenga el valor de estado «SUCCESS».

Si no cumple estos requisitos, el pago será «No completado». 

Devoluciones con Apple Pay

Puedes realizar devoluciones totales y parciales de transacciones Apple Pay siempre que:

  • La transacción esté autorizada y capturada (estado «success»).

Tienes dos formas de realizar las devoluciones:

  1. Mediante el portal BackOffice, como puedes ver en la sección de Operaciones secundarias.
  2. Mediante el envío de una petición de devolución, como verás a continuación.
Recuerda que para la devolución mediante endpoint debes usar el «transactionId» de la transacción original, devuelto en al respuesta anterior, y el «paymentSolution» debe ser «redsysrest-applepay».

Devolución mediante petición

Deberás enviar una petición a este endpoint:

EntornoURL
Staginghttps://checkout-stg.addonpayments.com/EPGCheckout/rest/online/rebate
Producciónhttps://checkout.addonpayments.com/EPGCheckout/rest/online/rebate

Estos son los parámetros requeridos/obligatorios (R) y opcionales (O) para realizar una devolución en Apple Pay:

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
transactionIdNumérico entero
Máx. 100 dígitos
RIdentificador de la transacción original sobre la cual va a realizarse una operación secundaria, como captura, liberación o devolución.76543210
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 millares30.5
paymentSolutionAlfanumérico
Máx. 45 caracteres
RNombre de la solución de pago por la cual ha sido procesada la transacción inicial. Se indica en la respuesta de la transacción original.redsysrest-applepay
merchantTransactionIdAlfanumérico
Máx. 12 caracteres
Min. 4 caracacteres
RIdentificador de la transacción en tu plataforma de comercio electrónico.
Sirve para que tu plataforma enlace las notificaciones recibidas con el pedido del cliente.
No puede repetirse entre transacciones.
pedido_91684
descriptionMáx. 1000 caracteres
Página de códigos Latin-1 (ISO-8859-1)
ODescripción de la transacción.
Se guarda en los detalles de la transacción y se devuelve en la notificación.
No afecta a la transacción, sirve para que puedas realizar una mejor identificación.
Reembolso tras devolución del cliente

Petición

Recuerda que las peticiones enviadas a Addon Payments deben ser cifradas. Visita nuestra sección de Cifrado, firma y envío de la petición para más información.

Estos son unos ejemplos de petición de devolución de una transacción Apple Pay por H2H. Para una devolución parcial, envía un importe inferior al total. 

Recuerda que la petición en cadena debe pasar el proceso de cifrado.

				
					merchantId=12345&merchantTransactionId=00000001&amount=50.00
&paymentSolution=redsysrest-applepay&transactionId=7860068
				
			
				
					curl --location --request POST 'https://checkout-stg.addonpayments.com/EPGCheckout/rest/online/rebate' \
--header 'apiVersion: 5' \
--header 'encryptionMode: CBC' \
--header 'iv: mx3rdwlpuDA1vM14SFT5bw==' \
--form 'merchantId="12345"' \
--form 'encrypted="/kJtS1WhS33iGLIvOuv7QrAj7RCJXYgaiLpTFzNe9VDkGEYMCF5CI6z2eZmPQBFMsVJtroV3mvgBhRdK6j64utR' \
--form 'integrityCheck="e55c1dae947b376645b8fbd7f3612f0cf63045236c80b643f8335d3c4050ec70"'
				
			

Respuesta

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

Estos son unos ejemplos de las notificaciones que recibes a una petición de devolución total y parcial de Apple Pay. En la devolución parcial, se indica la cantidad que queda por devolver. 

				
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response operation-size="1">
	<operations>
		<operation sorted-order="1">
			<amount>50.00</amount>
			<currency>EUR</currency>
			<details>{"Ds_Card_Brand":"1","Ds_Response":"0000","Ds_ProcessedPayMethod":"72","Ds_TransactionType":"0","Ds_Language":"1","Ds_Currency":"978","Ds_Card_Country":"724","Ds_MerchantCode":"008043853","Ds_SecurePayment":"0","Ds_Amount":"500","Ds_Card_Type":"C","Ds_MerchantData":"","Ds_AuthorisationCode":"782076","Ds_Terminal":"50","Ds_Order":"2704003"}</details>
			<merchantTransactionId>7554588</merchantTransactionId>
			<message>Operation SUCCESS, with Authorization code : 782076</message>
			<operationType>REFUND</operationType>
			<optionalTransactionParams/>
			<originalAmount>50.0</originalAmount>
			<originalCurrency>EUR</originalCurrency>
			<originalTransactionId>7860068</originalTransactionId>
			<paySolTransactionId>2704003</paySolTransactionId>
			<paymentSolution>redsysrest-applepay</paymentSolution>
			<remainingAmount>0.00</remainingAmount>
			<status>SUCCESS</status>
			<transactionId>7860074</transactionId>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>84eaac6f_bab5_4e3f_acbc_119ce089cc69</uuid>
			</respCode>
		</operation>
	</operations>
	<status>SUCCESS</status>
</response>
				
			
				
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response operation-size="1">
	<operations>
		<operation sorted-order="1">
			<amount>20.00</amount>
			<currency>EUR</currency>
			<details>{"Ds_Card_Brand":"1","Ds_Response":"0000","Ds_ProcessedPayMethod":"72","Ds_TransactionType":"0","Ds_Language":"1","Ds_Currency":"978","Ds_Card_Country":"724","Ds_MerchantCode":"008043853","Ds_SecurePayment":"0","Ds_Amount":"500","Ds_Card_Type":"C","Ds_MerchantData":"","Ds_AuthorisationCode":"782076","Ds_Terminal":"50","Ds_Order":"2704003"}</details>
			<merchantTransactionId>64015341</merchantTransactionId>
			<message>Operation SUCCESS, with Authorization code : 782076</message>
			<operationType>REBATE</operationType>
			<optionalTransactionParams/>
			<originalAmount>50.0</originalAmount>
			<originalCurrency>EUR</originalCurrency>
			<originalTransactionId>7860071</originalTransactionId>
			<paySolTransactionId>2704003</paySolTransactionId>
			<paymentSolution>redsysrest-applepay</paymentSolution>
			<remainingAmount>30.00</remainingAmount>
			<status>SUCCESS</status>
			<transactionId>7860080</transactionId>
			<respCode>
				<code>0000</code>
				<message>Successful</message>
				<uuid>1fc491a6_db6c_47dc_ba53_6e305ffc5b8f</uuid>
			</respCode>
		</operation>
	</operations>
	<status>SUCCESS</status>
</response>
				
			

Códigos de error 

Estos son los códigos de error que puedes recibir en las notificaciones de Apple Pay. Los puedes encontrar en las líneas «code», «paymentCode», «paymentMessage».

< code > Código Addon PaymentsMensaje Addon Payments< paymentCode >
Código solución pago
< paymentMessage > Mensaje solución pago
1509The transaction could not be processed. Check the Payment Solution Response904Comercio no registrado en el fuc
1509The transaction could not be processed. Check the Payment Solution Response909Error de sistema
1509The transaction could not be processed. Check the Payment Solution Response913Transmisión duplicada
1509The transaction could not be processed. Check the Payment Solution Response944Sesión errónea
1511The refund was unable to be processed. Check Payment Solution Response950Operación de devolución no permitida
1513Unable to process this operation please check the Payment Solution Response9257Esta tarjeta no permite operativa de preautorizaciones
1513Unable to process this operation please check the Payment Solution Response9261Operación detenida por superar el control de restricciones en la entrada al SIS
1524The provided transaction reference has already been used for another transaction. You must provide a unique value for each request9997Se está procesando otra transacción en SIS con la misma tarjeta
1532Merchant is not entitled to initiate this type of transaction9256El comercio no puede realizar preautorizaciones
1600Payment solution general input error, please check payment solution respond9899Los datos en Ds_Merchant_Data y no estaban correctamente firmados
1600Payment solution general input error, please check payment solution respond9909Error genérico. Consulte con Soporte
1616Incorrect CVV129CVV2 erróneo
1618Card Decline, please check Payment Solution Respond101Tarjeta caducada
1618Card Decline, please check Payment Solution Respond125Tarjeta no efectiva
1618Card Decline, please check Payment Solution Respond180Tarjeta ajena al servicio o no compatible.
1620Card Number not Valid, Please Check Payment Solution Respond9064Número de posiciones de la tarjeta incorrecto
1620Card Number not Valid, Please Check Payment Solution Respond9253Tarjeta no cumple el check-digit
1625Check the card limits9995Recarga de prepago denegada
1625Check the card limits9996No permite la recarga de tarjeta prepago
1628Potencial fraud, transaction declined.9931Denegada (LINX)
1628Potencial fraud, transaction declined.9932Denegada (LINX)
1628Potencial fraud, transaction declined.9933Denegada (LINX)
1628Potencial fraud, transaction declined.9934Denegada (LINX)
1628Potencial fraud, transaction declined.9935Denegada (LINX)
1634Transaction pending to be processed by the Payment Solution8102Operación que ha sido redirigida al emisor a autenticar EMV3DS V1 (para H2H)
1634Transaction pending to be processed by the Payment Solution8210Operación que ha sido redirigida al emisor a autenticar EMV3DS V2 (para H2H)
1634Transaction pending to be processed by the Payment Solution9930La transferencia está pendiente
1634Transaction pending to be processed by the Payment Solution9998Operación en proceso de solicitud de datos de tarjeta
1634Transaction pending to be processed by the Payment Solution9999Operación que ha sido redirigida al emisor a autenticar
1638Issuer declined the transaction, please check payment solution respond172Denegada, no repetir
1638Issuer declined the transaction, please check payment solution respond173Denegada, no repetir sin actualizar datos de tarjeta
1638Issuer declined the transaction, please check payment solution respond174Denegada, no repetir antes de 72 horas
1638Issuer declined the transaction, please check payment solution respond190Denegación del emisor sin especificar motivo
1641Card or currency not supported, please check payment solution respond9078Tipo de operación no permitida para esa tarjeta
1647Issuer unavail912Emisor no disponible
1647Issuer unavail9912Emisor no disponible
1654Restricted card102Tarjeta bajo sospecha de fraude o bloqueada temporalmente
1654Restricted card202Tarjeta bajo sospecha de fraude
1664Invalid expire date191Fecha de caducidad errónea
1673Card restricted9094Rechazo servidores internacionales
1682PIN error. Check the Payment Solution Response106Excedido el número de intentos con PIN erróneo
1684Full 3DS operative enabled and 3ds server response was not secured transaction9104Comercio con «titular seguro» y titular sin clave de compra segura
8005Cancelled by cardholder915El titular ha cancelado la operación de pago.
8005Cancelled by cardholder9915A petición del usuario se ha cancelado el pago
8005Cancelled by cardholder9928A petición del usuario se cancela la preautorización
8005Cancelled by cardholder9929El titular ha cancelado la operación
8011Invalid/not supported or not permitted transaction. Check Service Response9218El comercio no permite op. seguras por entrada /operaciones
8016No Card record9093Tarjeta no existente
8016No Card record9994No se ha seleccionado ninguna tarjeta de la cartera.
8032Authentication error184Error en autenticación 3DSecure por parte del titular de la tarjeta
8888Soft Decline195Requiere autenticación SCA
Comparte este documento

Apple Pay

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