Integración Full Screen / Iframe

  1. Introducción
  2. Integración para la captura de datos
    1. Operativa de captura de datos (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. Alta de Preautorización a un usuario por Referencia (create_preauthorization_rtoken)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
    11. Ejecución de Cobro a un usuario por Referencia (execute_purchase_rtoken)
      1. Cálculo de Firma
      2. Notificación (Llamada a URL)
  4. Sobreescritura de parámetros URLOK y URLKO
  5. Anexo I – Tipos de operaciones
  6. Anexo II - Firma avanzada VHASH

Introducción

La finalidad de utilizar una integración 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 para la captura de datos

Esta solución permite la generación de un formulario de captura de datos 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ás solicitarlo mediante la apertura de un ticket administrativo desde: (Soporte -> Crear ticket -> Administrativa-Operativa).

En esta sección podrás 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:

La plantilla se puede personalizar desde la sección: (Terminales->"Nombre de terminal"->Formulario de pago). Aqui se encuentran los campos modificables mediante estilos CSS y una previsualización de dichos cambios.

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 -> Crear ticket -> Administrativa-Operativa).

Te 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 las integraciones XML y REST para ejecutar compras, modificación de las suscripciones, información de los datos de tarjeta del usuario, cancelación de suscripciones, etc...

Operativa de captura de datos (ejemplo)

La finalidad de utilizar una integración 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 la 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 formulario de captura de datos 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 el formulario de captura de datos 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 formulario de captura de datos 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 un formulario de captura de datos.

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 or REST) 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://api.paycomet.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"  sandbox="allow-top-navigation allow-scripts allow-same-origin allow-forms" src="https://api.paycomet.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>

Para evitar bloqueos en las redirecciones requeridas por el proceso de pago en algunos navegadores con restricciones de seguridad es imprescindible indicar estos parámetros en la declaración del iframe.

sandbox="allow-top-navigation allow-scripts allow-same-origin allow-forms"

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)
114 Alta de Suscripción a un usuario existente (execute_purchase_rtoken)
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)
117 Alta de Preautorización a un usuario por Referencia (create_preauthorization_rtoken)

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,5} 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] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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):

SHA512( 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 Tipo de tarjeta (Crédito, débito, cargo)
cardCategory Alfanumérico Categoría de tarjeta. Si se puede identificar, se enviará información sobre la categoría de la tarjeta. De lo contrario, el campo se devolverá en blanco.
sepaCard Numérico Tarjeta perteneciente a país SEPA.
serialNumber Alfanumérico Número de serie del TPV físico.
paycometId Numérico Identificador único de la transacción.

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):

SHA512( 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,5} 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] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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]{125} Opcional. Descripción del producto
MERCHANT_DESCRIPTOR [A-Za-z0-9]{1,25} Opcional. Permite al comercio enviar un texto de hasta 25 caracteres que se imprimirá en la factura del cliente. Uso exclusivo de caracteres simples, sin acentos ni caracteres especiales.
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.
MERCHANT_DATA
JSON Opcional. Información de autenticación del cliente. Cuanta más información se proporcione en este campo, más probable será la autorización de la operación sin solicitar autenticación adicional. Por esta razón se recomienda el envío del máximo de información posible. Ver detalle
MERCHANT_SCA_EXCEPTION
[LWV|TRA|MIT|COR|MOT] Opcional TIPO DE EXCEPCIÓN AL PAGO SEGURO. Si no se especifica PAYCOMET tratará de asignarle el más adecuado si fuera posible. Ver detalle
MERCHANT_TRX_TYPE [I|R|H|E|D|M|N|C]  Condicional Obligatorio sólo si se ha elegido una excepción MIT en el campo MERCHANT_SCA_EXCEPTION. Ver detalle

Cálculo de Firma

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

SHA512( 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.

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,5} 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] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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. IMPORTANTE: Las suscripciones se cobran en la primera ejecución si este campo tiene valor se tendrá en cuenta para los futuros cargos.
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.
MERCHANT_DATA
JSON Opcional. Información de autenticación del cliente. Cuanta más información se proporcione en este campo, más probable será la autorización de la operación sin solicitar autenticación adicional. Por esta razón se recomienda el envío del máximo de información posible. Ver detalle

Cálculo de Firma

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

