NAV Navbar
Logo
Curl

Fases de integración

La integración del Cliente con la pasarela Sipay E-commerce se dará por finalizada cuando:

 Recomendaciones

Durante el proceso de integración, le recomendamos que tenga en cuenta estas consideraciones:

API Endpoints

Entorno Sandbox URL
URL Auth https://sandbox.sipayecommerce.sipay.es:10010/
URL API https://sandbox.sipayecommerce.sipay.es/
Entorno Piloto URL
URL Auth https://piloto.sipayecommerce.sipay.es:10010/
URL API https://piloto.sipayecommerce.sipay.es/
Entorno Producción URL
URL Auth https://sipayecommerce.sipay.es:10010/
URL API https://sipayecommerce.sipay.es/

redirect/iframe v.1

Introducción

Esta integración es ideal para aquellos comercios que no quieran cumplir estrictamente con la normativa PCI DSS.

Le permitirá utilizar nuestro sistema de plantillas para adaptar su look&feel a nuestro sistema. Podrá utilizar plantillas optimizadas para dispositivos móviles, iframe y web responsive para navegadores.

A continuación se describe funcionalmente en qué consiste este tipo de integración.

Paso 1. El primer mensaje (formato JSON) debe ser una solicitud de ID para la operación (idrequest). Esta comunicación se realiza sobre un canal seguro SSL con validación de certificado cliente y con un formato de mensaje JSON.

Esta operación es conocida como AUTH y será una llamada obligatoria y previa a cualquier operación de venta, devolución, … Siempre debe realizarse la llamada AUTH, por tanto cualquier operación realizada siempre consistirá en dos llamadas a nuestro API.

El certificado cliente será proporcionado por Sipay con las siguientes especificaciones:

Esta petición será realizada desde el servidor web del cliente que será el custodio del certificado. Debe protegerse con el mayor número de medidas de seguridad dicho certificado SSL.

La respuesta (formato JSON) tendrá la siguiente información esencial (pueden venir más, consulte la información específica):

<iframe src='iframe_src' width="100%" height="500px"></iframe>

La adaptación a su look&feel dependerá de plantilla configurada. Consulte con Sipay.

Paso 2. Se deberá utilizar la respuesta anterior para la carga del formulario de pago en un contenedor iframe o en la barra de direcciones de un navegador web. Este formulario puede estar personalizado con su logo, colores y tipo de letra. Podrá configurar varias plantillas para que pueda adaptarlas a sus diferentes webs. Consulte con Sipay.

Paso 3. A partir del paso 2, se sucederán una serie de redirecciones de seguridad que terminarán en la página web configurada por el cliente. A esta página se llegará mediante un POST en formato QueryString con una serie de campos especificados más adelante.

En este paso tendrá que conocer si su comercio está trabajando en CES o no-CES. Estos acrónimos hacen referencia a si su comercio está trabajando en modalidad de comercio electrónico seguro o en modo comercio electrónico no seguro. Si tiene dudas, consúltenos.

Venta con tarjeta

Autenticación

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de la venta basada en redirect/iframe.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request:

{
  "apikey": "empty",
  "resource": "iframe/v1/redirects/payments/cards",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "ticket": "8354283542",
  "amount": "0000000010",
  "currency": "978",
  "redirects.templateid": "1GLqlCZ0Bsohg2g",
  "redirects.extradata": "",
  "redirects.dstpage": "",
  "redirects.message": "",
  "redirects.results_interactive": "",
  "redirects.results_message": "",
  "redirects.notpage": "",
  "redirects.notmode": "",
  "reference": "",
  "iframe.target": "_self"
}
CAMPO VALOR
apikey Clave identificatoría frente al Api.
resource Recurso al que se hace la petición.
authtype Metodo de autenticación frente a la conexión.
merchantid id proporcionado por Sipay.
ticket número de recibo de la venta proporcionado por el cliente.
amount importe a cobrar en el formato especifico, ver formatos.
currency código numérico de la moneda a utilizar, 978 para euro. Consulte a Sipay la activación de más monedas.
redirects.templateid identificador de la plantilla.Consulte a su integrador en Sipay para configurarla correctamente.
redirects.extradata información de libre uso para incluirla en las plantillas.Opcional.
redirects.dstpage URL completa de la página web del comercio donde se enviará el POST QueryString con los resultados de la operación. Consulte la referencia adicional más adelante.
redirects.message Mensaje de texto que aparecerá en las página de procesando pago.Opcional.
redirects.results_interactive true o false indicará si la web de resultados es interactiva o transitiva.Opcional.
redirects.results_message Mensaje de texto que aparecerá en la página de transición de resultados.Opcional.
redirects.notpage URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. Opcional.
redirects.notmode Modo de notificación. Consulte la referencia adicional más adelante. Opcional.
redirects.expiration Número de segundos de validez del enlace generado. Consulte la referencia adicional más adelante. Opcional.
reference Campo de conciliación bancaria. Consulte la referencia adicional más adelante. Opcional.
iframe.target Valor _self o _parent para indicar el comportamiento de una plantilla adaptada para iframe. Por defecto siempre será _self.Opcional.
redirects.notemail Se debe indicar una dirección de correo electrónica válida para enviar por email la notificación que recibiría en “redirects.notmode”.Opcional.
redirects.notemailformat Se debe indicar un valor para determinar el formato de correo electrónico de notificación que llegará al email “redirects.notemail”.Opcional.

Response

Example response:

{
  "resource": "iframe/v1/redirects/payments/cards",
  "uuid": "5ea79a02-00ca-11e6-ac37-000c292985e3",
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "redirects.url": "https://sandbox.sipayecommerce.sipay.es:443/iframe/v1/redirects/payments/cards?lang=0&merchantname=SIPAYPLUS&idrequest=319E5FDEE3E0B0864C01223C1BC0CE0C06D00DC5EBE2767F2C686840561EC3C4&redirects.templateid=1GLqlCZ0Bsohg2g&currency=978&merchantid=774",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS"
}
CAMPO VALOR
merchantid id proporcionado por Sipay.
merchantname nombre del comercio proporcionado por Sipay.
uuid identificador para las solicitudes de Soporte de Sipay.
idrequest identificador único de la operación de auth. Utilizado para realizar devoluciones. Debe almacenarlo.
redirects.url url completa que deberá cargar en la webview, navegador o src de su iframe. Consulte sus plantillas.

Redirects.notpage

redirects.notpage Los datos que se recibiran son los siguientes:

{
  "operation.type": "redirects/payments/results",
  "merchantname": "SIPAYPLUS",
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "extradata": {
    "TransactionId": "76aecc22977cb0482c66f3a604036e94",
    "Reference": "1234"
  },
  "ResultDescription": "OPERACIÓN ACEPTADA",
  "Amount": "n/a",
  "notification.mode": "async",
  "notification.timestamp": 1460536344,
  "network.remoteip": "6.1.2.1",
  "Ticket": "160413103147705439",
  "ResultCode": "0",
  "merchantid": "1"
}
CAMPO VALOR
network.remoteip dirección IP del dispositivo que ha cargado la webview.
ResultCode código númerico del resultado de la operación.
ResultDescription descripción del resultado de la operación.
Ticket ticket enviado en la operación de petición de url de carga de la webview.
merchantid id proporcionado por Sipay.
merchantname nombre del comercio proporcionado por Sipay.
idrequest idrequest de la parte de autenticación a la hora de cargar la plantilla.
notification.timestamp unix timestamp de cuando se ha generado la notificación.
notification.mode modo de notificación.
extradata n formato JSON con información adicional de la operación: cardindex,TransactionId, etc .
Reference Campo de conciliación bancaria.

Venta con tarjeta + tokenización

Consulte con su comercial de Sipay para saber si tiene activado este servicio.

Esta característica de la integración es la que le permite almacenar los datos de tarjeta de sus clientes en nuestra bóveda segura. Gracias a la certificación PCI DSS de máximo nivel que Sipay posee sus clientes podrán estar tranquilos respecto a la protección de sus datos de tarjeta.

Con este servicio los datos de tarjeta de sus clientes solo viajarán por la red una única vez, por tanto no podrán ser capturados ni reutilizados después de este almacenamiento.

Como integrador, debe generar un token, con el que podrá efectuar todas las ventas que desee sin tener que volver a solicitarle los datos de tarjeta a su cliente.

Para poder hacer uso de este servicio, deberá integrar la Venta con tarjeta y tener en cuenta las siguientes indicaciones.

En la JSON REQUEST deberá enviar dos nuevos campos adicionales:

RECOMENDACIÓN DE SEGURIDAD DE LA NORMATIVA PCI DSS

Para minimizar el riesgo de seguridad implícito en el uso y almacenamiento de cardindex o conocido como token de la tarjeta se recomienda utilizar una combinación de cadenas y funciones que casi todos los lenguajes de programación poseen.

El objetivo es reducir al máximo la probabilidad de que un usuario malicioso pueda hacer el ejercicio de averiguar el número de tarjeta a partir del cardindex con ingeniería inversa.

Ejemplos recomendados para combinar cadenas de texto y aplicar un algoritmo de hash:

ID_USUARIO: 112
FECHA DEL ALTA DE TARJETA: 01/01/2015
UNIX_TIMESTAMP: 1420070400

Combinación: 11201/01/20151420070400
Aplicar función de HASH SHA1: 67f4d58f1bb3eacfadd2e9573991b37877afb290
tokenizations.cardindex: 67f4d58f1bb3eacfadd2e9573991b37877afb290

Nos devuelve un cardindex que imposibilita la resolución inversa del número de tarjeta. Además es importante que nadie conozca el algoritmo de generación de cardindex para que nadie pueda utilizar el cardindex de otro usuario sin que este lo tenga permitido.

Almacene en un lugar seguro su propio algoritmo de generación de cardindex y no lo distribuya ni lo comparta en entornos abiertos o poco seguros.

SE RECOMIENDA NO UTILIZAR ESTE MISMO EJEMPLO. CONSÚLTENOS SI NECESITA QUE LE AYUDEMOS CON SU PROPIO ALGORITMO NI GENERAR TOKENS A PARTIR DEL NÚMERO DE LA TARJETA COMO ÚNICO DATO EXCLUSIVAMENTE.

Los valores posibles para este nuevo campo son:

Autenticación

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de la venta basada en redirect/iframe.

HTTP Request

Example request

{
"apikey": "empty",
"resource": "iframe/v1/redirects/payments/cards",
"authtype": "sslclient",
"lang": "0",
"merchantid": "1",
"ticket": "8354283542",
"amount": "0000000010",
"currency": "978",
"redirects.templateid": "1GLqlCZ0Bsohg2g",
"redirects.extradata": "",
"redirects.dstpage": "",
"redirects.message": "",
"redirects.results_interactive": "",
"redirects.results_message": "",
"redirects.notpage": "",
"redirects.notmode": "",
"iframe.target": "_self",
"tokenizations.cardindex": "test1.token",
"tokenizations.checkmode": "mode1",
"reference": ""
}

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

CAMPO VALOR
apikey Clave identificatoría frente al Api.
resource Recurso al que se hace la petición.
authtype Metodo de autenticación frente a la conexión.
merchantid id proporcionado por Sipay.
ticket número de recibo de la venta proporcionado por el cliente.
amount importe a cobrar en el formato especifico, ver formatos.
currency código numérico de la moneda a utilizar, 978 para euro. Consulte a Sipay la activación de más monedas.
redirects.templateid identificador de la plantilla.Consulte a su integrador en Sipay para configurarla correctamente.
redirects.extradata información de libre uso para incluirla en las plantillas.Opcional.
redirects.dstpage URL completa de la página web del comercio donde se enviará el POST QueryString con los resultados de la operación. Consulte la referencia adicional más adelante.
redirects.message Mensaje de texto que aparecerá en las página de procesando pago.Opcional.
redirects.results_interactive true o false indicará si la web de resultados es interactiva o transitiva.Opcional.
redirects.results_message Mensaje de texto que aparecerá en la página de transición de resultados.Opcional.
redirects.notpage URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. Opcional.
redirects.notmode Modo de notificación. Consulte la referencia adicional más adelante. Opcional.
redirects.expiration Número de segundos de validez del enlace generado. Consulte la referencia adicional más adelante. Opcional.
iframe.target Valor _self o _parent para indicar el comportamiento de una plantilla adaptada para iframe. Por defecto siempre será _self.Opcional.
reference Campo de conciliación bancaria. Consulte la referencia adicional más adelante. Opcional.
redirects.notemail Se debe indicar una dirección de correo electrónica válida para enviar por email la notificación que recibiría en “redirects.notmode”.Opcional.
redirects.notemailformat Se debe indicar un valor para determinar el formato de correo electrónico de notificación que llegará al email “redirects.notemail”.Opcional.

Response

Example response

{
"resource": "iframe/v1/redirects/payments/cards",
"uuid": "ab108a7a-014c-11e6-ac37-000c292985e3",
"idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
"redirects.url": "https://sandbox.sipayecommerce.sipay.es:443/iframe/v1/redirects/payments/cards?lang=0&merchantname=SIPAYPLUS&idrequest=319E5FDEE3E0B0864C01223C1BC0CE0CE752AB4DDBD669107DE2A998909F1B86&redirects.templateid=1GLqlCZ0Bsohg2g&currency=978&merchantid=774",
"merchantid": "1",
"merchantname": "SIPAYPLUS"
}
CAMPO VALOR
merchantid id proporcionado por Sipay.
merchantname nombre del comercio proporcionado por Sipay.
uuid identificador para las solicitudes de Soporte de Sipay.
idrequest identificador único de la operación de auth. Utilizado para realizar devoluciones. Debe almacenarlo.
redirects.url url completa que deberá cargar en la webview, navegador o src de su iframe. Consulte sus plantillas.

Venta con una tarjeta tokenizada

Para ver su implementación dirigase a la sección API v.1/Tokenización en venta.

Devolución sin envío de datos de tarjeta

Esta llamada a nuestro API REST le permitirá realizar devoluciones a sus clientes sin solicitarles los datos de tarjeta y en referencia a una venta existente. Para ello es de suma importancia que haya almacenado previamente el idrequest generado en la petición de venta.

Autenticación

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de la devolución por Id. De la respuesta debe extraerse como único dato importante el idrequest.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request:

{
 "apikey": "empty",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "ticket": "8354283542",
  "amount": "0000000010",
  "currency": "978",
  "css_url": "empty",
  "dstpageid": "empty",
  "resource": "refunds"
}
CAMPO VALOR
apikey Clave identificatoría frente al Api.
resource Recurso al que se hace la petición.
authtype Metodo de autenticación frente a la conexión.
merchantid id proporcionado por Sipay.
ticket número de recibo de la venta proporcionado por el cliente.
amount importe para la devolución en el formato especifico, ver formatos.

Response

Example response:

