Integración BankStore IFRAME/XML

  1. Introducción
  2. Integración Iframe para la captura de datos
    1. Operativa del BANKSTORE IFRAME (ejemplo)
    2. Modalidades de cobro en función a la integración
  3. Integración BANKSTORE IFRAME
    1. Ejecución de Alta de Usuario en el sistema (add_user)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    2. Ejecución de Cobro (Alta implícita de Usuario en el sistema) (execute_purchase)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    3. Ejecución de Alta de Suscripción (Alta implícita de Usuario en el sistema) (create_subscription)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    4. Ejecución de Cobro a un usuario existente (execute_purchase_token)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    5. Ejecución de Alta de Suscripción a un usuario existente (create_subscription_token)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    6. Ejecución de Alta de Preautorización (Alta Implícita de Usuario en el sistema) (create_preauthorization)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    7. Ejecución de Confirmación de Preautorización (preauthorization_confirm)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    8. Ejecución de Cancelación de Preautorización (preauthorization_cancel)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    9. Alta de Preautorización a un usuario existente (create_preauthorization_token)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    10. Ejecución de alta de preautorización diferida (alta implícita de usuario en el sistema) (deferred_preauthorization)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    11. Ejecución de Confirmación de Preautorización Diferida (deferred_preauthorization_confirm)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    12. Ejecución de Cancelación de Preautorización Diferida (deferred_preauthorization_cancel)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
  4. Sobreescritura de parámetros URLOK y URLKO
  5. Notificación caducidad tarjeta
    1. Notificación (Llamada a URL)
  6. Anexo I – Tipos de operaciones
  7. Anexo III - Firma avanzada VHASH

Introducción

La finalidad de utilizar una integración IFRAME para la captación de los datos de tarjeta del cliente, es facilitar el cumplimiento de la norma PCI-DSS de la aplicación web. De esta forma la recogida de los datos bancarios se realiza en el entorno seguro de PAYCOMET para posteriormente tratarlos en una conversación Server2Server sin riesgo de robo de datos.

Integración Iframe para la captura de datos

Esta solución permite la generación de un IFRAME con el look&feel predefinido en el panel de control del producto. Esta solución debe ser activada por PAYCOMET, por lo que si no aparece en el panel de control, deberá solicitarlo mediante la apertura de un ticket administrativo (Soporte → Notificación de incidencia → Departamento administrativo).

En esta sección podrá ver una previsualización de los estilos aplicados más abajo. Los estilos permiten la referencia a sites externos pero deberán responder con un certificado digital correctamente firmado por una entidad de confianza, de lo contrario el navegador del cliente mostrará un error que creará desconfianza en su cliente:

En la sección de la configuración del producto Bankstore IFRAME, justo debajo de la previsualización, encontrará los parámetros que son modificables desde el panel:

Estos serán parametrizables mediante propiedades CSS para ajustarse al diseño de su aplicación.

Si las propiedades disponibles no se ajustan a las necesidades de la aplicación, es posible solicitar un desarrollo de “Template” específico mediante la apertura de un ticket administrativo (Soporte → Notificación de incidencia → Departamento administrativo).

Le informaremos de los pasos a seguir y la normativa de dicho desarrollo.

Las funcionalidades disponibles en Bankstore IFRAME son:

  • Función: (add_user)
  • Función: (execute_purchase)
  • Función: (create_subscription)

Dichas funcionalidades son las que implican la recogida de los datos bancarios del cliente. De forma posterior, una vez recogidos los datos IDUSER y TOKENUSER, se podrán utilizar los procedimientos SOAP para ejecutar compras, modificación de las suscripciones, información de los datos de tarjeta del usuario, cancelación de suscripciones, etc...

Operativa del BANKSTORE IFRAME (ejemplo)

La finalidad de utilizar una integración IFRAME para la captación de los datos de tarjeta del cliente, es facilitar el cumplimiento de la norma PCI-DSS de la aplicación web. De esta forma la recogida de los datos bancarios se realiza en el entorno seguro de PAYCOMET para posteriormente tratarlos en una conversación Server2Server sin riesgo de datos susceptibles de robo

En un entorno ficticio encontraríamos el siguiente escenario:

Un comercio con alta recurrencia quiere almacenar los datos bancarios del cliente para facilitar las compras futuras. La técnica de la recogida de sus datos bancarios son dos:

  • Desde su cuenta de cliente. En su panel de control puede modificar sus datos de facturación, envío e incluso sus tarjetas de crédito/débito asociadas. De esta forma al finalizar el carrito de compra, con sólo pulsar un botón realizará el pago del pedido
  • En la primera compra. El cliente introduce todos sus datos bancarios en el proceso final del carrito de compra y quedarán almacenados para compras futuras. De esta forma, elalmacenamiento se realiza de una forma “transparente” al finalizar su pedido.

En el primer caso, el cliente se autentica en la plataforma del e-commerce porque es un usuario previamente dado de alta. Entra en su panel de control y elige añadir una tarjeta de crédito/débito a su cuenta para realizar los pagos. El comercio muestra de una forma integrada en su panel de control, un IFRAME generado mediante Bankstore IFRAME y PAYCOMET notifica al comercio del resultado. El comercio almacena los datos IDUSER y TOKENUSER a la cuenta del cliente (puede tener varios, para disponer de varias tarjetas), para posteriormente realizar los cobros.

El cliente introduce los datos en un IFRAME de PAYCOMET (integrado estéticamente con la web del comercio) y PAYCOMET notifica en diferido los datos IDUSER y TOKENUSER en caso de éxito.

El comercio almacena los datos asociados a la cuenta de su cliente para poder ejecutar un cobro mediante una integración SOAP XML

En el segundo caso (almacenamiento en la primera compra), el cliente realiza el pedido normalmente y en la selección del método de pago por tarjeta de crédito/débito le solicita los datos bancarios para proceder al pago.

Los datos bancarios los introduce en un IFRAME generado por PAYCOMET devolviendo tanto los datos del almacenamiento del usuario (IDUSER y TOKENUSER) como el resultado de la transacción

Este caso sólo se produce si el comercio no dispone de los dos datos IDUSER y TOKENUSER. En caso contrario la comunicación no se haría mediante IFRAME.

En la situación que el comercio disponga de los datos IDUSER y TOKENUSER, ya bien por la obtención mediante un add_user, el cliente ha introducido sus datos desde su panel de control del comercio, o mediante execute_purchase, el cliente ya ha realizado una compra con anterioridad, el método para realizar una compra es diferente. El método a utilizar será mediante una conexión Server2Server XML SOAP donde el comercio utilizará el servicio execute_purchase de forma directa con PAYCOMET.

Se recomienda utilizar algún tipo de autenticación (tipo PIN o similar) para ejecutar el servicio de execute_purchase para evitar compras no solicitadas.

Dichas compras no solicitadas suelen ser motivo de disputa de la operación pudiendo incurrir en gastos adicionales por parte de la entidad bancaria y si se trata de una falta reiterada, se podría llegar a cancelar la cuenta.

Modalidades de cobro en función a la integración

Es importante entender las dos integraciones de cara a construir la operativa del comercio.

Cobro 3DSecure Cobro No Seguro Responsabilidad de la captación de la tarjeta
add_user (Bankstore IFRAME) SI SI PAYCOMET
execute_purchase (Bankstore IFRAME) SI SI PAYCOMET
create_subscription (Bankstore IFRAME) SI SI PAYCOMET
add_user (Bankstore SOAP XML) NO SI Comercio
execute_purchase (Bankstore SOAP XML) NO SI Comercio
create_subscription (Bankstore SOAP XML) NO SI Comercio

Integración BANKSTORE IFRAME

La integración mediante un marco IFRAME (una página web independiente ubicada dentro de otra página web, en este caso la pasarela de pago de PAYCOMET y la tienda respectivamente) se realiza mediante un objeto IFRAME con origen la dirección URL

https://secure.paytpv.com/gateway/ifr-bankstore

A continuación mostramos un ejemplo del código HTML (se han simplificado los parámetros de llamada, que se tratarán más adelante):

<iframe title="titulo" src="https://secure.paytpv.com/gateway/ifr-bankstore?MERCHANT_MERCHANTCODE=0gs265nc……" width="400" height="525" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" style="border: 0px solid #000000; padding: 0px; margin: 0px"></iframe>

Los parámetros de llamada deben formatearse de la siguiente manera:

PARAM1=VALOR1&PARAM2=VALOR2&PARAM3=VALOR3

Operaciones permitidas:

ID Operación
107 Alta de Usuario en el sistema (add_user)
1 Cobro (Alta implícita de Usuario en el sistema) (execute_purchase)
9 Alta de Suscripción (Alta implícita de Usuario en el sistema) (create_subscription)
109 Cobro a un usuario existente (execute_purchase_token)
110 Alta de Suscripción a un usuario existente (create_subscription_token)
3 Alta de Preautorizacion (Alta implícita de Usuario en el sistema) (create_preauthorization)
6 Confirmación de Preautorizacion (preauthorization_confirm)
4 Cancelación de Preautorizacion (preauthorization_cancel)
111 Alta de Preautorización a un usuario existente (create_preauthorization_token)
13 Alta de Preautorizacion diferida(Alta implícita de Usuario en el sistema) (defered_create_preauthorization)
16 Confirmación de Preautorizacion diferida (defered_preauthorization_confirm)
14 Cancelación de Preautorizacion diferida (defered_preauthorization_cancel)

Parámetros

Ejecución de Alta de Usuario en el sistema

Función: (add_user)

Esta operación dará de alta un nuevo usuario en el sistema y realizará la notificación correspondiente.

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación. Para altas de usuarios en el sistema el tipo de operación será 107
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Identificador de la operación.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación del alta de usuario en el sistema solamente se enviará mediante llamada a la URL configurada en el panel de control. No se enviará notificación del alta de usuario por correo electrónico.

A la URL de destino se le pasan los parámetros de la notificación con el método POST según la siguiente tabla:

Elemento Contenido Descripción
TransactionType Numérico Tipo de operación (107)
TransactionName Alfanumérico Descripción del tipo de operación
CardCountry Alfanumérico País de emisión de la tarjeta. Puede ser un valor vacío
DateTime Numérico Fecha de la operación. Formato yyyymmddhhmmss
Signature Alfanumérico Firma de la notificación. Ver Cálculo de Firma de Notificación
Order Alfanumérico Referencia pasada por el comercio
Response Alfanumérico Estado final de la operación. OK / KO
ErrorID Numérico Código de error.
0 = No hay error
1 = La operación ha devuelto un error
Language Alfanumérico Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
AccountCode Alfanumérico Código de cliente
TpvID Alfanumérico Número de terminal
IdUser Numérico Id del nuevo usuario registrado en el sistema. En caso de error se devolverá vacío.
TokenUser Alfanumérico Token del nuevo usuario registrado en el sistema. En caso de error se devolverá vacío.
CardType Alfanumérico (Empty), CREDIT, DEBIT, CHARGE CARD

Cálculo de Firma

Las notificaciones incluirán una firma para la comprobación de la integridad de los datos. El cálculo de la misma se realiza de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + DateTime + md5(PASSWORD))
Ejemplos de integración en diferentes lenguajes:

function AddUserUrl(
    $transreference,
    $lang = "ES",
    $urlOk = null,
    $urlKo = null,
    $secure3d = false)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 107;
$operation->Reference = $transreference;
$operation->Language = $lang;
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de Cobro (Alta implícita de Usuario en el sistema)

Función: (execute_purchase)

Esta operación dará de alta un nuevo usuario en el sistema y realizará la operación de cobro sobre ese usuario. Se notificará del resultado del alta de usuario y la operación de cobro.

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Ejecución de Cobro es: 1
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100, 4,50 EUROS = 450...
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
MERCHANT_PRODUCTDESCRIPTION [a-zA-Z0-9]{40} Opcional. Descripción del producto
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_SCORING [0-100] Opcional. Valor de scoring de riesgo de la transacción. Entre 0 y 100.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + MERCHANT_CURRENCY + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la ejecución de un cobro a un nuevo usuario en el sistema se efectuará conforme a lo descrito en el apartado Llamada Url Notificación.

A la URL de destino se le pasan los parámetros de la notificación ya especificados en Llamada url Notificación y en caso de alta de usuario y cobro correcto, se devolverán además:

Elemento Contenido Descripción
IdUser Numérico Id del nuevo usuario registrado en el sistema. En caso de error se devolverá vacío.
TokenUser Alfanumérico Token del nuevo usuario registrado en el sistema. En caso de error se devolverá vacío.
Ejemplos de integración en diferentes lenguajes:

function ExecutePurchaseUrl(
    $transreference,
    $amount,
    $currency,
    $lang = "ES",
    $description = false,
    $secure3d = false,
    $scoring = null,
    $urlOk = null,
    $urlKo = null,
    $merchant_data = null,
    $merchant_description = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 1;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->Concept = $description;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($scoring) {
    $operation->Scoring = (int)$scoring;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
if ($merchant_data) {
    $operation->Merchant_data = $merchant_data;
}
if ($merchant_description) {
    $operation->Merchant_description = $merchant_description;
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de Alta de Suscripción (Alta implícita de Usuario en el sistema)

Función: (create_subscription)

El alta de una subscripción implica el alta de un usuario en el sistema BankStore de PAYCOMET. Esta operación dará de alta un nuevo usuario en el sistema y realizará la operación del primer cobro de la suscripción. Se notificará del resultado de la suscripción.

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Alta de Suscripción es: 9
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
SUBSCRIPTION_STARTDATE [0-9]{8} Obligatorio. Fecha de inicio de la suscripción yyyymmdd
SUBSCRIPTION_ENDDATE [0-9]{8} Obligatorio. Fecha de fin de la suscripción yyyymmdd
SUBSCRIPTION_PERIODICITY [0-9]{1-365} Obligatorio. Periodicidad de la suscripción. Expresado en días.
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_SCORING [0-100] Opcional. Valor de scoring de riesgo de la transacción. Entre 0 y 100.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + MERCHANT_CURRENCY + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la creación de una suscripción (que implica la ejecución del primer cobro) a un nuevo usuario en el sistema se efectuará conforme a lo descrito para notificaciones Llamada url Notificación.

A la URL de destino se le pasan los parámetros de la notificación ya especificados en Llamada url Notificación y en caso de alta de suscripción correcta (+ operación de cobro correcta), se devolverán además:

Elemento Contenido Descripción
IdUser Numérico Id del nuevo usuario registrado en el sistema. En caso de error se devolverá vacío.
TokenUser Alfanumérico Token del nuevo usuario registrado en el sistema. En caso de error se devolverá vacío.
Ejemplos de integración en diferentes lenguajes:

function CreateSubscriptionUrl(
    $transreference,
    $amount,
    $currency,
    $startdate,
    $enddate,
    $periodicity,
    $lang = "ES",
    $secure3d = false,
    $scoring = null,
    $urlOk = null,
    $urlKo = null,
    $merchant_data = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 9;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->StartDate = $startdate;
$operation->EndDate = $enddate;
$operation->Periodicity = $periodicity;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($scoring) {
    $operation->Scoring = (int)$scoring;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
if ($merchant_data) {
    $operation->Merchant_data = $merchant_data;
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de Cobro a un usuario existente

Función: (execute_purchase_token)

Esta operación realiza un cobro a un usuario dado de alta previamente en el sistema. Se notificará el resultado de la operación (como un Tipo 1, Autorización).

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Ejecución de Cobro a un usuario existente es: 109
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
IDUSER [0-9]{1,13} Obligatorio. Identificador único del usuario registrado en el sistema.
TOKEN_USER [A-Za-z0-9]{1,20} Obligatorio. Código token asociado al IDUSER.
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_SCORING [0-100] Opcional. Valor de scoring de riesgo de la transacción. Entre 0 y 100.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + IDUSER + TOKEN_USER + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + MERCHANT_CURRENCY + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la ejecución de un cobro a un usuario existente en el sistema se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

A la URL de destino se le pasan los parámetros de la notificación ya especificados en Llamada url Notificación y además:

Elemento Contenido Descripción
IdUser Numérico Id del usuario enviado.
TokenUser Alfanumérico Token del usuario enviado.
Ejemplos de integración en diferentes lenguajes:

function ExecutePurchaseTokenUrl(
    $transreference,
    $amount,
    $currency,
    $iduser,
    $tokenuser,
    $lang = "ES",
    $description = false,
    $secure3d = false,
    $scoring = null,
    $urlOk = null,
    $urlKo = null,
    $merchant_data = null,
    iframe$merchant_description = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 109;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->IdUser = $iduser;
$operation->TokenUser = $tokenuser;
$operation->Language = $lang;
$operation->Concept = $description;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($scoring) {
    $operation->Scoring = (int)$scoring;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
if ($merchant_data) {
    $operation->Merchant_data = $merchant_data;
}
if ($merchant_description) {
    $operation->Merchant_description = $merchant_description;
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de Alta de Suscripción a un usuario existente

Función: (create_subscription_token)

Esta operación realiza la creación de una suscripción a un usuario ya existente en el sistema y ejecuta la operación del primer cobro de la misma. Se notificará el resultado de la operación (como un Tipo 9, Suscripción).

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Alta de Suscripción a un usuario existente es: 110
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
SUBSCRIPTION_STARTDATE [0-9]{8} Obligatorio. Fecha de inicio de la suscripción yyyymmdd
SUBSCRIPTION_ENDDATE [0-9]{8} Obligatorio. Fecha de fin de la suscripción yyyymmdd
SUBSCRIPTION_PERIODICITY [0-9]{1-365} Obligatorio. Periodicidad de la suscripción. Expresado en días.
IDUSER [0-9]{1,13} Obligatorio. Identificador único del usuario registrado en el sistema.
TOKEN_USER [A-Za-z0-9]{1,20} Obligatorio. Código token asociado al IDUSER.
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_SCORING [0-100] Opcional. Valor de scoring de riesgo de la transacción. Entre 0 y 100.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + IDUSER + TOKEN_USER + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + MERCHANT_CURRENCY + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la ejecución de un cobro a un usuario existente en el sistema se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

A la URL de destino se le pasan los parámetros de la notificación ya especificados en Llamada url Notificación y además:

Elemento Contenido Descripción
IdUser Numérico Id del usuario enviado.
TokenUser Alfanumérico Token del usuario enviado.
Ejemplos de integración en diferentes lenguajes:

function CreateSubscriptionTokenUrl(
    $transreference,
    $amount,
    $currency,
    $startdate,
    $enddate,
    $periodicity,
    $iduser,
    $tokenuser,
    $lang = "ES",
    $secure3d = false,
    $scoring = null,
    $urlOk = null,
    $urlKo = null,
    $merchant_data = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 110;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->StartDate = $startdate;
$operation->EndDate = $enddate;
$operation->Periodicity = $periodicity;
$operation->IdUser = $iduser;
$operation->TokenUser = $tokenuser;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($scoring) {
    $operation->Scoring = (int)$scoring;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
if ($merchant_data) {
    $operation->Merchant_data = $merchant_data;
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de Alta de Preautorización (Alta Implícita de Usuario en el sistema)

Función: (create_preauthorization)

Esta operación dará de alta un nuevo usuario en el sistema y realizará la operación de alta de preautorización. Se notificará del resultado del alta de usuario y la operación de preautorización.

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Alta de preautorización es: 3
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_PRODUCTDESCRIPTION [a-zA-Z0-9]{40} Opcional. Descripción del producto
MERCHANT_SCORING [0-100] Opcional. Valor de scoring de riesgo de la transacción. Entre 0 y 100.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + MERCHANT_CURRENCY + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la ejecución de un cobro a un usuario existente en el sistema se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

A la URL de destino se le pasan los parámetros de la notificación ya especificados en Llamada url Notificación y además:

Elemento Contenido Descripción
IdUser Numérico Id del usuario enviado.
TokenUser Alfanumérico Token del usuario enviado.
Ejemplos de integración en diferentes lenguajes:

function CreatePreauthorizationUrl(
    $transreference,
    $amount,
    $currency,
    $lang = "ES",
    $description = false,
    $secure3d = false,
    $scoring = null,
    $urlOk = null,
    $urlKo = null,
    $merchant_data = null,
    $merchant_description = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 3;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->Concept = $description;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($scoring) {
    $operation->Scoring = (int)$scoring;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
if ($merchant_data) {
    $operation->Merchant_data = $merchant_data;
}
if ($merchant_description) {
    $operation->Merchant_description = $merchant_description;
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de Confirmación de Preautorización

Función: (preauthorization_confirm)

Esta operación realizará la operación de confirmación de preautorización. Se notificará del resultado de la operación de confirmación de preautorización.

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Confirmación de preautorización es: 6
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_PRODUCTDESCRIPTION [a-zA-Z0-9]{40} Opcional. Descripción del producto
IDUSER [0-9]{1,13} Obligatorio. Identificador único del usuario registrado en el sistema.
TOKEN_USER [A-Za-z0-9]{1,20} Obligatorio. Código token asociado al IDUSER.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + IDUSER + TOKEN_USER + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la ejecución de un cobro a un usuario existente en el sistema se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

Ejemplos de integración en diferentes lenguajes:

function PreauthorizationConfirmUrl(
    $transreference,
    $amount,
    $currency,
    $iduser,
    $tokenuser,
    $lang = "ES",
    $description = false,
    $secure3d = false,
    $urlOk = null,
    $urlKo = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 6;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->Concept = $description;
$operation->IdUser = $iduser;
$operation->TokenUser = $tokenuser;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
$check_user_exist = $this->InfoUser($operation->IdUser,
        $operation->TokenUser);
if ($check_user_exist->DS_ERROR_ID != 0) {
    return $this->SendResponse(array("DS_ERROR_ID" => $check_user_exist->DS_ERROR_ID));
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de Cancelación de Preautorización

Función: (preauthorization_cancel)

Esta operación realizará la operación de cancelación de preautorización. Se notificará del resultado de la operación de cancelación de preautorización.

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Cancelación de preautorización es: 4
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_PRODUCTDESCRIPTION [a-zA-Z0-9]{40} Opcional. Descripción del producto
IDUSER [0-9]{1,13} Obligatorio. Identificador único del usuario registrado en el sistema.
TOKEN_USER [A-Za-z0-9]{1,20} Obligatorio. Código token asociado al IDUSER.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + IDUSER + TOKEN_USER + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la ejecución de un cobro a un usuario existente en el sistema se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

Ejemplos de integración en diferentes lenguajes:

function PreauthorizationCancelUrl(
    $transreference,
    $amount,
    $currency,
    $iduser,
    $tokenuser,
    $lang = "ES",
    $description = false,
    $secure3d = false,
    $urlOk = null,
    $urlKo = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 4;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->Concept = $description;
$operation->IdUser = $iduser;
$operation->TokenUser = $tokenuser;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
$check_user_exist = $this->InfoUser($operation->IdUser,
        $operation->TokenUser);
if ($check_user_exist->DS_ERROR_ID != 0) {
    return $this->SendResponse(array("DS_ERROR_ID" => $check_user_exist->DS_ERROR_ID));
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Alta de Preautorización a un usuario existente

Función: (create_preauthorization_token)

Esta operación realiza una preautorización a un usuario dado de alta previamente en el sistema. Se notificará el resultado de la operación (como un Tipo 3, Preautorización).

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Ejecución de Preautorización a un usuario existente es: 111
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
IDUSER [0-9]{1,13} Obligatorio. Identificador único del usuario registrado en el sistema.
TOKEN_USER [A-Za-z0-9]{1,20} Obligatorio. Código token asociado al IDUSER.
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_SCORING [0-100] Opcional. Valor de scoring de riesgo de la transacción. Entre 0 y 100.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + IDUSER + TOKEN_USER + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + MERCHANT_CURRENCY + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la ejecución de un cobro a un usuario existente en el sistema se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

A la URL de destino se le pasan los parámetros de la notificación ya especificados en Llamada url Notificación y además:

Elemento Contenido Descripción
IdUser Numérico Id del usuario enviado.
TokenUser Alfanumérico Token del usuario enviado.
Ejemplos de integración en diferentes lenguajes:

function CreatePreauthorizationTokenUrl(
    $transreference,
    $amount,
    $currency,
    $iduser,
    $tokenuser,
    $lang = "ES",
    $description = false,
    $secure3d = false,
    $scoring = null,
    $urlOk = null,
    $urlKo = null,
    $merchant_data = null,
    $merchant_description = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 111;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->Concept = $description;
$operation->IdUser = $iduser;
$operation->TokenUser = $tokenuser;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($scoring) {
    $operation->Scoring = (int)$scoring;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
if ($merchant_data) {
    $operation->Merchant_data = $merchant_data;
}
if ($merchant_description) {
    $operation->Merchant_description = $merchant_description;
}
$check_user_exist = $this->InfoUser($operation->IdUser,
        $operation->TokenUser);
if ($check_user_exist->DS_ERROR_ID != 0) {
    return $this->SendResponse(array("DS_ERROR_ID" => $check_user_exist->DS_ERROR_ID));
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de alta de preautorización diferida (alta implícita de usuario en el sistema)

Función: (deferred_preauthorization)

Esta operación dará de alta un nuevo usuario en el sistema y realizará la operación de alta de preautorización diferida. Se notificará del resultado del alta de usuario y la operación de preautorización diferida (Tipo 13).

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Alta de preautorización diferida es: 13
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_PRODUCTDESCRIPTION [a-zA-Z0-9]{40} Opcional. Descripción del producto
MERCHANT_SCORING [0-100] Opcional. Valor de scoring de riesgo de la transacción. Entre 0 y 100.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + MERCHANT_CURRENCY + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la preautorización diferida en el sistema se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

A la URL de destino se le pasan los parámetros de la notificación ya especificados en Llamada url Notificación y además:

Elemento Contenido Descripción
IdUser Numérico Id del usuario enviado.
TokenUser Alfanumérico Token del usuario enviado.
Ejemplos de integración en diferentes lenguajes:

function DeferredPreauthorizationUrl(
    $transreference,
    $amount,
    $currency,
    $lang = "ES",
    $description = false,
    $secure3d = false,
    $scoring = null,
    $urlOk = null,
    $urlKo = null,
    $merchant_data = null,
    $merchant_description = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 13;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->Concept = $description;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($scoring) {
    $operation->Scoring = (int)$scoring;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
if ($merchant_data) {
    $operation->Merchant_data = $merchant_data;
}
if ($merchant_description) {
    $operation->Merchant_description = $merchant_description;
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de Confirmación de Preautorización Diferida

Función: (deferred_preauthorization_confirm)

Esta operación realizará la operación de confirmación de preautorización diferida. Se notificará del resultado de la operación de confirmación de preautorización diferida (Tipo 16).

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Confirmación de preautorización diferida es: 16
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_PRODUCTDESCRIPTION [a-zA-Z0-9]{40} Opcional. Descripción del producto
IDUSER [0-9]{1,13} Obligatorio. Identificador único del usuario registrado en el sistema.
TOKEN_USER [A-Za-z0-9]{1,20} Obligatorio. Código token asociado al IDUSER.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + IDUSER + TOKEN_USER + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la ejecución de una preautorización diferida se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

Ejemplos de integración en diferentes lenguajes:

function DeferredPreauthorizationConfirmUrl(
    $transreference,
    $amount,
    $currency,
    $iduser,
    $tokenuser,
    $lang = "ES",
    $description = false,
    $secure3d = false,
    $urlOk = null,
    $urlKo = null)
{
$pretest = array();
$operation = new stdClass();
$operation->Type = 16;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->Concept = $description;
$operation->IdUser = $iduser;
$operation->TokenUser = $tokenuser;
if ($secure3d != false) {
    $operation->Secure3D = $secure3d;
}
if ($urlOk) {
    $operation->UrlOk = $urlOk;
}
if ($urlKo) {
    $operation->UrlKo = $urlKo;
}
$check_user_exist = $this->InfoUser($operation->IdUser,
        $operation->TokenUser);
if ($check_user_exist->DS_ERROR_ID != 0) {
    return $this->SendResponse(array("DS_ERROR_ID" => $check_user_exist->DS_ERROR_ID));
}
$operation->Hash = $this->GenerateHash($operation,
        $operation->Type);
$lastrequest = $this->ComposeURLParams($operation,
        $operation->Type);
$pretest = $this->CheckUrlError($lastrequest);
$pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
return $this->SendResponse($pretest);
}

Ejecución de Cancelación de Preautorización Diferida

Función: (deferred_preauthorization_cancel)

Esta operación realizará la operación de cancelación de preautorización diferida. Se notificará del resultado de la operación de cancelación de preautorización diferida (Tipo 14).

Para ejecutar una llamada correcta será necesario entregar los siguientes datos:

Elemento Contenido Descripción
MERCHANT_MERCHANTCODE [A-Za-z0-9]{1,8} Obligatorio. Código de cliente
MERCHANT_TERMINAL [0-9]{1,4} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Cancelación de preautorización diferida es: 14
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9]{40} Obligatorio. Ver apartado Cálculo de Firma de Notificación
MERCHANT_ORDER [A-Za-z0-9]{1,20} Obligatorio. Referencia de la operación.
MERCHANT_AMOUNT [0-9]{1,8} Obligatorio. Importe de la operación en formato entero. 1,00 EURO = 100
4,50 EUROS = 450
MERCHANT_CURRENCY [EUR][USD][GBP][JPY] Obligatorio. Moneda de la transacción. Ver más información en MONEDAS
3DSECURE [0-1]{1} Opcional. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). Si no se informa: no seguro.
MERCHANT_PRODUCTDESCRIPTION [a-zA-Z0-9]{40} Opcional. Descripción del producto
IDUSER [0-9]{1,13} Obligatorio. Identificador único del usuario registrado en el sistema.
TOKEN_USER [A-Za-z0-9]{1,20} Obligatorio. Código token asociado al IDUSER.

Cálculo de Firma

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

md5(MERCHANT_MERCHANTCODE + IDUSER + TOKEN_USER + MERCHANT_TERMINAL + OPERATION + MERCHANT_ORDER + MERCHANT_AMOUNT + md5(PASSWORD))

Notificación (Llamada a URL)

La notificación de la ejecución de una cancelación de preautorización diferida se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

Ejemplos de integración en diferentes lenguajes:

function DeferredPreauthorizationCancelUrl(
    $transreference,
    $amount,
    $currency,
    $iduser,
    $tokenuser,
    $lang = "ES",
    $description = false,
    $secure3d = false,
    $urlOk = null,
    $urlKo = null)
{
    $pretest = array();
    $operation = new stdClass();
    $operation->Type = 14;
    $operation->Reference = $transreference;
    $operation->Amount = $amount;
    $operation->Currency = $currency;
    $operation->Language = $lang;
    $operation->Concept = $description;
    $operation->IdUser = $iduser;
    $operation->TokenUser = $tokenuser;
    if ($secure3d != false) {
        $operation->Secure3D = $secure3d;
    }
    if ($urlOk) {
        $operation->UrlOk = $urlOk;
    }
    if ($urlKo) {
        $operation->UrlKo = $urlKo;
    }
    $check_user_exist = $this->InfoUser($operation->IdUser,
            $operation->TokenUser);
    if ($check_user_exist->DS_ERROR_ID != 0) {
        return $this->SendResponse(array("DS_ERROR_ID" => $check_user_exist->DS_ERROR_ID));
    }
		$data["MERCHANT_MERCHANTCODE"] = $this->merchantCode;
		$data["MERCHANT_TERMINAL"] = $this->terminal;
		$data["OPERATION"] = $operationtype;
		$data["LANGUAGE"] = $operationdata->Language;
		$data["MERCHANT_MERCHANTSIGNATURE"] = $operationdata->Hash;
        $data["URLOK"] = $operationdata->UrlOk;
        $data["URLKO"] = $operationdata->UrlKo;

    $operation->Hash = $this->GenerateHash($operation,
            $operation->Type);
    $lastrequest = $this->ComposeURLParams($operation,
            $operation->Type);
    $pretest = $this->CheckUrlError($lastrequest);
    $pretest["URL_REDIRECT"] = ($this->endpointurl.$lastrequest);
    return $this->SendResponse($pretest);
}

Sobreescritura de parámetros URLOK y URLKO

Adicionalmente a los parámetros citados para cada tipo de operación, y de forma genérica y transversal a todas las operativas, es posible sobreescribir los parámetros URLOK y URLKO. Dichos parámetros indican al sistema las URL a las que redirigir el resultado de la operación, en función de su éxito o rechazo.

Esta posibilidad está disponible en prácticamente todas las entidades bancarias. Si necesita utilizarla verifique este punto con PAYCOMET.

Notificación caducidad tarjeta

Para los usuarios dados de alta en el sistema Bankstore, existe la posibilidad de recibir una notificación informativa que avisará de la próxima caducidad de la tarjeta correspondiente a ese usuario / token.

Notificación (Llamada a URL)

A la URL de destino se le pasan los parámetros de la notificación con el método POST según la siguiente tabla:

TransactionType Numérico Tipo de operación (108) Ver TIPOS DE OPERACIONES.
TransactionName Alfanumérico Descripción de operación.
IdUser Numérico Id del usuario registrado en el sistema.
Terminal Numérico Identificador del terminal.
Name Alfanumérico Nombre del producto.
Domain Alfanumérico Dominio del producto.
MonthsToExpire Numérico Meses para la caducidad.

Recibir este tipo de notificaciones debe ser habilitado específicamente por PAYCOMET. Puede consultarnos a través del portal de cliente en el menú “Soporte -> Notificación de incidencia”.

Anexo I – Tipos de operaciones

Los tipos de operaciones que se notificarán, se detallan en la siguiente tabla:

ID Operación
1 Autorización
2 Devolución
3 Preautorización
4 Cancelación de preautorización
6 Confirmación de preautorización
9 Suscripción
13 Preautorización diferida
14 Cancelación de preautorización diferida
16 Confirmación de preautorización diferida
106 Retroceso
107 Alta de usuario Bankstore
108 Caducidad de Tarjeta

Anexo III - Firma avanzada VHASH

La firma avanzada VHASH tiene como objetivo securizar y mantener la integridad de la información de datos personales que pueden contener las variables enviadas en la generación del IFRAME. Esta funcionalidad, debe ser activada por PAYCOMET.

La firma que enviará el comercio a la pasarela se calculará de la siguiente forma (en pseudo-código):

SHA512( MD5( QUERY_STRING + MD5( PASSWORD ) ) )

La firma calculada, se debe incluir en los parámetros de la llamada.

Elemento Contenido Descripción
VHASH [A-Za-z0-9]{128} Opcional. Firma avanzada.