Integración Full Screen / Iframe
Importante
La integración GET está obsoleta. Recomendamos usar la integración REST.
- Introducción
- Integración para la captura de datos
-
Integración BANKSTORE IFRAME
-
Ejecución de Alta de Usuario en el sistema (
add_user
) -
Ejecución de Cobro (Alta implícita de Usuario en el sistema) (
execute_purchase
) -
Ejecución de Alta de Suscripción (Alta implícita de Usuario en el sistema) (
create_subscription
) -
Ejecución de Cobro a un usuario existente (
execute_purchase_token
) -
Ejecución de Alta de Suscripción a un usuario existente (
create_subscription_token
) -
Ejecución de Alta de Preautorización (Alta Implícita de Usuario en el sistema) (
create_preauthorization
) -
Ejecución de Confirmación de Preautorización (
preauthorization_confirm
) -
Ejecución de Cancelación de Preautorización (
preauthorization_cancel
) -
Alta de Preautorización a un usuario existente (
create_preauthorization_token
) -
Alta de Preautorización a un usuario por Referencia (
create_preauthorization_rtoken
) -
Ejecución de Cobro a un usuario por Referencia (
execute_purchase_rtoken
)
-
Ejecución de Alta de Usuario en el sistema (
- Sobreescritura de parámetros URLOK y URLKO
- Anexo I – Tipos de operaciones
- 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
)
Importante
Las suscripciones no se ejecutan en cuentas sandbox.
Las suscripciones se pueden programar, modificar y eliminar pero en cuentas sandbox no se ejecutarán.
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
)
Importante
Este método supone el alta de la tarjeta en PAYCOMET, no es válido para cobros posteriores con excepción MIT. Para registrar la tarjeta contra el procesador de cara a cobros recurrentes posteriores, es necesario realizar un cobro por entorno seguro, indiferentemente de la cantidad.
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))
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Importante
El máximo de caracteres para las URL OK y KO es de 255.
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. |