Fases de integración
La integración del Cliente con la pasarela Sipay E-commerce se dará por finalizada cuando:
Se hayan ejecutado las pruebas de integración indicadas en este documento
Se hayan resuelto las incidencias identificadas por parte del responsable de resolverlas
Se haya formalizado la aceptación por parte del cliente (bien explícitamente o bien implícitamente) de los resultados de las pruebas, en lo que denominaremos “Aceptación del Plan de Integración y traspaso a Producción”
Recomendaciones
Durante el proceso de integración, le recomendamos que tenga en cuenta estas consideraciones:
- Los valores de las URL de los EndPoints varían entre entornos, tenga en cuenta esto a la hora de programar las llamadas a nuestro API.
- Los valores de los campos merchantid, merchantname, redirects.templateid pueden variar entre entornos, se recomiendan que se almacenen en ficheros de configuración.
- Los certificados X509 en Sandbox son distintos que los del entorno de Producción. Además la clave privada tendrá una contraseña por recomendaciones de PCI DSS. Tenga en cuenta esto a la hora de ubicarlos y nombrarlos en el código.
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:
- Formato: X509
- Algoritmo: RSA
- Tamaño: 2048 bits
- CA: firmado por Sipay
- Extensiones: Digital Signature, Key Encipherment, TLS Web Server Authentication, TLS Web Client Authentication
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):
- idrequest: ID de la operación. El formato del ID será una cadena de longitud fija (65 caracteres). Es un testigo de la llamada AUTH de un solo uso y que expirará pasado un tiempo (consulte con Sipay).
- merchantid: ID numérico del comercio. Proporcionado por Sipay. Nos permite identificar su comercio a través de un sencillo código numérico.
- merchantname: Identificación alfanumérica del comercio. Proporcionado por Sipay.
- resource: Identificación del recurso para el que se ha solicitado el AUTH.
- redirects.url: Este es el dato de la URL absoluta que utilizará para cargar nuestras páginas web de venta, almacenamiento de tarjeta, etc… Podrá utilizarlo en su web si usa el recurso iframe, ejemplo:
<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¤cy=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:
- tokenizations.cardindex
Contiene el token de la tarjeta que deberá generar con algún algoritmo propio y que deberá asociarlo al perfil de sus usuarios. Este dato le permitirá realizar las siguientes ventas recurrentes y deberá almacenarlo en su base de datos.
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.
- 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.
Los valores posibles para este nuevo campo son:
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. Consulte la activación de este modo. Con este modo es importante tener en cuenta que solo se realizará la operación de tokenización sin realizar la venta con el amount indicado en el cuerpo de la petición. Esto provoca el registro de una operación de venta de 1,00€ y una devolución del mismo importe en el portal de operaciones.
mode2: Autenticará al titular de la tarjeta mediante el sistema 3DSecure de VISA o MasterSecureCode de MasterCard. Este es el método más aconsejado para evitar una gran porcentaje de fraude dado que siempre se asegurará que el titular de la tarjeta está presente durante la entrada de estos datos. Consulte la activación de este modo.
none: Realmente esto indica la desactivación del chequeo de la tarjeta. Se aprovechará la venta que está realizando, para que en caso de ser una operación aceptada pueda almacenar la tarjeta de su cliente.
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¤cy=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:
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:
- nvp:
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;
line:
network.remoteip: 1.1.1.1
ResultCode: 0
ResultDescription: OPERACIÓN ACEPTADA
Amount: n/a
Ticket: 160308215718
operation.type: redirect/payments/results
merchantid: 1
merchantname: SIPAYPLUS
idrequest: A383328934F4DFFFCE9A4243C11F9A7DAC1422B31F47359C0D06FD362E2AD364
notification.timestamp: 1457470652
notification.mode: sync
TransactionId: 000024328446238789845
Reference: 1234json:
{"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:
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>
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:
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:
Se debe haber almacenado el atributo TransactionId de un respuesta JSON de una venta o devolución.
La cancelación debe ejecutarse dentro de la misma sesión contable de la operación. Normalmente la sesión contable se cierra a las 23:30 de cada día. Consúltenos para conocer más detalles.
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:
- Se deben enviar las operaciones en horario nocturno (02:00 - 06:00).
- El límite de operaciones de una colección es de 100 operaciones.
- El BATCH se envía mediante el método POST y la consulta del resultado se realiza con la operación GET. Entre petición POST y GET debe haber un intervalo de tiempo de espera que podrá estimarse en cinco segundos por cada elemento de la colección.
- El resultado del BATCH mediante GET devolverá un ResultCode igual a 0 y una longitud del elemento “collection” igual a 1 o superior cuando el BATCH haya terminado de ser procesado. Posterior a este procesamiento correcto, deberá iterarse sobre el elemento collection y procesar cada ResultCode individual de cada operació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 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:
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. Consulte la activación de este modo.
mode2: Autenticará al titular de la tarjeta mediante el sistema 3DSecure de VISA o MasterSecureCode de MasterCard. Este es el método más aconsejado para evitar una gran porcentaje de fraude dado que siempre se asegurará que el titular de la tarjeta está presente durante la entrada de estos datos. Consulte la activación de este modo.
none: Realmente esto indica la desactivación del chequeo de la tarjeta. Se aprovechará la venta que está realizando, para que en caso de ser una operación aceptada pueda almacenar la tarjeta de su cliente.. |
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
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 |
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.
- Identificador de operación: auth
- Descripción funcional: Autenticación de uso de PSS por canal seguro SSL con certificado cliente. Llamada previa y obligatoria antes del envío de los emails con los enlaces
- Método HTTP: POST
- URL REST <entorno de pruebas>:
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"
}
- JSON_Request:
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"
}
- JSON_Reply:
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 |
- Identificador de operación: PSS Link
- Descripción funcional: Generación y envío de enlace con los datos completos de la tarjeta. Una vez ejecutada esta llamada, si no se produce ningún error se enviarán dos correos electrónicos. En el primero de ellos se enviará un enlace web donde aparecerá un formulario en el que debe introducirse un código OTP. En el segundo email enviado, se indicará el código OTP que debe ser introducido en el enlace anterior. Solo se tienen tres intentos de introducción del código OTP.
- Método HTTP: POST
- URL REST <entorno de pruebas>:
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"
}
- JSON_Request:
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": "¿?"
}
- JSON_Reply:
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
Recomendaciones
A continuación se realizan algunas recomendacionesde uso y explotación del servicio:
- Se recomienda controlar el uso abusivo de esta funcionalidad.
- Se recomienda guardar todas las trazas devueltas por el API.
- Es muy recomendable realizar una formación básica tanto al receptor del enlace como al receptor del código de seguridad OTP.
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 |