{
"idrefund": "1b7f00fef63d588702e5668e8d4adbfe",
"resource": "refunds",
"uuid": "e844c9fa-00cb-11e6-ac37-000c292985e3",
"merchantname": "SIPAYPLUS",
"merchantid": "1"
}

CAMPO VALOR
idrefund id request proporcionado por Sipay.
merchantid id proporcionado por Sipay.
merchantname nombre del comercio proporcionado por Sipay.









Devolución por canal abierto

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/refundsbyid

Devolución por canal abierto SSL con certificado servidor y sin envío de datos sensibles.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/refundsbyid

Referencia adicional sobre campos:

Request

Example request:

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "ticket": "160413103147705439",
  "merchantname": "SIPAYPLUS",
  "currency": "978",
  "amount": "0000000010",
  "idoriginalrequest": "76aecc22977cb0482c66f3a604036e94",
  "reference": ""
}
CAMPO DESCRIPCIÓN
idrequest id request (a.k.a idrefund) proporcionado por Sipay en la consulta anterior.
merchantid id proporcionado por Sipay.
ticket número de recibo de la venta proporcionado por el cliente.
merchantname nombre del comercio proporcionado por Sipay.
amount importe para la devolución en el formato especifico, ver formatos.
idoriginalrequest TransactionId que fue generado en la petición de venta. Es importante tener almacenado este id en el momento de la venta para poder realizar devoluciones por Id.
reference Campo de conciliación bancaria. Consulte la referencia adicional más adelante.. Opcional.

Response

Example response:

{
  "ResultCode": "",
  "ResultDescription": "",
  "TransactionId": "76aecc22977cb0482c66f3a604036e94",
  "TicketNumber": "",
  "OperationType": "",
  "Authorizator": "",
  "Amount": "0000000010",
  "ApprovalCode": "",
  "SequenceNumber": "",
  "merchantid": "1",
  "merchantname": "",
  "Reference": "",
  "uuid": ""
}
CAMPO DESCRIPCIÓN
ResultCode Código que devuelve la entidad identificando el estado de la operación (Anexo 2).
ResultDescription Descripción detallada del resultado (ResultCode).
TransactionId Uso interno y necesario para hacer devoluciones y cancelaciones.
TicketNumber Número de Ticket generado por el cliente.
OperationType Tipo de transacción (venta, devolución, etc.).
Authorizator Entidad autorizadora de la operación.
Amount Formato numérico que representa el importe (Ejemplo: 12.47 para un cantidad de 12.47 euros). En este caso la representación es en formato natural.
ApprovalCode Número de autorización de la operación, asignado por la entidad.
SequenceNumber Número identificativo único de cada operación generado por la pasarela de pago.
Reference Campo de conciliación bancaria. Opcional.

Personalización de las plantillas: básica y avanzada

El sistema de plantillas de Sipay permite trabajar en dos modos: básico y avanzado. El modo básico permite desplegar la solución de comercio electrónico en 24-48h configurando una serie de parámetros como logo, color de los bordes, etc … Solicite nuestro documento de especificaciones de plantilla básicas y le asesoraremos para alcanzar el plazo. En el modo avanzado, apto para desarrolladores, se ofrecerá un documento de especificaciones permitiendo al comercio construir una plantilla con el 95% de la personalización posible. En ambos sistemas de plantillas existe la misma estructura de transiciones de pantalla. Este diagrama trata de ilustrar el escenario de plantillas:

alt text

Descripción de campos

Ejemplo de los datos que llegaran a redirects.dstpage:

Amount=0%2C10&ApprovalCode=010203&Authorizator=Entidad%20Bancaria&OperationType=Venta&ResultCode=0&ResultDescription=OPERACION%20ACEPTADA&SequenceNumber=394028&TransactionId=76aecc22977cb0482c66f3a604036e94&ticket=160413103147705439

Ejemplo de los datos que llegaran a redirects.notpage:

{
  "operation.type": "redirects/payments/results",
  "merchantname": "SIPAYPLUS",
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "extradata": {
    "expiration": "4912",
    "Reference": "1234",
    "pan": "4918 12 ****2830",
    "ResultCode": "0",
    "cardholdername": "",
    "TransactionId": "76aecc22977cb0482c66f3a604036e94",
    "ResultDescription": "",
    "cardindex": "8e296a067a37563370ded05f5a3bf3ec"
  },
  "ResultDescription": "OPERACIÓN ACEPTADA",
  "Amount": "n/a",
  "notification.mode": "async",
  "notification.timestamp": 1460536658,
  "network.remoteip": "6.1.2.1",
  "Ticket": "160413103711882120",
  "ResultCode": "0",
  "merchantid": "1"
}
Campo Descripción
ResultDescription Descripción detallada del resultado (ResultCode).
redirects.dstpage URL completa de la página donde se tratarán los resultados de la operación. Esta página deberá aceptar un POST con un mensaje en formato QueryString. Se recibirán los siguientes campos:
ResultCode - código numérico del resultado de la operación.
ResultDescription - descripción del ResultCode.
TransactionId - campo importante para hacer cancelaciones.
Ticket - Identificador de ticket utilizado en la petición inicial.
OperationType - códigos de uso interno.
Authorizator - códigos de uso interno.
Amount - importe en formato “human readable”.
ApprovalCode - códigos de uso interno.
SenceNumber - códigos de uso interno.
Es conveniente que estos datos sean almacenados un tiempo prudencial para poder utilizarlos en seguimiento y análisis de operaciones.
redirects.notpage URL completa de un servicio web del cliente donde se recibirá una notificación de los resultados de la operación. De esta forma se asegura que aunque el dispositivo tenga un error en el tratamiento de la operación, el cliente recibirá una notificación si la operación se ha completado en segundo plano. Es obligatorio que este campo sea enviado en el JSON, pero si contiene una cadena vacía no se activará ninguna notificación. Los puertos de salida permitidos son 443/tcp, 80/tcp, 8443/tcp, 8080/tcp, 8089/tcp tanto HTTP como HTTPS.
redirects.notmode Modo de notificación. Existen dos modos.
Sync: La notificación se enviará al servidor antes de devolver el resultado al dispositivo que ha cargado la webview.
Async: La notificación se enviará al servidor inmediatamente después de devolver el resultado al dispositivo que ha cargado la webview.
redirects.expiration Número de segundos de validez del enlace generado. Si no especifica ningún valor, por defecto tendrá un validez de 300 segundos. Como máximo podrá especificar hasta 2592000 (30 días)
reference Campo de conciliación bancaria. La longitud mínima es de 1 dígito y la máxima de 12. Los 4 primeros dígitos siempre tienen que ser numéricos.
redirects.notemail Se debe indicar una dirección de correo electrónica válida.
redirects.notemailformat Elija uno de estos valores posibles: nvp, line, json

Referencia adicional sobre campos:

redirects.notemailformat

Los valores posibles para este nuevo campo son:

operation.type=redirect/payments/results;merchantid=1;merchantname=SIPAYPLUS;idrequest=A383328934F4DFFFCE9A4243C11F9A7DBEBAF8186E02092BEAB8428715A23717;network.remoteip=1.1.1.1;ResultCode=0;ResultDescription=OPERACIÓN ACEPTADA;Amount=n/a;Ticket=160308214925;notification.mode=sync;notification.timestamp=1457470201;TransactionId=000024328446238789842;Reference=1234;

{"operation.type": "redirect/payments/results", "merchantname": "SIPAYPLUS", "idrequest": "A383328934F4DFFFCE9A4243C11F9A7DA09F5F4E800FDBA0E14DED7226BB9F4D", "extradata": {"TransactionId": "000024328446238789843", "Reference": "1234"}, "ResultDescription": "OPERACIÓN ACEPTADA", "Amount": "n/a", "notification.mode": "sync", "notification.timestamp": 1457470226, "network.remoteip": "1.1.1.1", "Ticket": "160308215010", "ResultCode": "0", "merchantid": "1"}

Formatos

Campo Formato
[amount] Importe de Venta. Importe de la operación con 10 dígitos numéricos, dónde los dos últimos dígitos representan a los céntimos.
Ej.: 1€ -> 0000000100
      2,25€-> 0000000225
[ticket] Cadena que identifique el recibo de la venta realizada por el cliente.

Direct Post - v.1

Este tipo de integración es recomendable para aquellos comercios que deseen integrar de forma rápida siguiendo el estándar de formularios HTTP POST. Este modo de integración permite autenticar al titular con las tecnologías 3DSecure y MasterCard SecureCode y también puede funcionar para comercio no autenticado.

Sin embargo las exigencias de PCI DSS frente a este tipo de integración pueden requerirle ciertos requerimientos. Hable con nosotros para conocer el detalle para su comercio.

El TPV virtual debe ser elaborado desde cero en la página web del cliente pudiendo personalizar todos los campos, formatos y validación de datos.

Diagrama que resumen los pasos necesarios para la integración y los componentes que el cliente necesita configurar para su puesta en marcha:

alt text

Venta

Autenticación

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de la venta por formulario cifrado. De la respuesta debe extraerse como único dato importante el idrequest.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request:

{ 
  "apikey": "empty",
  "authtype": "sslclient",
  "resource": "iframe/directpost",
  "lang": "0",
  "merchantid": "774",
  "ticket": "8354283542",
  "amount": "0000000010",
  "currency": "978",
  "directpost.dstpage": "https://sandbox.sipayecommerce.sipay.es:443/demo/v2/resultados",
  "directpost.notpage": "7.0.1.5",
  "directpost.notmode": "sync" 
}
CAMPO VALOR
apikey Clave identificatoría frente al Api.
resource Recurso al que se hace la petición.
authtype Metodo de autenticación frente a la conexión.
merchantid id proporcionado por Sipay.
ticket número de recibo de la venta proporcionado por el cliente.
amount importe para la venta en el formato especifico, ver formatos.
directpost.dstpage URL completa de la página web del comercio donde se enviará el POST QueryString con los resultados de la operación. Consulte la referencia adicional más adelante.
directpost.notpage URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante . Opcional.
directpost.notmode Modo de notificación. Consulte la referencia adicional más adelante. Opcional.

Response

Example response:

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "iframe/directpost",
  "uuid": "0fd805ce-015b-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "774"
}
CAMPO VALOR
idrequest id request proporcionado por Sipay.
uuid identificador para soporte.
merchantid id proporcionado por Sipay.
merchantname nombre del comercio proporcionado por Sipay.









Venta

curl -X POST -H "Content-Type: multipart/form-data"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem\
-F 'pan=6712009000000205;type=text'\
-F 'ccvv="";type=text'\
-F 'cardholder=John Doe;type=text'\
-F 'expiration=1712;type=text'\
-F 'idrequest=319E5FDEE3E0B0864C01223C1BC0CE0CFA1B226FFD3279F09B60DD3F16EEECC8;type=hidden'\
-F 'cardtype=0;type=hidden'\
-F 'message="Redirecting ... wait please";type=hidden'\
https://sandbox.sipayecommerce.sipay.es/iframe/v1/directpost/receiver

URL de envío del POST

https://{environment}.sipayecommerce.sipay.es/iframe/v1/directpost/receiver

Referencia adicional sobre campos:

Campos del formulario

Ejemplo de código HTML para el formulario

<html>
  <head>
    <title>Sipay - Formulario cifrado</title>
  </head>
  <body>
    <form id='form1' method='post' action='https://sandbox.sipayecommerce.sipay.es/iframe/v1/directpost/receiver'>
      <input type='text' name='pan' value='value'>
      <input type='text' name='ccvv' value='value'>
      <input type='text' name='cardholder' value='value'>
      <input type='text' name='expiration' value='value'>
      <input type='hidden' name='idrequest' value='idrequest obtenido en la consulta anterior'>
      <input type='hidden' name='cardtype' value='0'>
      <input type='hidden' name='message' value='Redirecting ... wait please'>
      <input type='submit' value='Pagar'>
    </form>
  </body>
</html> 
Identificador del campo Descripción Valores
pan Número de la tarjeta de pago. 16 dígitos sin separadores.
ccvvv CVV2, código de validación de la tarjeta del reverso de la misma. 3 dígitos sin separadores.
cardholder Nombre completo del titular de la tarjeta. Nombre y apellidos.
expiration Fecha de caducidad. Formato: YYMM
idrequest Cadena recibida en la operación de autenticación. Ver paso anterior. Cadena de longitud fija.
cardtype Tipo de tarjeta. 0
message Mensaje de la primera página de transición. Por defecto: “Redirecting … wait please”.

Dstpage

directpost.dstpage
Los datos que se recibiran son los siguientes:

{
  "Amount": "1.21",
  "ApprovalCode": "039343",
  "Authorizator": "Entidad Bancaria",
  "OperationType": "Venta",
  "ResultCode": "0",
  "ResultDescription": "OPERACION ACEPTADA",
  "SequenceNumber": "394039",
  "TicketNumber": "test1",
  "TransactionId": "76aecc22977cb0482c66f3a604036e94"
}
CAMPO DESCRIPCIÓN
Amount Formato numérico que representa el importe (Ejemplo: 12.47 para un cantidad de 12.47 euros). En este caso la representación es en formato natural.
ApprovalCode Número de autorización de la operación, asignado por la entidad.
Authorizator Entidad autorizadora de la operación.
OperationType Tipo de transacción (venta, devolución, etc.).
ResultCode Código que devuelve la entidad identificando el estado de la operación (Anexo 4).
ResultDescription Descripción detallada del resultado (ResultCode).
SequenceNumber Número identificativo único de cada operación generado por la pasarela de pago.
TicketNumber Número de Ticket generado por el cliente.
TrasactionId Uso interno y necesario para hacer devoluciones/cancelaciones.

Notpage

directpost.notpage
Los datos que se recibiran son los siguientes:

{
  "operation.type": "directpost/results",
  "merchantname": "SIPAYPLUS",
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "extradata": {
    "TransactionId": "76aecc22977cb0482c66f3a604036e94"
  },
  "ResultDescription": "OPERACION ACEPTADA",
  "Amount": "n/a",
  "notification.mode": "sync",
  "notification.timestamp": 1460543259,
  "network.remoteip": "62.14.244.189",
  "Ticket": "8354283542",
  "ResultCode": "0",
  "merchantid": "774"
}
CAMPO DESCRIPCIÓN
OperationType Tipo de transacción (venta, devolución, etc.).
merchantname nombre del comercio proporcionado por Sipay.
idrequest idrequest de la parte de autenticación a la hora de cargar la plantilla.
extradata en formato JSON con información adicional de la operación: cardindex,TransactionId, etc…
ResultDescription Descripción detallada del resultado (ResultCode).
Amount Formato numérico que representa el importe (Ejemplo: 12.47 para un cantidad de 12.47 euros). En este caso la representación es en formato natural.
notification.mode modo de notificación.
notification.timestamp unix timestamp de cuando se ha generado la notificación.
network.remoteip dirección IP del dispositivo que ha cargado la webview.
Ticket ticket enviado en la operación de petición de url de carga de la webview.
ResultCode código númerico del resultado de la operación.
merchantid id proporcionado por Sipay.