SHA512( 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.

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,5} 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] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} Obligatorio. Referencia de la operación.
MERCHANT_PRODUCTDESCRIPTION [a-zA-Z0-9]{125} Opcional. Descripción del producto
MERCHANT_DESCRIPTOR [A-Za-z0-9]{1,25} Opcional. Permite al comercio enviar un texto de hasta 25 caracteres que se imprimirá en la factura del cliente. Uso exclusivo de caracteres simples, sin acentos ni caracteres especiales.
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.
MERCHANT_DATA
JSON Opcional. Información de autenticación del cliente. Cuanta más información se proporcione en este campo, más probable será la autorización de la operación sin solicitar autenticación adicional. Por esta razón se recomienda el envío del máximo de información posible. Ver detalle
MERCHANT_SCA_EXCEPTION
[LWV|TRA|MIT|COR|MOT] Opcional TIPO DE EXCEPCIÓN AL PAGO SEGURO. Si no se especifica PAYCOMET tratará de asignarle el más adecuado si fuera posible. Ver detalle
MERCHANT_TRX_TYPE [I|R|H|E|D|M|N|C]  Condicional Obligatorio sólo si se ha elegido una excepción MIT en el campo MERCHANT_SCA_EXCEPTION. Ver detalle

Cálculo de Firma

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

SHA512( 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.

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,5} 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] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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. IMPORTANTE: Las suscripciones se cobran en la primera ejecución si este campo tiene valor se tendrá en cuenta para los futuros cargos.
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.
MERCHANT_DATA
JSON Opcional. Información de autenticación del cliente. Cuanta más información se proporcione en este campo, más probable será la autorización de la operación sin solicitar autenticación adicional. Por esta razón se recomienda el envío del máximo de información posible. Ver detalle

Cálculo de Firma

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

SHA512( 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.

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,5} 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] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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]{125} Opcional. Descripción del producto
MERCHANT_SCORING [0-100] Opcional. Valor de scoring de riesgo de la transacción. Entre 0 y 100.
MERCHANT_DATA
JSON Opcional. Información de autenticación del cliente. Cuanta más información se proporcione en este campo, más probable será la autorización de la operación sin solicitar autenticación adicional. Por esta razón se recomienda el envío del máximo de información posible. Ver detalle
MERCHANT_SCA_EXCEPTION
[LWV|TRA|MIT|COR|MOT] Opcional TIPO DE EXCEPCIÓN AL PAGO SEGURO. Si no se especifica PAYCOMET tratará de asignarle el más adecuado si fuera posible. Ver detalle
MERCHANT_TRX_TYPE [I|R|H|E|D|M|N|C]  Condicional Obligatorio sólo si se ha elegido una excepción MIT en el campo MERCHANT_SCA_EXCEPTION. Ver detalle

Cálculo de Firma

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

SHA512( 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.

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,5} 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] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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]{125} Opcional. Descripción del producto
MERCHANT_DESCRIPTOR [A-Za-z0-9]{1,25} Opcional. Permite al comercio enviar un texto de hasta 25 caracteres que se imprimirá en la factura del cliente. Uso exclusivo de caracteres simples, sin acentos ni caracteres especiales.
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):

SHA512( 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,5} 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] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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]{125} 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):

SHA512( 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,5} 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] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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.
MERCHANT_DATA
JSON Opcional. Información de autenticación del cliente. Cuanta más información se proporcione en este campo, más probable será la autorización de la operación sin solicitar autenticación adicional. Por esta razón se recomienda el envío del máximo de información posible. Ver detalle
MERCHANT_SCA_EXCEPTION
[LWV|TRA|MIT|COR|MOT] Opcional TIPO DE EXCEPCIÓN AL PAGO SEGURO. Si no se especifica PAYCOMET tratará de asignarle el más adecuado si fuera posible. Ver detalle
MERCHANT_TRX_TYPE [I|R|H|E|D|M|N|C]  Condicional Obligatorio sólo si se ha elegido una excepción MIT en el campo MERCHANT_SCA_EXCEPTION. Ver detalle

Cálculo de Firma

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

SHA512( 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.

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);
}

Alta de Preautorización a un usuario por Referencia

Función: (create_preauthorization_rtoken)