Devolución

Ver Devolución sin envío de datos de tarjeta Se trata de la misma implementación.

Formatos

CAMPO FORMATO
[amount] Importe de Venta. Importe de la operación con 10 dígitos numéricos, dónde los dos últimos dígitos representan a los céntimos.
Ej.: 1€ -> 0000000100
      2,25€-> 0000000225
[ticket] Cadena que identifique el recibo de la venta realizada por el cliente.
[pan] Es el número de la tarjeta, los cuatro grupos de cuatro cifras sin los guiones. 16 dígitos.
[expiration] Formato de cuatro dígitos donde los dos primeros indican el año (14 para el 2014) y los dos últimos dígitos indican el mes (e.g. 01 para Enero).

API v.1

Introduccion

Este tipo de integración es recomendable para aquellos comercios que deseen integrar de la forma más flexible siguiendo el estándar de servicios web REST y mensajería JSON. Este modo de integración no permite autenticar al titular con las tecnologías 3DSecure y MasterCard. Por tanto su banco debe permitirle trabajar en modo comercio no seguro / comercio no autenticado.

Como comercio deberá tener en cuenta las exigencias de PCI DSS respecto a esta modalidad de integración.

Se recomienda esta integración para todos los casos posibles y especialmente escenarios donde participen dispositivos móviles o cualquier dispositivo con acceso a Internet.

Diagrama que resumen los pasos necesarios para la integración y los componentes que el cliente necesita configurar para su puesta en marcha:

alt text

Siempre se debe solicitar un idrequest, idrefund… (tipo de operación auth [SSLAuth Engine]) por cada petición. Si se trata de un reintento por un control de errores, debe volver a solicitarse dicho ID auth.

Venta

Importante: Consulte con Sipay el nivel de exigencia PCI DSS para el comercio antes de implementar esta llamada de API.

Autenticación

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de la venta basada en TPV.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request:

{
  "authtype": "sslclient",
  "resource": "payments",
  "lang": "0",
  "merchantid": "1",
  "ticket": "8354283542",
  "amount": "0000000010",
  "currency": "978",
  "api.notpage": "",
  "api.notmode": "sync"  
}
Campo Tipo Valor
merchantid string Id proporcionado por Sipay.
ticket string Número de recibo de la venta proporcionado por el clientez.
amount string Importe a cobrar en el formato especifico, ver formatos.
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. Opcional.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.

Response

Example response:

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "payments",
  "uuid": "f7126ba2-0163-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idrequest string Id request proporcionado por Sipay en la consulta anterior.
uuid string Identificador para soporte.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.









Venta por canal abierto

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/payments

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/payments

Referencia adicional sobre campos:

Request

Example request

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "ticket": "8354283542",
  "amount": "0000000010",
  "merchantname": "SIPAYPLUS",
  "currency": "978",
  "pan": "4242424242424242",
  "cvv": "",
  "expiration": "4912",
  "cardholdername": "john doe",
  "reference": "",
  "customfield1": "",
  "customfield2": "",
  "installment": ""
}
Campo Tipo Valor
idrequest string Id request proporcionado por Sipay en la consulta anterior.
merchantid string Id proporcionado por Sipay.
ticket string Número de recibo de la venta proporcionado por el cliente.
amount string Importe a cobrar en el formato especifico, ver formatos.
merchantname string Nombre del comercio proporcionado por sipay.
pan string Numero de la tarjeta.
cvv string Codigo de seguridad de la tarjeta.
expiration date Fecha de expiración de la tarjeta.
reference string Campo de conciliación bancaria. Opcional
customfield1 string Campo libre alfanumérico de hasta 255 caracteres. Podrá incluir un valor libre que le permitirá identificar en un listado de operaciones. Opcional
customfield2 string Campo libre alfanumérico de hasta 255 caracteres. Podrá incluir un valor libre que le permitirá identificar en un listado de operaciones. Opcional
installment string Número de cuotas en los cuales se va a dividir el pago. Debe ser un número natural (ℕ) de dos cifras como máximo. Opcional

Response

Example response

{
  "ApprovalCode": "010264",
  "merchantname": "SIPAYPLUS",
  "TicketNumber": "test1",
  "ResultDescription": "OPERACION ACEPTADA",
  "currency": "EUR",
  "Amount": "1.21",
  "SequenceNumber": "394062",
  "OperationType": "Venta",
  "TransactionId": "76aecc22977cb0482c66f3a604036e94",
  "Authorizator": "Entidad Bancaria",
  "uuid": "1b448d92-0165-11e6-ac37-000c292985e3",
  "Reference": "",
  "ResultCode": "0",
  "merchantid": "1"
}
Campo Tipo Valor
resultcode string Código de estado de la operación.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
uuid string Identificador para soporte.

Devoluciones

Importante: Consulte con Sipay el nivel de exigencia PCI DSS para el comercio antes de implementar esta llamada de API.

Dependiendo del protocolo con el que trabaje su banco, esta llamada deberá contener el número de tarjeta completo y CVV o podrá realizarla si en esta información. Consulte a Sipay.

En el caso de que no necesite enviar los datos de la tarjeta, deberá enviar los valores ficticios siguientes:
pan: 0000000000000000
expiration: 0000

Es importante que envíe el mismo número de ticket utilizado en la venta para poder realizar la devolución. Si no lo hace obtendrá un error.

Se pueden realizar devoluciones parciales siempre y cuando no supere la suma de la cantidad realizada en la venta y correspondiente al ticket de la venta.

Autenticación

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de realizar devoluciones.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Request

Example request

{
  "apikey": "empty",
  "authtype": "sslclient",
  "resource": "refunds",
  "lang": "0",
  "merchantid": "1",
  "ticket": "8354283542",
  "amount": "0000000010",
  "currency": "978",
  "api.notpage": "",
  "api.notmode": "sync",
  "reference": ""
}
Campo Tipo Valor
apikey string Clave identificatoría frente al Api.
resource string Recurso al que se hace la petición.
authtype string Metodo de autenticación frente a la conexión.
merchantid string Id proporcionado por Sipay.
ticket string Número de recibo de la venta proporcionado por el cliente.
amount string Importe a cobrar en el formato especifico, ver formatos.
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. Opcional.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.
reference string Campo de conciliación bancaria. Consulte la referencia adicional más adelante. Opcional.

Response

Example response