Esta operación realiza una preautorización en base a un token obtenido previamente mediante la solución de Pago por Referencia. 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,5} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Alta de Preautorización a un usuario por Referencia es: 117
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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_IDENTIFIER [0-9]{8} Obligatorio. Identificador obtenido mediante anterior Pago por Referencia
MERCHANT_GROUP [0-9]{9} Opcional. Identificador del código de grupo asociado a la referencia
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.
MERCHANT_DATA
JSON Opcional. Información de autenticación del cliente. Cuanta más información se proporcione en este campo, más probable será la autorización de la operación sin solicitar autenticación adicional. Por esta razón se recomienda el envío del máximo de información posible. Ver detalle
MERCHANT_SCA_EXCEPTION
[LWV|TRA|MIT|COR|MOT] Opcional TIPO DE EXCEPCIÓN AL PAGO SEGURO. Si no se especifica PAYCOMET tratará de asignarle el más adecuado si fuera posible. Ver detalle
MERCHANT_TRX_TYPE [I|R|H|E|D|M|N|C]  Condicional Obligatorio sólo si se ha elegido una excepción MIT en el campo MERCHANT_SCA_EXCEPTION. Ver detalle

Cálculo de Firma

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

SHA512( MERCHANT_MERCHANTCODE + MERCHANT_IDENTIFIER + MERCHANT_GROUP + 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.

Ejemplos de integración en diferentes lenguajes:

function CreatePreauthorizationRtokenUrl(
    $transreference,
    $amount,
    $currency,
    $merchantIdentifier,
    $merchantGroup,
    $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 = 117;
$operation->Reference = $transreference;
$operation->Amount = $amount;
$operation->Currency = $currency;
$operation->Language = $lang;
$operation->Concept = $description;
$operation->MerchantIdentifier = $merchantIdentifier;
$operation->MerchantGroup = $merchantGroup;
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 Cobro a un usuario por Referencia

Función: (execute_purchase_rtoken)

Este método permite ejecutar un cobro en base a un token obtenido previamente mediante la solución de Pago por Referencia

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,5} Obligatorio. Número de terminal
OPERATION [0-9]{1,3} Obligatorio. Tipo de operación en Ejecución de Cobro a un usuario por Referencia es: 114
LANGUAGE [A-Za-z0-9]{2} Idioma del entorno de cobro ("ES","EN","FR","DE","IT")
MERCHANT_MERCHANTSIGNATURE [a-zA-Z0-9] Obligatorio. Ver cálculo de firma a continuación.
MERCHANT_ORDER [A-Za-z0-9]{1,12} 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_IDENTIFIER [0-9]{8} Obligatorio. Identificador obtenido mediante anterior Pago por Referencia
MERCHANT_GROUP [0-9]{9} Opcional. Identificador del código de grupo asociado a la referencia
MERCHANT_PRODUCTDESCRIPTION [a-zA-Z0-9]{125} Opcional. Descripción del producto
MERCHANT_DESCRIPTOR [A-Za-z0-9]{1,25} Opcional. Permite al comercio enviar un texto de hasta 25 caracteres que se imprimirá en la factura del cliente. Uso exclusivo de caracteres simples, sin acentos ni caracteres especiales.
3DSECURE [0-1]{1} Obligatorio. Realización de la operación en modo seguro (valor 1) / no seguro (valor 0). En ejecución de Cobro a un usuario por Referencia es: 1
MERCHANT_SCORING [0-100] Opcional. Valor de scoring de riesgo de la transacción. Entre 0 y 100.
MERCHANT_DATA
JSON Opcional. Información de autenticación del cliente. Cuanta más información se proporcione en este campo, más probable será la autorización de la operación sin solicitar autenticación adicional. Por esta razón se recomienda el envío del máximo de información posible. Ver detalle
MERCHANT_SCA_EXCEPTION
[LWV|TRA|MIT|COR|MOT] Opcional TIPO DE EXCEPCIÓN AL PAGO SEGURO. Si no se especifica PAYCOMET tratará de asignarle el más adecuado si fuera posible. Ver detalle
MERCHANT_TRX_TYPE [I|R|H|E|D|M|N|C]  Condicional Obligatorio sólo si se ha elegido una excepción MIT en el campo MERCHANT_SCA_EXCEPTION. Ver detalle

Cálculo de Firma

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

SHA512( 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 cobro a un usuario por referencia se efectuará conforme a lo descrito en el apartado Llamada url Notificación.

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 necesitas utilizarla verifica este punto con PAYCOMET.

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 validación de tarjeta
14 Cancelación de validación de tarjeta
16 Confirmación de validación de tarjeta
106 Retroceso
107 Alta de usuario Bankstore

Anexo II - 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.