{
  "idrefund": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "refunds",
  "uuid": "ce7a5482-0165-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idrefund string Id request proporcionado por Sipay.
uuid string Identificador para soporte.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.









Devolución en la misma sesión

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/refunds

Devolución en la misma sesión contable por canal abierto SSL con certificado servidor

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/refunds

Request

Example request

{
  "idrefund": "1b7f00fef63d588702e5668e8d4adbfe",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "ticket": "8354283542",
  "merchantname": "SIPAYPLUS",
  "currency": "978",
  "pan": "4242424242424242",
  "expiration": "4912",
  "amount": "0000000010",
  "transaction_id": ""
}
Campo Tipo Valor
idrefund string Id devolución proporcionado por Sipay en la consulta anterior.
merchantid string Id proporcionado por Sipay.
ticket string Número de recibo de la venta proporcionado por el cliente.
merchantname string Nombre del comercio proporcionado por sipay.
pan string Numero de la tarjeta.
expiration date Fecha de expiración de la tarjeta.
amount string Importe a cobrar en el formato especifico, ver formatos.
reference string Campo de conciliación bancaria. Opcional
transaction_id string Identificador de la venta original. Solo sera necesario en caso de tener activada la devolución con comprobación. Consulte la referencia adicional más adelante. Opcional.

Response

Example response

{
  "ApprovalCode": "394066",
  "merchantname": "SIPAYPLUS",
  "TicketNumber": "test1",
  "ResultDescription": "OPERACION ACEPTADA, CODIGO 900",
  "currency": "",
  "Amount": "1.21",
  "SequenceNumber": "394066",
  "OperationType": "Devolucion",
  "TransactionId": "76aecc22977cb0482c66f3a604036e94",
  "Authorizator": "Entidad Bancaria",
  "uuid": "294f86e8-0166-11e6-ac37-000c292985e3",
  "Reference": "",
  "ResultCode": "0",
  "merchantid": "1"
}
Campo Tipo Valor
resultcode string Código de estado de la operación.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
uuid string Identificador para soporte.

Cancelaciones

Este tipo de operación siempre debe ser realizada sobre una venta o devolución. Solo podrá ser ejecutada una vez y cancelará la operación de venta/devolución correspondiente.

Para poder hacer cancelaciones, deben reunirse estas dos condiciones:

Autenticación

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de realizar devoluciones.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Atributos

Request

Example request

{
  "apikey": "empty",
  "authtype": "sslclient",
  "resource": "cancelations",
  "lang": "0",
  "merchantid": "1",
  "ticket": "empty",
  "amount": "0000000010",
  "currency": "978",
  "api.notpage": "",
  "api.notmode": ""
}
Campo Tipo Valor
apikey string Clave identificatoría frente al Api.
resource string Recurso al que se hace la petición.
authtype string Metodo de autenticación frente a la conexión.
merchantid string Id proporcionado por Sipay.
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. Opcional.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.

Response

Example response

{
  "idcancelation": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "cancelations",
  "uuid": "d116083e-0166-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idcancelation string Id request proporcionado por Sipay.
uuid string Identificador para soporte.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.









Cancelación en la misma sesión

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/cancelations

Cancelación en la misma sesión contable por canal abierto SSL con certificado servidor y habiendo almacenado el TransactionId de una venta/devolución previa.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/cancelations

Referencia adicional sobre campos:

Request

Example request

{
  "idcancelation": "1b7f00fef63d588702e5668e8d4adbfe",
  "authtype": "sslclient",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS",
  "transactionid": "76aecc22977cb0482c66f3a604036e94"
}
Campo Tipo Valor
idcancelation string Id request proporcionado por Sipay en la consulta anterior.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
transactionid string Valor del atributo TransactionId recogido en la respuesta de una venta o una devolución.

Response

Example response

{
  "uuid": "970dae14-0542-11e6-ac37-000c292985e3",
  "ResultDescription": "ANULACION PROCESADA CORRECTAMENTE",
  "merchantid": "1",
  "ResultCode": "0",
  "TransactionId": "76aecc22977cb0482c66f3a604036e94",
  "merchantname": "SIPAYPLUS"
}
Campo Tipo Valor
resultcode string Código de estado de la operación.
resultdescription string Descripción del estado de la operación.
transactionID string TransactionId enviado.
uuid string Identificador para soporte.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.

Tokenización

Importante: Consulte con Sipay el nivel de exigencia PCI DSS para el comercio antes de implementar estas llamadas de API.

Autenticación

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de almacenar en bóveda

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request

{
  "apikey": "empty",
  "authtype": "sslclient",
  "resource": "tokenizations/storages",
  "lang": "0",
  "merchantid": "1",
  "ticket": "empty",
  "amount": "empty",
  "currency": "empty"
}
Campo Tipo Valor
apikey string Clave identificatoría frente al Api.
resource string Recurso al que se hace la petición.
authtype string Metodo de autenticación frente a la conexión.
merchantid string Id proporcionado por Sipay.

Response

Example response

{
  "idstorage": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "tokenizations/storages",
  "uuid": "9634b8a6-0183-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idstorage string Id storage proporcionado por Sipay.
uuid string Identificador para soporte.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.









ALTA: Almacenamiento de la tarjeta.

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/storages

El objetivo es que en los pagos recurrentes no se vuelva a enviar datos sensibles. El campo cardindex será el futuro identificador de tarjeta. Es un campo alfanumérico de hasta 255 caracteres que deberá almacenar el cliente para futuras operaciones. Siempre que se ejecute una operación alta de tarjeta con un cardindex existente, se reemplazará automáticamente.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/storages

Referencia adicional sobre campos:

Request

Example request

{
  "apikey": "empty",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "merchantname": "",
  "idstorage": "1b7f00fef63d588702e5668e8d4adbfe",
  "pan": "número de tarjeta",
  "expiration": "yymm",
  "cardholdername": "titular de tarjeta ",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "tokenizations.checkmode": "",
  "tokenizations.ticket": ""
}
Campo Tipo Valor
apikey string Clave identificatoría frente al Api.
authtype string Metodo de autenticación frente a la conexión.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
idstorage string Id request proporcionado por Sipay en la consulta anterior.
pan string Numero de la tarjeta.
expiration string Fecha de expiración de la tarjeta.
cardholdername string Titular de la tarjeta.
cardindex string Id de la tarjeta.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. Opcional.
tokenizations.checkmode string Modo de chequeo de la tarjeta. Consulte la referencia adicional más adelante. Opcional.
tokenizations.ticket string Ticket que se reflejará en el chequeo de la tarjeta. Consulte la referencia adicional más adelante. Opcional.

Response

Example response

{
  "merchantname": "SIPAYPLUS",
  "uuid": "384a538a-0184-11e6-ac37-000c292985e3",
  "ResultDescription": "",
  "storage_operation": "create",
  "ResultCode": "0",
  "merchantid": "1",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec"
}
Campo Tipo Valor
merchantname string Nombre del comercio proporcionado por sipay.
uuid string Identificador para soporte.
resultcode string Código de estado de la operación.
merchantid string. Id proporcionado por Sipay
cardindex string Id de la tarjeta.









BAJA: Borrado de la tarjeta.

curl -X DELETE -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/storages

HTTP Request

DELETE https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/storages

Referencia adicional sobre campos:

Request

Example request

{
  "apikey": "empty",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "idstorage": "1b7f00fef63d588702e5668e8d4adbfe"
}
Campo Tipo Valor
apikey string Clave identificatoría frente al Api.
authtype string Metodo de autenticación frente a la conexión.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
cardindex string Id de la tarjeta.
idstorage string Id proporcionado en la autenticación.

Response

Example response

{
  "merchantname": "SIPAYPLUS",
  "uuid": "b095a70e-0184-11e6-ac37-000c292985e3",
  "ResultDescription": "",
  "storage_operation": "delete",
  "ResultCode": "0",
  "merchantid": "1",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec"
}
Campo Tipo Valor
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
resultcode string Código de estado de la operación.
resultdescription string Descripcion del estado de la operación.
cardindex string Id de la tarjeta.









CONSULTA: Consulta de la tarjeta

curl -X GET\
-H "Accept: application/json"\
-H "Content-Type: Application/json"\
-H "X-Sipay-API-v1-idstorage: 319E5FDEE3E0B0864C01223C1BC0CE0C8D1B5E04FE9DD622D0D9BD7926F31DC2"\
-H "X-Sipay-API-v1-merchantid: 774"\
-H "X-Sipay-API-v1-merchantname: SIPAYPLUS"\
-H "X-Sipay-API-v1-authtype: sslclient"\
-H "X-Sipay-API-v1-lang: 0"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem\
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/storages/1

HTTP headers

X-Sipay-API-v1-idstorage: <id proporcionado en la autenticacion>
X-Sipay-API-v1-merchantid: <id proporcionado por Sipay>
X-Sipay-API-v1-merchantname: <nombre del comercio proporcionado por Sipay>
X-Sipay-API-v1-authtype: sslclient
X-Sipay-API-v1-lang: 0

Consulta de la tarjeta con los datos sensibles enmascarados. El índice de la tarjeta a consultar está incluido en la URL (ver URL REST) y en este caso se tienen que enviar cabeceras HTTP de tipo X para el resto de datos.
e.g.
PAN: 1234 **** **** 1234
Expiration: 11/12
Ver posibles usos1

1Un posible uso de la consulta de la tarjeta de la bóveda (tokenizations) sería revisar la fecha de la caducidad para no enviar nuevas transacciones con esa tarjeta si está caducada. Normalmente habría que hacer la llamada de borrado de tarjeta (tokenizations DELETE). También podría consultarse la fecha de caducidad para alertas a los usuarios de que su tarjeta caducará en breve y que forzar a actualizar los datos. En caso de requerir el cliente una funcionalidad diferente esta deberá ser analizada y valorada por Sipay

HTTP Request

Revisar como hacen en el ejemplo las referencias

GET https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/storages/<cardindex>

Parametros

Campo Tipo Valor
cardindex string Id de la tarjeta.

Referencia adicional sobre campos:

Response

Example response

{
  "cardholdername": "",
  "storage_operation": "query",
  "uuid": "eef753aa-0187-11e6-ac37-000c292985e3",
  "pan": "6712 00 ****0205",
  "ResultCode": "0",
  "expiration": "4912",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "merchantid": "1",
  "ResultDescription": "CONSULTA REALIZADA",
  "merchantname": "SIPAYPLUS"
}
Campo Tipo Valor
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
uuid string Identificador para soporte.
pan string Pan enmascarado.
expiration date Fecha de expiración de la tarjeta.
cardindex string Indice de la tarjeta.
resultcode string Código de estado de la operación.
ResultDescription string Descripción del estado de la operación.









ACTUALIZACIÓN: Actualizar datos de la tarjeta

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/storages

HTTP Request

PUT https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/storages

Referencia adicional sobre campos:

Request

Example request

{
  "apikey": "empty",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS",
  "idstorage": "1b7f00fef63d588702e5668e8d4adbfe",
  "pan": "4242424242424242",
  "expiration": "4912",
  "cardholdername": "Mike",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec"
}
Campo Tipo Valor
apikey string Clave identificatoría frente al Api.
authtype string Metodo de autenticación frente a la conexión.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
cardindex string Id de tarjeta.
expiration string Nueva fecha de expiración.
idstorage string Id proporcionado por la autenticación.

Response

Example response

{
  "merchantname": "SIPAYPLUS",
  "uuid": "384a538a-0184-11e6-ac37-000c292985e3",
  "ResultDescription": "",
  "storage_operation": "create",
  "ResultCode": "0",
  "merchantid": "1",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec"
}
Campo Tipo Valor
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
uuid string Identificador para soporte.
resultcode string Código de estado de la operación.
ResultDescription string Descripción del estado de la operación.
cardindex string Id de tarjeta.

Tokenización en venta

Esta llamada se utilizará para hacer ventas con tarjetas almacenadas previamente, indicando el cardindex. Esta llamada se puede utilizar para comercios configurados con CES (3DSecure, MSC, …) y con CES desactivado.

Autenticación

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de almacenar en bóveda.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request

{
  "authtype": "sslclient",
  "resource": "tokenizations/payments",
  "lang": "0",
  "merchantid": "1",
  "amount": "0000000010",
  "ticket": "8354283542",
  "currency": "978",
  "api.notpage": "",
  "api.notmode": "",
  "api.dstpage": "",
  "reference": ""
}
Campo Tipo Valor
merchantid string Id proporcionado por Sipay.
amount string Importe a cobrar en el formato especifico, ver formatos.
ticket string Número de recibo de la venta proporcionado por el cliente.
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. Opcional.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.
api.dstpage string URL completa de la página web del comercio donde se enviará el POST QueryString con los resultados de la operación. Consulte la referencia adicional más adelante.

Response

Example response

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "tokenizations/payments",
  "uuid": "2010437e-018e-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idrequest string Id proporcionado por Sipay.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
uuid string Identificador para soporte .









Venta

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/payments

HTTP request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/payments

Referencia adicional sobre campos:

Request

Example request

{
  "authtype": "sslclient",
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS",
  "amount": "0000000010",
  "ticket": "8354283542",
  "currency": "978",
  "lang": "0",
  "reference": "",
}
Campo Tipo Valor
idrequest string Id proporcionado en la autenticación.
cardindex string Id de tarjeta.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
amount string Importe a cobrar en el formato especifico, ver formatos.
ticket string Número de recibo de la venta proporcionado por el cliente.
reference string Campo de conciliación bancaria. Opcional

Response CES desactivado

Example response

{
  "ApprovalCode": null,
  "merchantname": "SIPAYPLUS",
  "TicketNumber": "test1",
  "ResultDescription": "NO SE HA PODIDO TRAMITAR LA OPERACION, FALTAN DATOS DE LA TARJETA",
  "currency": null,
  "Amount": null,
  "SequenceNumber": null,
  "OperationType": null,
  "TransactionId": "76aecc22977cb0482c66f3a604036e94",
  "Authorizator": null,
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "uuid": "9f779de2-018e-11e6-ac37-000c292985e3",
  "Reference": "",
  "ResultCode": "-1001",
  "merchantid": "1"
}
Campo Tipo Valor
ResultCode string Código de estado de la operación.
ResultDescription Descripción detallada del resultado (ResultCode).
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
uuid string Identificador para soporte.
TransactionId Uso interno y necesario para hacer cancelaciones/devoluciones.
TicketNumber Número de Ticket generado por el cliente.
OperationType Tipo de transacción (venta, devolución, etc.)
Authorizator Entidad autorizadora de la operación.
Amount Formato numérico que representa el importe (Ejemplo: 12.47 para un cantidad de 12.47 euros). En este caso la representación es en formato natural.
ApprovalCode Número de autorización de la operación, asignado por la entidad.
SequenceNumber Número identificativo único de cada operación generado por la pasarela de pago.
reference Campo de conciliación bancaria. La longitud mínima es de 1 dígito y la máxima de 12. Los 4 primeros dígitos siempre tienen que ser numéricos.

Response CES (3DSecure, MSC, …)

Example response

{
  "merchantname": "SIPAYPLUS",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "uuid": "9f779de2-018e-11e6-ac37-000c292985e3",
  "ResultCode": "8",
  "merchantid": "1",
  "url": "https://sandbox.sipayecommerce.sipay.es/iframe/v1/tokenization/secure/transition?idrequest=1b7f00fef63d588702e5668e8d4adbfe"
}
Campo Tipo Valor
ResultCode string Recibirá el código 8 en el caso de que su comercio opere en CES.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
uuid string Identificador para soporte.
url string URL que deberá presentar en el navegador de su cliente para realizar la transacción CES. Es imprescindible haber indicado un valor de ‘dstpage’ en la petición de auth

Recomendación de seguridad

NORMATIVA PCI DSS:
Para minimizar el riesgo de seguridad implícito en el uso y almacenamiento de cardindex o conocido como token de la tarjeta se recomienda utilizar una combinación de cadenas y funciones que casi todos los lenguajes de programación poseen.

El objetivo es reducir al máximo la probabilidad de que un usuario malicioso pueda hacer el ejercicio de averiguar el número de tarjeta a partir del cardindex con ingeniería inversa.

Ejemplos recomendados para combinar cadenas de texto y aplicar un algoritmo de hash:

ID_USUARIO: 112
FECHA DEL ALTA DE TARJETA: 01/01/2015
UNIX_TIMESTAMP: 1420070400
Combinación: 11201/01/20151420070400
Aplicar función de HASH SHA1: 67f4d58f1bb3eacfadd2e9573991b37877afb290
tokenizations.cardindex: 67f4d58f1bb3eacfadd2e9573991b37877afb290

Nos devuelve un cardindex que imposibilita la resolución inversa del número de tarjeta. Además es importante que nadie conozca el algoritmo de generación de cardindex para que nadie pueda utilizar el cardindex de otro usuario sin que este lo tenga permitido. Almacene en un lugar seguro su propio algoritmo de generación de cardindex y no lo distribuya ni lo comparta en entornos abiertos o poco seguros
SE RECOMIENDA NO UTILIZAR ESTE MISMO EJEMPLO. CONSÚLTENOS SI NECESITA QUE LE AYUDEMOS CON SU PROPIO ALGORITMO NI GENERAR TOKENS A PARTIR DEL NÚMERO DE LA TARJETA COMO ÚNICO DATO EXCLUSIVAMENTE

Tokenización en preautorización

Esta llamada se utilizará para hacer preautorizaciones con tarjetas almacenadas previamente, indicando el cardindex. Esta llamada se puede utilizar para comercios configurados con CES (3DSecure, MSC, …) y con CES desactivado.

Autenticación

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de almacenar en bóveda.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request

{
  "authtype": "sslclient",
  "apikey": "empty",
  "resource": "tokenizations/preauthorizations",
  "lang": "0",
  "merchantid": "1",
  "amount": "0000000010",
  "ticket": "8354283542",
  "currency": "978",
  "reference": "",
  "api.notpage": "",
  "api.notmode": "",
  "api.dstpage": ""
}
Campo Tipo Valor
apikey string empty
authtype string sslclient
resource string tokenizations/preauthorizations
lang string 0
merchantid string Id proporcionado por Sipay.
amount string Importe a cobrar en el formato especifico, ver formatos.
ticket string Número de recibo de la venta proporcionado por el cliente.
currency string código numérico de la moneda a utilizar, 978 para euro. Consulte a Sipay la activación de más monedas.
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. Opcional.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.
api.dstpage URL completa de la página web del comercio donde se enviará el POST QueryString con los resultados de la operación. Consulte la referencia adicional más adelante.

Response

Example response

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "tokenizations/preauthorizations",
  "uuid": "2010437e-018e-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idrequest string Id proporcionado por Sipay.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
uuid string Identificador para soporte .
resource string tokenizations/preauthorizations









Preautorización

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/preauthorizations

HTTP request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/preauthorizations

Referencia adicional sobre campos:

Request

Example request

{
  "authtype": "sslclient",
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS",
  "amount": "0000000010",
  "ticket": "8354283542",
  "currency": "978",
  "lang": "0",
  "reference": ""
}
Campo Tipo Valor
idrequest string Id proporcionado en la autenticación.
cardindex string Id de tarjeta.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
amount string Importe a cobrar en el formato especifico, ver formatos.
ticket string Número de recibo de la venta proporcionado por el cliente.
reference string Campo de conciliación bancaria. Opcional

Response CES desactivado

Example response

{
  "merchantname": "SIPAYPLUS",
  "TicketNumber": "test1",
  "ResultDescription": "",
  "TransactionId": "",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "uuid": "9f779de2-018e-11e6-ac37-000c292985e3",
  "Reference": "",
  "ResultCode": "",
  "merchantid": "1"
}
Campo Tipo Valor
ResultCode string Código de estado de la operación. 0 siempre es correcto.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
uuid string Identificador para soporte.
ResultDescription string Código de estado de la operación.
Reference string Número de conciliación bancaria.
TransactionId string Es el valor más importante. Es el identificador que le permitirá realizar el resto de operaciones de preautorización.
TicketNumber string Número de ticket indicado en la petición anterior.

Después de esta operación, podrá realizar todas las demás relacionadas con la preautorización: confirmar, reemplazar y anular.

Response CES (3DSecure, MSC, …)

Example response

{
  "merchantname": "SIPAYPLUS",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "uuid": "9f779de2-018e-11e6-ac37-000c292985e3",
  "ResultCode": "8",
  "merchantid": "1",
  "url": "https://sandbox.sipayecommerce.sipay.es/iframe/v1/tokenization/secure/transition?idrequest=1b7f00fef63d588702e5668e8d4adbfe"
}
Campo Tipo Valor
ResultCode string Recibirá el código 8 en el caso de que su comercio opere en CES.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
uuid string Identificador para soporte.
url string URL que deberá presentar en el navegador de su cliente para realizar la transacción CES. Es imprescindible haber indicado un valor de 'dstpage’ en la petición de auth

En el webservice dstpage o notpage deberá almacenar el valor del campo TransactionId para realizar las futuras operaciones de confirmación/reemplazo/borrado de la preautorización.

Recomendación de seguridad

NORMATIVA PCI DSS:
Para minimizar el riesgo de seguridad implícito en el uso y almacenamiento de cardindex o conocido como token de la tarjeta se recomienda utilizar una combinación de cadenas y funciones que casi todos los lenguajes de programación poseen.

El objetivo es reducir al máximo la probabilidad de que un usuario malicioso pueda hacer el ejercicio de averiguar el número de tarjeta a partir del cardindex con ingeniería inversa.

Ejemplos recomendados para combinar cadenas de texto y aplicar un algoritmo de hash:

ID_USUARIO: 112
FECHA DEL ALTA DE TARJETA: 01/01/2015
UNIX_TIMESTAMP: 1420070400
Combinación: 11201/01/20151420070400
Aplicar función de HASH SHA1: 67f4d58f1bb3eacfadd2e9573991b37877afb290
tokenizations.cardindex: 67f4d58f1bb3eacfadd2e9573991b37877afb290

Nos devuelve un cardindex que imposibilita la resolución inversa del número de tarjeta. Además es importante que nadie conozca el algoritmo de generación de cardindex para que nadie pueda utilizar el cardindex de otro usuario sin que este lo tenga permitido. Almacene en un lugar seguro su propio algoritmo de generación de cardindex y no lo distribuya ni lo comparta en entornos abiertos o poco seguros
SE RECOMIENDA NO UTILIZAR ESTE MISMO EJEMPLO. CONSÚLTENOS SI NECESITA QUE LE AYUDEMOS CON SU PROPIO ALGORITMO NI GENERAR TOKENS A PARTIR DEL NÚMERO DE LA TARJETA COMO ÚNICO DATO EXCLUSIVAMENTE

Tokenización venta diferida

El uso de correcto de la tokenizacion venta diferida (también conocido como procesamiento BATCH) consiste en las siguientes premisas:

Autenticación

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de realizar ventas diferidas utilizando el servicio de bóveda.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request

{
  "authtype": "sslclient",
  "resource": "tokenizations/payments/batches",
  "collectionlength": "1",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS",
  "lang": "0",
  "currency": "978",
  "amount": "empty",
  "ticket": "empty"
}
Campo Tipo Valor
collectionlength int Longitud de la colección de operaciones que se enviará.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.

Response

Example response

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "tokenizations/payments/batches",
  "uuid": "a482e49e-018f-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idrequest string Id request proporcionado por Sipay.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
uuid string Identificador para soporte.









Batches

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/payments/batches

Venta diferida de una colección de operaciones basado en el servicio de bóveda.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/payments/batches

Referencia adicional sobre campos:

Request

Example request

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "idbatch": "c4ca4238a0b923820dcc509a6f75849b",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS",
  "currency": "978",
  "collection": [
        {
        "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
        "amount": "0000000010",
        "ticket": "8354283542"
        }
    ]
}
Campo Tipo Valor
idrequest string Id request proporcionado por Sipay en la consulta anterior.
idbatch string Id enviado por el cliente para identificar su petición de batch.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
cardindex string Id de tarjeta.
amount string Cantidad a cobrar.
ticket stringn Número de recibio.

Response

Example response

{
  "uuid": "9a72d04c-0192-11e6-ac37-000c292985e3",
  "idbatch": "c4ca4238a0b923820dcc509a6f75849b",
  "ResultDescription": "BATCH RECIBIDO CORRECTAMENTE",
  "collectionlength": "1",
  "ResultCode": "0",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS"
}
Campo Tipo Valor
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
uuid string Identificador para soporte.
idbatch string Confirmación de idbatch recibido.
resultcode string Código de estado de la recepción.
resultdescription string Descripción del código de estado.
collectionlength string Confirmación del número de elementos de recibidos.









Estado y resultado de un venta

curl -X GET\
-H "Accept: application/json"\
-H "Content-Type: Application/json"\
-H "X-Sipay-API-v1-idrequest: 319E5FDEE3E0B0864C01223C1BC0CE0CC9260077F3974E29B975CE98E2775D44"\
-H "X-Sipay-API-v1-merchantid: 774"\
-H "X-Sipay-API-v1-merchantname: SIPAYPLUS"\
-H "X-Sipay-API-v1-authtype: sslclient"\
-H "X-Sipay-API-v1-lang: 0"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem\
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/payments/batches/1

Headers Request

X-Sipay-API-v1-idrequest: <id proporcionado en la autenticacion>
X-Sipay-API-v1-merchantid: <id proporcionado por Sipay>
X-Sipay-API-v1-merchantname: <nombre del comercio proporcionado por Sipay>
X-Sipay-API-v1-authtype: sslclient
X-Sipay-API-v1-lang: 0

Obtener el estado y resultados de un venta diferida. El ID de Batch a consultar está incluido en la URL (ver URL REST) y en este caso se tienen que enviar cabeceras HTTP de tipo X para el resto de datos.

HTTP Request

GET https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/payments/batches/<idbatch>

Atributo Descripción
idbatch Id de batch

Referencia adicional sobre campos:

Response

Example response

{
  "status": "FICHERO DE LOTES PROCESADO",
  "uuid": "0d5219bc-0547-11e6-ac37-000c292985e3",
  "idbatch": "c4ca4238a0b923820dcc509a6f75849b",
  "collection": [
       {
      "Amount": "0000000010",
      "SequenceNumber": "000024494992202416624-774-1-00000",
      "OperationType": "0",
      "ResultCode": "0",
      "TransactionId": "76aecc22977cb0482c66f3a604036e94",
      "TicketNumber": "test1",
      "Authorizator": "",
      "ApprovalCode": "019941",
      "ResultDescription": "OPERACION ACEPTADA"
    }
  ],
  "ResultCode": "0",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS"
}
Campo Tipo Valor
uuid string Identificador para soporte.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
idbatch string Confirmación del id de batch.
ResultCode string Código de estado del procesamiento de la colección.
ResultDescription string Descripción del estado del procesamiento de la colección.
status string Estado del procesamiento de la colección.

Status complete

En el caso de que status sea completado, llegará un mensaje tipo:

{
  "uuid": "",
  "merchantid": "1",
  "merchantname": "",
  "idbatch": "",
  "status": "",
  "collection":
    [
        {
          "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
          "resultcode": "",
          "resultdescription": "",
          "transactionid": "",
          "ticketnumber": "",
          "operationtype": "",
          "authorizator": "",
          "amount": "0000000010",
          "approvalcode": "",
          "sequencenumber": ""
        }
    ]
}
Campo Tipo Valor
uuid string Identificador para soporte.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
idbatch string Confirmación del id de batch.
status string Estado del procesamiento de la colección.
cardindex string id de la tarjeta.

Tokenización devolución

Autenticación

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de devolución por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de realizar una devolución con un tarjeta almacenada en bóveda.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request

{
  "authtype": "sslclient",
  "resource": "tokenizations/refunds",
  "lang": "0",
  "merchantid": "1",
  "amount": "0000000010",
  "ticket": "8354283542",
  "currency": "978",
  "api.notpage": "",
  "api.notmode": ""
}
Campo Tipo Valor
merchantid string Id proporcionado por Sipay.
amount string Importe a devolver en el formato especifico, ver formatos.
ticket string Número de recibo de la venta proporcionado por el cliente.
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la devolución. Consulte la referencia adicional más adelante. Opcional.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.

Response

Example response

{
  "idrefund": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "tokenizations\/refunds",
  "uuid": "cfd98568-0193-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idrefund string Id proporcionado por Sipay.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
uuid string Identificador para soporte.









Reembolso

curl -X POST\
-H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/refunds

Devolución basada en índice de tarjeta almacenada en bóveda.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/refunds

Referencia adicional sobre campos:

Request

Example request

{
  "authtype": "sslclient",
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS",
  "amount": "0000000010",
  "ticket": "8354283542",
  "currency": "978",
  "lang": "0",
  "reference": "",
   "transaction_id": ""
}
Campo Tipo Valor
idrequest string Id proporcionado en la autenticación.
cardindex string Id de tarjeta.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
amount string Importe para la devolución en el formato especifico, ver formatos.
ticket string Número de recibo de la venta proporcionado por el cliente.
reference string Campo de conciliación bancaria. Opcional
transaction_id string Identificador de la venta original. Solo sera necesario en caso de tener activada la devolución con comprobación. Consulte la referencia adicional más adelante. Opcional.

Response

Example response

{
  "ApprovalCode": "394322",
  "merchantname": "SIPAYPLUS",
  "TicketNumber": "test1",
  "ResultDescription": "OPERACION ACEPTADA, CODIGO 900",
  "currency": "",
  "Amount": "1.21",
  "SequenceNumber": "394322",
  "OperationType": "Devolucion",
  "TransactionId": "76aecc22977cb0482c66f3a604036e94",
  "Authorizator": "Entidad Bancaria",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "uuid": "0a4d16bc-0552-11e6-ac37-000c292985e3",
  "Reference": "",
  "ResultCode": "0",
  "merchantid": "1"
}
Campo Tipo Valor
resultcode string Código de estado de la operación.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
uuid string Identificador para soporte.

Descripción de campos

Response api.notpage

{
  "network.remoteip": "",
  "resultcode": "",
  "resultdescription": "",
  "amount": "0000000010",
  "ticket": "",
  "transactionid": "76aecc22977cb0482c66f3a604036e94",
  "operation.type": "",
  "merchantid": "1",
  "merchantname": "",
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "notification.timestamp": "",
  "notification.mode": "",
  "extradata": []  
}
CAMPO DESCRIPCIÓN
ResultCode Código que devuelve la entidad identificando el estado de la operación (Anexo 4).
ResultDescription Descripción detallada del resultado (ResultCode).
TransactionId Uso interno y necesario para hacer cancelaciones/devoluciones.
TicketNumber Número de Ticket generado por el cliente.
OperationType Tipo de transacción (venta, devolución, etc.)
Authorizator Entidad autorizadora de la operación.
Amount Formato numérico que representa el importe (Ejemplo: 12.47 para un cantidad de 12.47 euros). En este caso la representación es en formato natural.
ApprovalCode Número de autorización de la operación, asignado por la entidad.
SequenceNumber Número identificativo único de cada operación generado por la pasarela de pago.
api.notpage URL completa de un servicio web del cliente donde se recibirá una notificación de los resultados de la operación. De esta forma se asegura que aunque el dispositivo tenga un error en el llamada del API, el cliente recibirá una notificación si la operación se ha completado en segundo plano. Es obligatorio que este campo sea enviado en el JSON, pero si contiene una cadena vacía no se activará ninguna notificación. Los puertos de salida permitidos son 443/tcp, 80/tcp, 8443/tcp, 8080/tcp, 8089/tcp tanto HTTP como HTTPS.
api.notmode Modo de notificación. Existen dos modos:
Sync: La notificación se enviará al servidor antes de devolver el resultado al dispositivo que ha llamado el API.
Async: La notificación se enviará al servidor inmediatamente después de devolver el resultado al dispositivo que ha llamado el API.
reference Campo de conciliación bancaria. La longitud mínima es de 1 dígito y la máxima de 12. Los 4 primeros dígitos siempre tienen que ser numéricos.
tokenizations.checkmode Este parámetro le permite modificar el comportamiento de chequeo de un tarjeta antes de almacenarla en nuestra bóveda segura. Debería prestarse especial atención al detalle de que utilizando cualquiera de estos modos y asignado un valor a cardindex realmente no se procederá a realizarse una venta de comercio electrónico, solo a un almacenamiento en el servicio de bóveda segura. Hay una excepción con el modo none que entenderá en los comentarios siguientes.
tokenizations.ticket El valor del ticket utilizado en los checkmode. Le permitirá identificar las transacciones utilizadas para la comprobación de tarjetas.

Referencia adicional sobre campos:

tokenizations.checkmode

Los valores posibles para este nuevo campo son:

api.notpage

Campo Tipo Valor
network.remoteip string Dirección IP.
resultcode string Código numérico del resultado de la operación.
resultdescription string Descripción del resultado de la operación.
amount string Importe de la operación.
ticket string Ticket enviado en la operación.
transactionid string Id interno utilizado para poder hacer cancelaciones.
operation.type string Depende de la operacion. Corresponde con el resource de la llamada auth.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por Sipay.
idrequest string Idrequest/idrefund de la parte de autenticación enviada.
notification.timestamp string Unix timestamp de cuando se ha generado la notificación.
notification.mode string Modo de notificación.
extradata string Extra en formato JSON con información adicional de la operación: cardindex, etc …

api.dstpage

Amount=0%2C10&ApprovalCode=010203&Authorizator=Entidad%20Bancaria&OperationType=Venta&ResultCode=0&ResultDescription=OPERACION%20ACEPTADA&SequenceNumber=394028&TransactionId=76aecc22977cb0482c66f3a604036e94&ticket=160413103147705439

Formatos

CAMPO FORMATO
[amount] Importe de Venta. Importe de la operación con 10 dígitos numéricos, dónde los dos últimos dígitos representan a los céntimos.
Ej.: 1€ -> 0000000100
      2,25€-> 0000000225
[ticket] Cadena que identifique el recibo de la venta realizada por el cliente.
[cardinex] Cadena alfanumérica de hasta 255 caracteres.

Preautorización: Captura de datos

Autenticación

Autenticación de preautorización por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de la captura de datos.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request:

{
  "apikey": "empty", 
  "authtype": "sslclient", 
  "resource": "preauthorizations", 
  "lang": "0", 
  "merchantid": "1", 
  "ticket": "8354283542", 
  "amount": "0000000010", 
  "currency": "978", 
  "api.notpage": "", 
  "api.notmode": "",
  "api.notemail": "",
  "api.notemailformat": ""
} 
Campo Tipo Valor
apikey string empty
authtype string sslclient
resource string preauthorizations
lang string 0
merchantid string Id proporcionado por Sipay.
ticket string Número de recibo de la venta proporcionado por el cliente.
amount string Importe a cobrar en el formato especifico, ver formatos.
currency string código numérico de la moneda a utilizar, 978 para euro. Consulte a Sipay la activación de más monedas.
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante . Opcional.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.
api.notemail string Se debe indicar una dirección de correo electrónica válida para enviar por email la notificación que recibiría en “redirects.notmode”.Opcional.
api.notemailformat string Se debe indicar un valor para determinar el formato de correo electrónico de notificación que llegará al email “redirects.notemail”.Opcional.

 Response

Example response:

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "preauthorizations",
  "uuid": "f7126ba2-0163-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idrequest string Id request proporcionado por Sipay en la consulta anterior.
uuid string Identificador para soporte.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.









Capturar datos

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/preauthorizations/capture

Referencia adicional sobre campos:

Request

Example request

{
  "authtype": "sslclient",
  "lang": "0",
  "idrequest": "",
  "currency": "978",
  "merchantname": "SIPAY",
  "merchantid": "1",
  "ticket": "",
  "amount": "",
  "pan": "",
  "expiration": "",
  "cvv": "",
  "cardholdername": "",
  "reference": ""
}
Campo Tipo Valor
authtype string sslclient
lang string 0
idrequest string Id request proporcionado por Sipay en la consulta anterior.
currency string código numérico de la moneda a utilizar, 978 para euro. Consulte a Sipay la activación de más monedas.
merchantname string Nombre del comercio proporcionado por sipay.
merchantid string Id proporcionado por Sipay.
ticket string Número de recibo de la venta proporcionado por el cliente.
amount string Importe a cobrar en el formato especifico, ver formatos.
pan string Numero de la tarjeta.
cvv string Codigo de seguridad de la tarjeta.
expiration string Fecha de expiración de la tarjeta.
cardholdername string Titular de la tarjeta. Opcional
reference string Campo de conciliación bancaria. Opcional

 Response

Example response:

{
  "ResultCode": "0",
  "ResultDescription": "OPERACION ACEPTADA",
  "Reference": "",
  "TicketNumber": "test1",
  "TransactionId": "76aecc22977cb0482c66f3a604036e94",
  "merchantid": "1",
  "uuid": "1b448d92-0165-11e6-ac37-000c292985e3"
}
Campo Tipo Valor
ResultCode string Código de estado de la operación.
ResultDescription string Código de estado de la operación.
Reference string Número de conciliación bancaria.
TicketNumber string Número de ticket indicado en la petición anterior.
TransactionId string Es el valor más importante. Es el identificador que le permitirá realizar el resto de operaciones de preautorización.
merchantid string Id proporcionado por Sipay.
uuid string Identificador para soporte.









Preautorización: confirmar, reemplazar, anular

HTTP Method and authorization action:

POST : confirmar preautorización y fin del proceso
PUT : reemplazar preautorización. Próximas acciones posibles: DELETE o POST.
DELETE : anular la preautorización y fin del proceso.

Autenticación

Autenticación de preautorización por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de la captura de datos.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request:

{
  "apikey": "empty", 
  "authtype": "sslclient", 
  "resource": "preauthorizations", 
  "lang": "0", 
  "merchantid": "1", 
  "ticket": "8354283542", 
  "amount": "0000000010", 
  "currency": "978", 
  "api.notpage": "", 
  "api.notmode": "",
  "api.notemail": "",
  "api.notemailformat": ""
} 
Campo Tipo Valor
apikey string empty
authtype string sslclient
resource string preauthorizations
lang string 0
merchantid string Id proporcionado por Sipay.
ticket string Número de recibo de la venta proporcionado por el cliente.
amount string Importe a cobrar en el formato especifico, ver formatos.
currency string código numérico de la moneda a utilizar, 978 para euro. Consulte a Sipay la activación de más monedas.
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante . Opcional.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.
api.notemail string Se debe indicar una dirección de correo electrónica válida para enviar por email la notificación que recibiría en “redirects.notmode”.Opcional.
api.notemailformat string Se debe indicar un valor para determinar el formato de correo electrónico de notificación que llegará al email “redirects.notemail”.Opcional.

 Response

Example response:

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "preauthorizations",
  "uuid": "f7126ba2-0163-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idrequest string Id request proporcionado por Sipay en la consulta anterior.
uuid string Identificador para soporte.
merchantid string Id proporcionado por Sipay.
merchantname string Nombre del comercio proporcionado por sipay.
resource string preauthorizations









Preautorización

HTTP Request

HTTP Method: POST (confirmar) / PUT (reemplazar) / DELETE (anular) https://{environment}.sipayecommerce.sipay.es/api/v1/preauthorizations

Referencia adicional sobre campos:

Request

Example request

{
  "authtype": "sslclient",
  "lang": "0",
  "idrequest": "",
  "currency": "978",
  "merchantname": "SIPAY",
  "merchantid": "1",
  "ticket": "",
  "amount": "",
  "originalidrequest": "",
  "reference": ""
}
Campo Tipo Valor
authtype string sslclient
lang string 0
idrequest string Id request proporcionado por Sipay en la consulta anterior.
currency string código numérico de la moneda a utilizar, 978 para euro. Consulte a Sipay la activación de más monedas.
merchantname string Nombre del comercio proporcionado por sipay.
merchantid string Id proporcionado por Sipay.
ticket string Número de recibo de la venta proporcionado por el cliente.
amount string Importe a cobrar en el formato especifico, ver formatos.
originalidrequest string TransactionId obtenido en llamada de Preautorizaciones - Captura de Datos
reference string Campo de conciliación bancaria. Opcional

 Response

Example response:

{
  "ResultCode": "0",
  "ResultDescription": "OPERACION ACEPTADA",
  "Reference": "",
  "TicketNumber": "test1",
  "merchantid": "1",
  "uuid": "1b448d92-0165-11e6-ac37-000c292985e3"
}
Campo Tipo Valor
ResultCode string Código de estado de la operación.
ResultDescription string Código de estado de la operación.
Reference string Número de conciliación bancaria.
TicketNumber string Número de ticket indicado en la petición anterior.
merchantid string Id proporcionado por Sipay.
uuid string Identificador para soporte.









Dispositivos móviles v.1

Este tipo de integración es recomendable para los dispositivos móviles que necesiten realizar operaciones y no deban ajustarse a todas las exigencias de la normativa PCI DSS.

Esta integración esta optimizada para ajustarse a todos los dispositivos móviles y tablets del mercado.

Este modo de integración tenderá a desaparecer porque se han incluido plantillas web responsive en sistema de plantillas del método de integración redirect/iframe.

Tokenización: alta de tarjeta

alt text

Autenticación

curl -X POST -H "Content-Type: Application/json" \
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem \
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem \
--cacert ./CA_Sipay_DEV.pem \
-d '{"clave": "valor",}' \
 https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Autenticación de venta por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes de un almacenamiento de tarjeta.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Request

Example request:

{
  "apikey": "empty",
  "authtype": "sslclient",
  "resource": "iframe/directpost",
  "lang": "0",
  "merchantid": "1",
  "ticket": "8354283542",
  "amount": "0000000010",
  "currency": "978",
  "directpost.dstpage": "https://sandbox.sipayecommerce.sipay.es:443/demo/v2/resultados",
  "directpost.notpage": "7.0.1.5",
  "directpost.notmode": "sync"
}
Campo Tipo Valor
apikey string Clave identificatoría frente al Api.
resource string Recurso al que se hace la petición.
authtype string Metodo de autenticación frente a la conexión.
merchantid string id proporcionado por Sipay.
ticket string número de recibo de la venta proporcionado por el cliente.
amount string importe para la venta en el formato especifico, ver formatos.
directpost.dstpage string URL completa de la página web del comercio donde se enviará el POST QueryString con los resultados de la operación. Consulte la referencia adicional más adelante.
directpost.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante . Opcional.
directpost.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.

Response

Example response:

{
  "idrequest": "1b7f00fef63d588702e5668e8d4adbfe",
  "resource": "iframe/directpost",
  "uuid": "632be030-0195-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
idstorage string id request proporcionado por Sipay.
uuid string identificador para soporte.
merchantid string id proporcionado por Sipay.
merchantname string nombre del comercio proporcionado por Sipay.









Tokenizacion

curl -X POST -H "Content-Type: Application/json" \
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem \
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem \
--cacert ./CA_Sipay_DEV.pem \
-d '{"clave": "valor"}' \
https://sandbox.sipayecommerce.sipay.es/api/v1/tokenizations/storageswebviews

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es/api/v1/tokenizations/storageswebviews

Referencia adicional sobre campos:

Request

Example request:

{
  "idstorage": "1b7f00fef63d588702e5668e8d4adbfe",
  "authtype": "sslclient",
  "lang": "0",
  "merchantid": "1",
  "merchantname": "SIPAYPLUS",
  "cardindex": "8e296a067a37563370ded05f5a3bf3ec",
  "ticket": "8354283542",
  "amount": "0000000010",
  "checkmode": "mode1",
  "notpage": "7.0.1.5",
  "notmode": "sync",
  "dstpage": "https://sandbox.sipayecommerce.sipay.es:443/demo/v2/resultados"
}
Campo Tipo Valor
idstorage string id storage proporcionado por Sipay en la consulta anterior.
merchantid string id proporcionado por Sipay.
merchantname string nombre del comercio proporcionado por Sipay.
cardindex string id de tarjeta.
ticket string número de recibo de la venta proporcionado por el cliente.
amount string importe a cobrar en el formato especifico, ver formatos.
checkmode string modo de comprobación de validez de la tarjeta.
notpage string url completa donde se enviarán las notificaciones del resultado de la operación. Dejar vació para no enviar notificación.
notmode string modo de notificación.
dstpage string url completa donde se enviarán los resultados de la operación mediante un POST en formato QueryString.

Response

Example response:

{
  "webview.url": "https://sandbox.sipayecommerce.sipay.es:443/iframe/v1/webviews/tokenizationsstorages?idstorage=319E5FDEE3E0B0864C01223C1BC0CE0CB809A3A2343A2677FDEF27DA7590B47F",
  "uuid": "3d9d0b08-023c-11e6-ac37-000c292985e3",
  "merchantname": "SIPAYPLUS",
  "merchantid": "1"
}
Campo Tipo Valor
webview.url string url completa que deberá ser cargada en el control de webview.
merchantid string id proporcionado por Sipay.
merchantname string nombre del comercio proporcionado por Sipay.
uuid string identificador para soporte.

Dstpage

dstpage
Los datos que se recibiran son los siguientes:

{
  "AuthorizationCode": "n/a",
  "InternalNumber": "n/a",
  "ResultCode": "0",
  "TicketNumber": "n/a",
  "extradata": [
    {
      "ResultCode": "0",
      "TicketNumber": "test1",
      "network.remoteip": "62.14.244.189",
      "ResultDescription": "",
      "uuid": "00d5d5ea-0554-11e6-ac37-000c292985e3"
    }
  ],
  "sent": "Enviar"
}

Notpage

notpage
Los datos que se recibiran son los siguientes:

{  
  "network.remoteip": "",
  "ResultCode": "",
  "ResultDescription": "",
  "Amount": "0000000010",
  "Ticket": "",
  "TransactionId": "",
  "operation.type": "tokenizations/storageswebviews",
  "merchantid": "",
  "merchantname": "",
  "idrequest": "",
  "notification.timestamp": "",
  "notification.mode": "",
  "extradata": []
}
Campo Tipo Valor
network.remoteip string dirección IP del dispositivo que ha cargado la webview.
ResultCode string código númerico del resultado de la operación.
ResultDescription string descripción del resultado de la operación.
Ticket string ticket enviado en la operación de petición de url de carga de la webview.
TransactionId string id interno utilizado para poder hacer cancelaciones.
merchantid string id proporcionado por Sipay.
merchantname string nombre del comercio proporcionado por Sipay.
idrequest string idstorage de la parte de autenticación a la hora de cargar la webview.
notification.timestamp string unix timestamp de cuando se ha generado la notificación.
notification.mode string modo de notificación.
extradata string en formato JSON con información adicional de la operación: cardindex, número de tarjeta enmascarado, etc…

RECOMENDACIÓN DE SEGURIDAD DE LA NORMATIVA PCI DSS

Para minimizar el riesgo de seguridad implícito en el uso y almacenamiento de cardindex o conocido como token de la tarjeta se recomienda utilizar una combinación de cadenas y funciones que casi todos los lenguajes de programación poseen.
El objetivo es reducir al máximo la probabilidad de que un usuario malicioso pueda hacer el ejercicio de averiguar el número de tarjeta a partir del cardindex con ingeniería inversa. Ejemplos recomendados para combinar cadenas de texto y aplicar un algoritmo de hash:

ID_USUARIO: 112
FECHA DEL ALTA DE TARJETA: 01/01/2015
UNIX_TIMESTAMP: 1420070400

Combinación: 11201/01/20151420070400
Aplicar función de HASH SHA1: 67f4d58f1bb3eacfadd2e9573991b37877afb290
tokenizations.cardindex: 67f4d58f1bb3eacfadd2e9573991b37877afb290

Nos devuelve un cardindex que imposibilita la resolución inversa del número de tarjeta. Además es importante que nadie conozca el algoritmo de generación de cardindex para que nadie pueda utilizar el cardindex de otro usuario sin que este lo tenga permitido.
Almacene en un lugar seguro su propio algoritmo de generación de cardindex y no lo distribuya ni lo comparta en entornos abiertos o poco seguros.
SE RECOMIENDA NO UTILIZAR ESTE MISMO EJEMPLO. CONSÚLTENOS SI NECESITA QUE LE AYUDEMOS CON SU PROPIO ALGORITMO.

Descripción de Campos

CAMPO DESCRIPCIÓN
ResultCode Código que devuelve la entidad identificando el estado de la operación. El código 0 siempre es una operación procesada correctamente.
ResultDescription Descripción detallada del resultado (ResultCode).
checkmode Modos de chequeos disponibles para validar una tarjeta antes de almacenarla:
mode1: Realizará una venta de 1 euro en la tarjeta del cliente e inmediatamente después una devolución de 1 euros. Si la primera operación ha sido aceptada, se procederá a almacenar la tarjeta.
dstpage URL completa de la página donde se tratarán los resultados de la operación. Esta página deberá aceptar un POST con un mensaje en formato QueryString. Se recibirán los siguientes campos:
ResultCode
ResultDescription
AuthotizationCode
TicketNumber
InternalNumber
Extra (datos extra en formato JSON)
Es conveniente que estos datos sean almacenados un tiempo prudencial para poder utilizarlos en seguimiento y análisis de operaciones.
notpage URL completa de un servicio web del cliente donde se recibirá una notificación de los resultados de la operación. De esta forma se asegura que aunque el dispositivo tenga un error en el tratamiento del alta de la tarjeta, el cliente recibirá una notificación si la operación se ha completado en segundo plano. Es obligatorio que este campo sea enviado en el JSON, pero si contiene una cadena vacía no se activará ninguna notificación.
notmode Modo de notificación. Existen dos modos.
Sync: La notificación se enviará al servidor antes de devolver el resultado al dispositivo que ha cargado la webview.
Async: La notificación se enviará al servidor inmediatamente después de devolver el resultado al dispositivo que ha cargado la webview.

Formatos

CAMPO FORMATO
[cardinex] Cadena alfanumérica de hasta 255 caracteres.

Métodos de Pago Alternativos

Introducción

Sipay ofrece la posibilidad de utilizar metodos alternativos de pago, abstrayendo la complejidad de la implementación con los diferentes proveedores, unificando las diferentes funcionalidades en una estructura de datos compacta.

Autenticación

curl -X POST -H "Content-Type: Application/json"\
--cert ./E-Commerce.cliente.SIPAYPLUS_1.pem\
--Key ./E-Commerce.cliente.SIPAYPLUS.privkey_1.pem\
--cacert ./CA_Sipay_DEV.pem -d '{"clave": "valor"}'\
https://sandbox.sipayecommerce.sipay.es:10010/alt/v1/sslauth

Autenticación de venta por canal seguro SSL con certificado cliente. Con esta llamada recibirá los métodos de pago alternativos que haya contratado con Sipay.

HTTP Request

POST https://{environment}.sipayecommerce.sipay.es:10010/alt/v1/sslauth

Referencia adicional sobre campos:

Request

Example request:

{
    "merchant_id": "774",
    "order_number": "TICKET1",
    "amount": "0000000200",
    "currency": "978",
    "template": "123456789",
    "result_url": "",
    "result_interactive": "true",
    "custom_id": "123456",
    "callback_url": "",
    "callback_format": "json",
    "callback_email": "john@doe.com",
    "callback_email_template": "line",
    "title": "Sipay Plus Pruebas",
    "logo": "",
    "loading_message": "Procesando, por favor espere...",
    "result_message": "Gracias por confiar en nosotros!",
    "shipping": {
        "name": "John Doe",
        "email": "john@doe.es",
        "country": "ES",
        "state": "Madrid",
        "city": "Madrid",
        "zip": "28013",
        "street1": "Plaza de Cibeles 1",
        "street2": "1a A",
        "phone": "611111111"
    },
    "basket": [
        {
            "id": "sku01",
            "name": "Double Room",
            "description": "Room booking",
            "category": "luxury",
            "quantity": 1,
            "amount": "0000000100",
            "tax": "+5"
        },
        {
            "id": "sku02",
            "name": "Breakfast",
            "description": "Room complement",
            "category": "complement",
            "quantity": 1,
            "amount": "0000000100",
            "tax": "+21"
        }
    ],
    "expiration": "300",
    "extra": ""
}
Campo Tipo Valor
merchant_id string Id proporcionado por Sipay.
order_number string Número de recibo de la venta proporcionado por el clientez.
amount string Importe a cobrar en el formato especifico, ver formatos.
currency string Código numérico ISO de la moneda utilizado en el cobro. 978 Euro.
template string Identificador de la plantilla.Consulte a su integrador en Sipay para configurarla correctamente.
result_url string URL completa de la página web del comercio donde se enviará el POST QueryString con los resultados de la operación. Consulte la referencia adicional más adelante..
result_interactive string True o false indicará si la web de resultados es interactiva o transitiva.Opcional.
callback_url string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. .Opcional.
callback_format string Indicación del formato del callback. Opcional.
callback_email string Se debe indicar una dirección de correo electrónica válida para enviar por email la notificación que recibiría en “callback_url”.Opcional.
callback_email_template string Se debe indicar un valor para determinar el formato de correo electrónico de notificación que llegará al email “callback_email”. (json or line or nvp) Opcional.
custom_id string Campo de conciliación bancaria. Opcional.
title string Nombre completo de la compañía del cliente. Opcional
logo string URL completa de logo del cliente. Recomendado para los métodos de pago alternativo. Opcional.
loading_message string Mensaje de texto que aparecerá en las página de procesando pago.Opcional.
result_message string Mensaje de texto que aparecerá en la página de transición de resultados.Opcional.
basket string Cesta de la compra. Ver detalle.. Opcional.
shipping string Dirección de envío. Ver detalle.. Opcional.
expiration string Número de segundos de validez del enlace generado. Consulte la referencia adicional más adelante. Opcional.
extra string Información de libre uso para incluirla en las plantillas. Opcional.

Response

Example response:

{
    "uuid": "9894f5ba-d2d7-4424-9339-c19cba627471",
    "request_id": "6106532943FE06",
    "merchant_id": "774",
    "merchant_name": "SIPAYPLUS",
    "redirect_url": "https://sandbox.sipayecommerce.sipay.es/alt/v1/selector/6106532943FE06/",
    "payment_methods": {
        "paypal_express_checkout_nvp": {
            "logo": "https://www.logo.com/logo_37x23.jpg",
            "name": "paypal_express_checkout_nvp",
            "title": "PayPal Express Checkout",
            "description": "",
            "redirect_url": "https://sandbox.sipayecommerce.sipay.es/alt/v1/redirect/paypal_express_checkout/6106532943FE06/",
            "use_policy": "",
            "terms_of_use": "",
            "enable": true
        },
        "sofort": {
            "logo": "",
            "name": "sofort",
            "title": "SOFORT BANKING",
            "description": "",
            "redirect_url": "https://sandbox.sipayecommerce.sipay.es/alt/v1/redirect/sofort/6106532943FE06/",
            "use_policy": "",
            "terms_of_use": "",
            "enable": true
        }
    }
}
Campo Tipo Valor
uuid string Identificador para soporte.
request_id string Id request proporcionado por Sipay en la consulta anterior.
merchant_id string Id proporcionado por Sipay.
merchant_name string Nombre del comercio proporcionado por sipay.
redirect_url string URL de la pantalla de selección de métodos de pago alojada en Sipay. Depende del templateid enviado. Debe estar creada en el sistema de plantillas de Sipay.
payment_methods string Colección de métodos de pago. Ver detalle.









Campo: Cesta de la compra

Al enviar la petición al sistema, se puede indicar la cesta de la compra para mostrar la información al cliente en el momento de realizar el pago.

El formato debe ser una lista con los elemento de la cesta, para cada elemento se debe indicar:

Example basket:

{
    "basket": [
        {
            "id": "sku01",
            "name": "Double Room",
            "description": "Room booking",
            "category": "luxury",
            "quantity": 1,
            "amount": "0000000100",
            "tax": "+5"
        },
        {
            "id": "sku02",
            "name": "Breakfast",
            "description": "Room complement",
            "category": "complement",
            "quantity": 1,
            "amount": "0000000100",
            "tax": "+21"
        }
    ]
}
Elemento Descripción
id Identificador único del producto, puede ser el SKU
name Nombre del elemento de la cesta de la compra
description Descripción del elemento de la cesta de la compra
category Categoría del producto.
quantity Número entero de elementos
amount Importe del elemento de la cesta de la compra, tiene que cumplir el formato ISO
tax Signo y valor númerico de los impuestos aplicados. Puede ser +0.

Campo: Dirección de entrega o envío

De forma adicional y para mostrarle mas seguridad al comprador a la hora de realizar el pago, se puede indicar la información de entrega del mismo.

El formato debe ser un diccionario con los parametros siguientes:

Example shipping:

{
    "shipping": {
        "name": "John Doe",
        "email": "john@doe.es",
        "country": "ES",
        "state": "Madrid",
        "city": "Madrid",
        "zip": "28013",
        "street1": "Plaza de Cibeles 1",
        "street2": "1a A",
        "phone": "611111111"
    }
}
Elemento Descripción
name Nombre del cliente
email Correo electrónico del cliente
country Código ISO del País del cliente
state Estado o región del cliente
city Ciudad del cliente
zip Codigo postal del cliente
street1 Calle del cliente (campo 1)
street2 Calle del cliente (campo 2)
phone Numero de teléfono del cliente

Campo: Colección de métodos de pago

La colección de métodos de pago le ofrece las URLs necesarias que deberá presentar a su cliente para cerrar la venta con método de pago alternativo.

Example payment_methods:

{
"payment_methods": {
    "paypal_express_checkout_nvp": {
            "logo": "https://www.logo.com/logo_37x23.jpg",
            "name": "paypal_express_checkout_nvp",
            "title": "PayPal Express Checkout",
            "description": "",
            "redirect_url": "https://sandbox.sipayecommerce.sipay.es/alt/v1/redirect/paypal_express_checkout/6106532943FE06D1251200E5A437F13DBC28EA24FF572ABC13B49B8E489822C4/",
            "user_policy": "",
            "terms_of_use": "",
            "enable": true
        }
    }
}
Elemento Descripción
logo URL del logo del método de pago alternativo.
name Nombre corto del método de pago. Puede utilizarlo para la integración porque este nombre no variará.
title Nombre completo del método de pago que usted podrá presentar a sus clientes.
description Breve descripción del método de pago.
redirect_url URL de la pantalla de selección de métodos de pago alojada en Sipay. Depende del templateid enviado. Debe estar creada en el sistema de plantillas de Sipay.
user_policy Enlace de la política de usuario del método de pago.
terms_of_use Enlace de los términos de uso asociados al método de pago.
enable True o false dependiendo de si ústed configurado esté método de pago activado o desactivado por defecto. Consulte las políticas de métodos de pago.

Política de metodos de pago

Es posible que si implementa varios metodos de pago y/o trabaja en diferentes mercados quiera ofrecer diferentes posibilidades. Por ello surge el concepto de las políticas de metodos de pago, que ofrece la capacidad de analizar los datos de la operación y ofrecer diferentes servicios dependiendo de unos condicionales previamente definidos.

Para usar la política de métodos de pago, deberá añadir a la petición anterior el campo:

... "paymentmethod.profile": "nombre de la política" ...

Campo Tipo Valor
paymentmethod.profile string Nombre de la política configurada.
{
    "amount": "0000000200",
    "apikey": "empty",
    "authtype": "sslclient",
    "currency": "978",
    "lang": "0",
    "logourl": "",
    "merchantid": "1",
    "merchantname_friendly": "Sipay Plus Pruebas",
    "paymentmethod.profile": "",
    "redirects.dstpage": "",
    "redirects.extradata": "",
    "redirects.message": "",
    "redirects.notmode": "",
    "redirects.notpage": "",
    "redirects.results_interactive": "",
    "redirects.templateid": "",
    "reference": "",
    "resource": "iframe/v1/redirects/payments/methods",
    "shipto": {
        "city": "Madrid",
        "countrycode": "ES",
        "email": "john@doe.es",
        "name": "John Doe",
        "phonenum": "611111111",
        "state": "Madrid",
        "street1": "Plaza de Cibeles 1",
        "street2": "1a A",
        "zip": "28013"
    },
    "shoppingcart": [
        {
            "amount": "0000000100",
            "category": "luxury",
            "description": "Room booking",
            "id": "sku01",
            "itemname": "Double Room",
            "quantity": 1,
            "tax": "+5"
        },
        {
            "amount": "0000000100",
            "category": "complement",
            "description": "Room complement",
            "id": "sku02",
            "itemname": "Breakfast",
            "quantity": 1,
            "tax": "+21"
        }
    ],
    "ticket": "TICKET1"
}

Perfiles

Las políticas de metodos de pago están estructuradas en perfiles, cada perfil contempla una serie de parametros e indica una serie de comprobaciones lógicas para decidir el estado que debe de presentar el método (activo/inactivo).

Metodos

Para comprender como operan las políticas de metodos de pago debemos saber que cada método es una entidad única que tiene dos estados posible activo o inactivo.

Los metodos tienen un estado inicial o estado por defecto definido de forma expresa para cada perfil.

Reglas

Son un conjunto de condiciones que evalúan una operación y pueden modificar el estado de los metodos de forma expresa si se presentan activas, para ello, el conjunto de reglas y el operador tienen que evaluarse como cierto.

Los operadores son AND/Y, OR/O que funcionan del siguiente modo: - AND/Y: se evalúa como cierto si todas y cada una de las condiciones se evalúan a cierto. - OR/O: se evalúa como cierto si al menos una condición se evalúa a cierto.

Es importante, tener en cuenta, el orden de precedencia de los estados, las políticas operan de forma restrictiva, lo que significa que, una regla que desactive un método, prevalecerá sobre la regla o reglas que activen el método.

Si un método no es contemplado en ninguna regla, el método presentará su estado inicial, de lo contrario, si una o varias reglas actúan sobre el método, el estado inicial será ignorado.

Las reglas no son excluyentes entre si, lo que supone, que todas y cada una de las reglas se evaluarán y actuarán sobre los metodos.

Las reglas solo modifican el estado de los metodos que se les indique de forma explícita, lo que supone, que pueden no operar sobre un método, y no implica que lo desactive, por lo tanto cada regla puede activar/desactivar un método o no afectar sobre su estado.

Condiciones

Para acabar de comprender las reglas, tenemos que conocer las condiciones.

Una condición es una operación lógica entre dos valores que puede evaluarse como cierta o falsa.

Las condiciones evalúan los parametros de entrada de la operación. Un parámetro puede no estar presente y la evaluación no se llevaría a cabo. Las condiciones no presentes tienen una actuación implícita o evaluación por defecto, definida en la configuración, que puede ser cierta o falsa.

El conjunto de esas operaciones y la forma en la que se evalúa el conjunto es lo que condiciona la acción de la regla sobre los metodos.

Una condición se evalúa enfrentando dos valores en una de estas condiciones: - Mayor que (numérico): Evalúa si un numero es mayor que otro - Mayor o igual que (numérico): Evalúa si un numero es mayor o igual que otro - Menor que (numérico): Evalúa si un numero es menor que otro - Menor o igual que (numérico): Evalúa si un numero es menor o igual a otro - Entre (numérico): Evalúa si un numero esta entre otros dos valores - Igual (cualquiera): Evalúa si un valor es igual a otro - Lista blanca (cualquiera): Evalúa si un valor esta presente en un listado - Lista negra (cualquiera): Evalúa si un valor no esta presente en un listado

Es importante entender los parámetros y los tipos de parámetros, para comprender como funcionan las condiciones. El siguiente apartado trata de aclarar los conceptos.

También es importante comprender que una condición siempre evalúa un parámetro de entrada, contra un parámetro definido u otro de entrada.

Parámetros

Los parámetros son información, y están divididos en dos grupos, parámetros de entrada o de definición.

Los parámetros de entrada, son variables y dependientes de la operación y pueden no venir indicados.

Los parámetros de definición, son estáticos y se requiere, como su nombre indica, definir previamente en el momento de configurar la política.

Los parametros pueden ser de tipo estáticos como numéricos, alfanuméricos, boleano (cierto/falso), listado de numéricos o alfanuméricos (conjunto separado por ’;’) o de tipo generado, como las IP o listado de IP.

Los tipos de parámetros generados, están compuestos de atributos que se generan por el sistema a partir del parámetro de entrada.

Los atributos contemplados para los parametros generados son: - Código País (por ip): Recupera el código ISO del país al que pertenece la IP. - Nombre País (por ip): Recupera el nombre del país al que pertenece la IP.

Para los tipos de parametros generados, en las condiciones, se evalúa uno y solo uno de sus atributos, que tiene que indicarse de forma explicita en la configuración.

PSS – Pan Secure Show

Este servicio permite el envío de forma segura y por PCI DSS de datos de tarjeta.

Para el correcto funcionamiento de PSS, debe satisfacer ciertos requerimientos además de seguir las instrucciones que aparecen en este documento.

Requerimientos

En el momento que el servicio esté en producción, el cliente deberá aceptar la política de uso del servicio.

Además deberá indicar las direcciones de email autorizadas a la recepción de la información de tarjeta.

A continuación se indica la información necesaria para el uso del API.

https://sandbox.sipayecommerce.sipay.es:10010/api/v1/auth

Referencia adicional sobre campos:

Ejemplo auth: JSON_Request

{
    "authtype": "sslclient",
    "resource": "pss",
    "lang": "0",
    "merchantid": "1",
    "ticket": "8354283542",
    "amount": "0000000000",
    "currency": "978",
    "api.notpage": "",
    "api.notmode": "sync"
}
Campo Tipo Valor
merchantid string id proporcionado por Sipay
ticket string Número de recibo de la venta proporcionado por el cliente y que aparecerá en el email enviado para identificar la operación
api.notpage string URL completa de un servicio web donde recibirá un POST JSON con los resultados de la venta. Consulte la referencia adicional más adelante. Opcional.
api.notmode string Modo de notificación. Consulte la referencia adicional más adelante. Opcional.

Ejemplo auth: JSON_Reply

{
    "idpss": "¿?",
    "resource": "pss",
    "uuid": "¿?",
    "merchantid": "1",
    "merchantname": "SIPAYPLUS"
}
Campo Tipo Valor
idpss string id request proporcionado por Sipay
uuid string Identificador para soporte
merchantid string id proporcionado por Sipay
merchantname string Nombre del comercio proporcionado por Sipay


https://sandbox.sipayecommerce.sipay.es:10443/api/v1/pss

Referencia adicional sobre campos:

Ejemplo PSS Link: JSON_Request

{
    "idpss": "¿?",
    "authtype": "sslclient",
    "lang": "0",
    "merchantid": "1", 
    "merchantname": "SIPAYPLUS",
    "pss.cardindex": "token_example_01",
    "pss.emaillink": "receptor_enlace@example.com",
    "pss.emailotp": "receptor_otp@example.com",
    "pss.subject.name": "¿?",
    "authtype": "sslclient",
    "resource": "pss",
    "lang": "0",
    "merchantid": "1",
    "ticket": "8354283542",
    "amount": "0000000000",
    "currency": "978",
    "api.notpage": "",
    "api.notmode": "sync"
}
Campo Tipo Valor
idpss string id request proporcionado por Sipay en la consulta anterior
merchantid string id proporcionado por Sipay
merchantname string Nombre del comercio proporcionado por Sipay
pss.cardindex string token/cardindex correspondiente a la tarjeta a enviar
pss.emaillink string Dirección de correo electrónico del receptor del enlace. Debe estar dada de alta previamente en nuestro sistema
pss.emailotp string Dirección de correo electrónico del receptor del código de seguridad OTP. Debe estar dada de alta en nuestro sistema
pss.subject.name string Identificador de hasta 100 caracteres que irá en el asunto del email para identificar la empresa emisora del email. Opcional.

Ejemplo PSS Link: JSON_Response

{
    "ResultCode": "0",
    "ResultDescription": "¿?",
    "cardindex": "¿?",
    "idpss": "¿?",
    "pan": "¿?",
    "merchantid": "1",
    "merchantname": "SIPAYPLUS",
    "uuid": "¿?"
}
Campo Tipo Valor
ResultCode string Código de estado de la operación. 0 es correcto, distinto de 0 quiere decir que la tarjeta no existe.id proporcionado por Sipay
ResultDescription string Descripción del código de resultado
cardindex string Confirmación del token/cardindex enviado por email
idpss string Identificador de session recibido en la operación auth
pan string Pan enmascarado para posible uso interno
merchantid string id proporcionado por Sipay
merchantname string Nombre del comercio proporcionado por Sipay
uuid string Identificador para soporte

Ayuda visual

alt text

alt text

Recomendaciones

A continuación se realizan algunas recomendacionesde uso y explotación del servicio:

Errores

Código Descripción
CERR0001 Error al generar ID de operación. Contacte con nuestro soporte.
CERR2001 Formato JSON recibido es incorrecto. Validar con herramienta externa el formato enviado.
CERR2002 Falta un campo obligatorio en el mensaje JSON.
CERR0003 Error de formato de campo. Debe revisar los valores enviados.
CERR0004 Servidor ocupado. Vuelva a intentarlo.
CERR0005 No se permite el authtype indicado.
CERR0006 Error de autenticación.
CERR0007 No se encuentra la configuración especificada.
CERR0008 No tiene permisos para ejecutar esta llamada.
CERR0009 Se ha superado el tiempo máximo de petición. Revise su timestamp.
CERR0010 Faltan cabeceras obligatorias para el método GET.
CERR0011 Error de formato en las cabeceras para el método GET. Revise donde hay que enviar números y donde hay que enviar caracteres.
CERR0012 Conexión interrumpida. Inténtela de nuevo utilizando mismo número de ticket e importe.

ANEXO 1

RESULTCODE RESULTDESCRIPTION
0 OPERACIÓN ACEPTADA
-6 OPERACIÓN NO PROCESADA (se debe reintentar la operación)
-11 CÓDIGO DE PETICIÓN INVALIDO
-1001 NO SE HA PODIDO TRAMITAR LA OPERACIÓN, FALTAN DATOS DE LA TARJETA
-1002 NO SE PUDO AUTENTICAR EL CLIENTE
-1003 IMPOSIBLE RECUPERAR DATOS ORIGINALES DE LA VENTA
-1004 IMPOSIBLE TRAMITAR OPERACIÓN
-1005 ERROR DE AUTENTICACIÓN ( PUCE )
-1006 IMPOSIBLE CONTINUAR CON LA OPERACIÓN ( idrequest inválido )
-1007 FALTAN DATOS O EL COMERCIO NO ESTÁ CORRECTAMENTE CONFIGURADO
-1008 SIN CONEXIÓN CON LA ENTIDAD BANCARIA, NO SE PUDO PROCESAR LA OPERACIÓN
-1009 TARJETA NO LOCALIZADA
-1010 FORMATO DE MENSAJE INVALIDO
-1011 NUMERO DE CONTRATO INVALIDO
-1012 RECIBIDO UN LOTE DE ARCHIVOS VACÍO
-1013 IMPOSIBLE ALMACENAR FICHERO DE LOTES
-1014 FORMATO INCORRECTO DE ARCHIVO DE LOTES
-1015 NO SE HA PODIDO PROCESAR EL FICHERO DE LOTES
-1016 NO SE PUDO LOCALIZAR EL FICHERO DE LOTES
-1017 TARJETA NO AUTORIZADA

ANEXO 2

TABLA DE CÓDIGOS DE DIVISA
8 ALL LEK
12 DZD ALGERIAN DINAR
24 AON NEW KWANZA
31 AZM AZERBAIJANIAN MANAT
32 ARS ARGENTINE PESO
36 AUD AUSTRALIAN DOLLARS
44 BSD BAHAMIAN DOLLAR
48 BHD BAHRAINI DINAR
50 BDT TAKA
51 AMD ARMENIAN DRAM
52 BBD BARBADOS DOLLAR
60 BMD BERMUDIAN DOLLAR
64 BTN NGULTRUM
68 BOB BOLIVIANO
72 BWP PULA
84 BZD BELIZE DOLLAR
90 SBD SOLOMON ISLANDS DOLLAR
96 BND BRUNEI DOLLAR
100 LEV BULGARIAN LEV
104 MMK KYAT
108 BIF BURUNDI FRANC
116 KHR RIEL
124 CAD CANADIAN DOLLARS
132 CVE CAPE VERDE ESCUDO
136 KYD CAYMAN ISLANDS DOLLAR
144 LKR SRI LANKA RUPEE
152 CLP CHILEAN PESO
156 CNY YUAN RENMINBI
170 COP COLOMBIAN PESO
174 KMF COMORO FRANC
188 CRC COSTA RICAN COLON
191 HRK CROATIAN KUNA
192 CUP CUBAN PESO
196 CYP CYPRUS POUND
203 CZK CZECH KORUNA
208 DKK DANISH KRONE
214 DOP DOMINICAN PESO
218 ECS SUCRE
222 SVC EL SALVADOR COLON
230 ETB ETHIOPIAN BIRR
232 ERN NAKFA
238 FKP FALKLAND ISLANDS POUND
242 FJD FIJI DOLLAR
246 FIM MARKKA
250 FRF FRENCH FRANC
262 DJF DJIBOUTI FRANC
270 GMD DALASI
288 GHC CEDI
292 GIP GIBRALTAR POUND
320 GTQ QUETZAL
324 GNF GUINEA FRANC
328 GYD GUYANA DOLLAR
332 HTG GOURDE
340 HNL LEMPIRA
344 HKD HONG KONG DOLLAR
348 HUF FORINT
352 ISK ICELAND KRONA
356 INR INDIAN RUPEE
360 IDR RUPIAH
364 IRR IRANIAN RIAL
368 IQD IRAQI DINAR
376 ILS NEW ISRAELI SHEQEL
380 ITL ITALIAN LIRA
388 JMD JAMAICAN DOLLAR
392 JPY JAPANESE YEN
398 KZT TENGE
400 JOD JORDANIAN DINAR
404 KES KENYAN SHILLING
408 KPW NORTH KOREAN WON
410 KRW WON
414 KWD KUWAITI DINAR
417 KGS SOM
418 LAK KIP
422 LBP LEBANESE POUND
426 LSL LOTI
428 LVL LATVIAN LATS
430 LRD LIBERIAN DOLLAR
434 LYD LIBYAN DINAR
440 LTL LITHUANIAN LITAS
446 MOP PATACA
454 MWK KWACHA
458 MYR MALAYSIAN RINGGIT
462 MVR RUFIYAA
478 MRO OUGUIYA
480 MUR MAURITIUS RUPEE
484 MXN MEXICAN PESO
496 MNT TUGRIK
498 MDL MOLDOVAN LEU
504 MAD MOROCCAN DIRHAM
508 MZM METICAL
512 OMR RIAL OMANI
516 NAD NAMIBIA DOLLAR
524 NPR NEPALESE RUPEE
532 ANG NETHERLANDS ANTILLEAN GUILDER
533 AWG ARUBAN FLORIN
548 VUV VATU
554 NZD NEW ZEALAND DOLLAR
558 NIO CORDOBA ORO
6 NGN NAIRA
578 NOK NORWEGIAN KRONE
586 PKR PAKISTAN RUPEE
590 PAB BALBOA
598 PGK KINA
600 PYG GUARANI
604 PEN NUEVO SOL
608 PHP PHILIPPINE PESO
634 QAR QATARI RIAL
642 ROL LEU
643 RUB RUSSIAN RUBLE
646 RWF RWANDA FRANC
654 SHP SAINT HELENA POUND
678 STD DOBRA
682 SAR SAUDI RIYAL
690 SCR SEYCHELLES RUPEE
694 SLL LEONE
702 SGD SINGAPORE DOLLAR
703 SKK SLOVAK KORUNA
704 VND DONG
706 SOS SOMALI SHILLING
710 ZAR RAND
716 ZWD ZIMBABWE DOLLAR
728 SSP SOUTH SUDANESE POUND
740 SRG SURINAM GUILDER
748 SZL LILANGENI
752 SEK SWEDISH KRONA
756 CHF SWISS FRANCS
760 SYP SYRIAN POUND
764 THB BAHT
776 TON TONGA
780 TTD TRINIDAD AND TOBAGO DOLLAR
784 AED UAE DIRHAM
788 TND TUNISIAN DINAR
795 TMM MANAT
800 UGX UGANDA SHILLING
807 MKD DENAR
818 EGP EGYPTIAN POUND
826 GBP BRITISH POUNDS
834 TZS TANZANIAN SHILLING
840 USD AMERICAN DOLAR
858 UYU PESO URUGUAYO
860 UZS UZBEKISTAN SUM
862 VEB BOLIVAR
882 WST TALA
886 YER YEMENI RIAL
894 ZMK KWACHA
901 TWD NEW TAIWAN DOLLAR
931 CUC PESO CONVERTIBLE
932 ZWL ZIMBABWE DOLLAR
934 TMT TURKMENISTAN NEW MANAT
936 GHS GHANA CEDI
937 VEF BOLIVAR
938 SDG SUDANESE POUND
940 UYI URUGUAY PESO EN UNIDADES INDEXADAS (URUIURUI)
941 RSD SERBIAN DINAR
943 MZN MOZAMBIQUE METICAL
944 AZN AZERBAIJANIAN MANAT
946 RON NEW ROMANIAN LEU
947 CHE WIR EURO
948 CHW WIR FRANC
949 TRY TURKISH LIRA
950 XAF CFA FRANC BEAC
951 XCD EAST CARIBBEAN DOLLAR
952 XOF CFA FRANC BCEAO
953 XPF CFP FRANC
959 XAU GOLD
960 XDR SDR (SPECIAL DRAWING RIGHT)
961 XAG SILVER
962 XPT PLATINUM
963 XTS CODES SPECIFICALLY RESERVED FOR TESTING PURPO
964 XPD PALLADIUM
965 XUA ADB UNIT OF ACCOUNT
967 ZMW ZAMBIAN KWACHA
968 SRD SURINAM DOLLAR
969 MGA MALAGASY ARIARY
970 COU UNIDAD DE VALOR REAL
971 AFN AFGHANI
972 TJS SOMONI
973 AOA KWANZA
974 BYR BELARUSSIAN RUBLE
975 BGN BULGARIAN LEV
976 CDF CONGOLESE FRANC
977 BAM CONVERTIBLE MARK
978 EUR EURO, EUROPEAN COMMUNITY
979 MXV MEXICAN UNIDAD DE INVERSION (UDI)
980 UAH HRYVNIA
981 GEL LARI
984 BOV MVDOL
985 PLN ZLOTY
986 BRL BRAZILIAN REAL
990 CLF UNIDADES DE FOMENTO
994 XSU SUCRE
997 USN US DOLLAR (NEXT DAY)
998 USS US DOLLAR (SAME DAY)

ANEXO4

Códigos de estado del protocolo bancario PUC
0 OPERACIÓN ACEPTADA
101 TARJETA CADUCADA
102 POSIBLE FRAUDE, DENEGADA
106 EXCEDIDO EL NÚMERO DE INTENTOS DEL PIN
107 DENEGADA, LLAMAR A EMISOR
117 PIN INCORRECTO
126 BLOQUE DE PIN ERRÓNEO
160 OPERACIÓN DENEGADA, DATOS EN CLARO EN COMERCIO SNCP
180 TARJETA NO SOPORTADA POR EL SISTEMA, DENEGADA
190 DENEGADA POR MOTIVOS DIVERSOS
192 DENEGADA, NO ES POSIBLE VERIFICAR AUTENTIFICACIÓN POR REFERENCIA
193 DENEGADA, EXCEDIDO IMPORTE DE LA AUTENTICACIÓN
195 DENEGADA, FALLBACK TARJETA EXTRAJERA.
198 SE PROCEDE A OFRECER DCC
201 TARJETA CADUCADA, RETIRAR TARJETA
202 TARJETA EN LISTA NEGRA O SOSPECHOSA DE FRAUDE
206 EXCEDIDO NUMERO DE INTENTOS PIN, CAPTURE CARD
290 DENEGADA POR MOTIVOS DIVERSOS
400 CANCELACIÓN PROCESADA
480 CANCELACIÓN DENEGADA
481 CANCELACIÓN DENEGADA
901 ACEPTADO E INCLUIR EN LISTA NEGRA
904 FORMATO DE MENSAJE ERRÓNEO
909 ERROR DE SISTEMA (ENTIDAD AUTORIZADORA)
912 CENTRO RESOLUTOR NO DISPONIBLE
913 RECIBIDO MENSAJE DEVOLUCIÓN/ANULACIÓN DUPLICADO (YA HA SIDO PROCESADO OTRO MENSAJE CON EL MISMO RTS)
914 ANULACIÓN NO ACEPTADA
915 RECHAZADA LA COLECTA, OPERACIONES REFERENCIADAS NO ENCONTRADAS
916 MAC ERRÓNEO
940 RECIBIDA VENTA A UNA OPERACIÓN YA ANULADA A LA QUE SE CONTESTÓ CON 914 O 481.
944 SESIÓN NO PERMITIDA
947 RECIBIDO UN MENSAJE DE REPETICIÓN MIENTRAS SE PROCESA EL ORIGINAL, REPETICIÓN IGNORADA
948 FECHA Y HORA NO SINCRONIZADAS
949 FECHA DE CADUCIDAD NO COINCIDE CON LA QUE EL EMISOR TIENE EN SUS ARCHIVOS
950 VIOLACIÓN DE LAS NORMAS EXISTENTES PARA REALIZAR UNA AUTORIZACIÓN LOCAL
955 VIOLACIÓN DE NORMA EXISTENTES PARA REALIZAR UNA DEVOLUCIÓN