las operaciones MIT, o Transacciones Iniciadas por el Comerciante, son aquellas transacciones que son iniciadas por el comercio sin la participación directa del cliente en el momento de la compra. Estas transacciones se utilizan comúnmente en situaciones donde los pagos se realizan de manera automática o programada.
Las principales características de las operaciones MIT son:
- Sin participación directa del cliente: a diferencia de las transacciones iniciadas por el cliente (CIT), en las operaciones MIT el cliente no necesita estar presente ni proporcionar detalles de pago en el momento de la transacción.
- Autorización previa: el cliente otorga una autorización previa para que el comerciante pueda realizar estas transacciones. Esta autorización suele darse al momento de establecer un acuerdo de pago recurrente o suscripción.
- Pagos recurrentes: Las MIT se utilizan frecuentemente para pagos recurrentes, como suscripciones mensuales, servicios de streaming, membresías de gimnasios, o cualquier servicio que requiera pagos periódicos.
- Cobros adicionales o ajustes: también se pueden usar para cobrar importantes adicionales aprobados previamente por el cliente, como en el caso de propinas, cargos por uso extra de servicios, o ajustes de facturación.
Para garantizar la seguridad de las operaciones MIT, se utiliza la tokenización. La tokenización reemplaza la información sensible de la tarjeta de crédito del cliente con un identificador único llamado referencia, que puede ser usado para procesar transacciones sin exponer los datos reales de la tarjeta. Esto protege tanto al cliente como al comerciante contra posibles fraudes y violaciones de datos.
Proceso de integración
En este apartado, verás como integrar COF y tokenización dentro de la operativa de pagos estándar que ya tengas implementada. Como verás a continuación, la manera de obtener una referencia y un ID de transacción es muy sencilla, y sólo tendrás que ocuparte de la lógica interna de gestión de esa referencia (cómo guardarla, cuando mostrarla a tu cliente, etcétera).
Opción 1. Integración gestionada por Redsys.
Paso 1. Generación de la referencia.
Esta integración es más sencilla para el comercio y es la que recomendamos hacer, para ello, en la primera operación se deben enviar los siguientes parámetros:
- Ds_Merchant_Identifier: Se debe enviar con el valor «REQUIRED». Este parámetro indica que deseas generar y que la gestión de la referencia la haga Redsys.
- Ds_Merchant_COF_INI: Parámetro que indica que se trata de una operativa COF. Para marcar que es la primera operación es necesario enviar Ds_Merchant_COF_INI con el valor «S».
- Ds_Merchant_COF_TYPE: Este parámetro siempre es opcional pero altamente recomendable. Indica el tipo de operativa COF que quieres utilizar en las sucesivas operaciones. Si este parámetro no se enviase, se usaría como predeterminado el valor «C» (otras). Puedes ver la tabla de valores aquí.
Ejemplo de petición al TPV-Virtual.
{ "DS_MERCHANT_IDENTIFIER": "REQUIRED", "DS_MERCHANT_COF_INI": "S", "DS_MERCHANT_COF_TYPE": "R" }
Ejemplo de respuesta del TPV-Virtual
{ "Ds_Amount": "145", "Ds_Currency": "978", "Ds_Order": "9722vBXOv5O", "Ds_MerchantCode": "999008881", "Ds_Terminal": "1", "Ds_Response": "0000", "Ds_AuthorisationCode": "381927", "Ds_TransactionType": "0", "Ds_SecurePayment": "0", "Ds_Language": "1", "Ds_CardNumber": "454881******0003", "Ds_ExpiryDate": "3412", "Ds_Merchant_Identifier": "120c14ed9f7264383434fc1154559f1e2bcc2b1c", "Ds_Card_Last4":"9123", "Ds_MerchantData": "", "Ds_Card_Country": "724", "Ds_Card_Brand": "1", "Ds_Merchant_Cof_Txnid": "2006031152000" }
En la respuesta, puedes observar tres nuevos parámetros que deberás almacenar:
- Ds_Merchant_Identifier: Tras haber enviado el parametro Ds_Merchant_Identifier con valor «REQUIRED» recibirás en ese mismo campo la referencia generada. Esta referencia es la que debes almacenar y enviar al TPV-Virtual en futuras operaciones. Además, presta atención al campo Ds_ExpiryDate, ya que este campo muestra la fecha de caducidad de la tarjeta y deberás almacenarlo para que tu cliente sepa cuándo caduca su tarjeta y no le permitas usarla en una fecha posterior a la misma. Esta fecha está devuelta en formato AAMM (diciembre de 2029, será 2912).
- Ds_Merchant_Cof_Txnid: Es la identificador de la operación original. Puedes no guardarlo si solicitaste la creación de referencia, ya que el TPV-Virtual lo incorporará automáticamente si no se especifica. De cualquier manera, recomendamos guardarlo con la referencia y enviarlo en las operaciones sucesivas.
- *NOTA: Es recomendable solicitar la configuración para recibir los datos de tarjeta del titular, para que así puedas mostrarlos a tus clientes y sepan que tarjeta van a usar. Tranquilo, los datos van a venis con ciertas partes asteriscadas, por lo que no hay ningún problema. Los campos que pueden venir informados son:
- Ds_CardNumber: Tarjeta con la que se ha autorizado la operación. Si tu cliente usó un token para pagar(como por ejemplo usó el método de pago GooglePay o ApplePay entre otros) ten en cuenta que la numeración no va a coincidir con su tarjeta lo que puede generar cierta confusión.
- Ds_Card_Last4: Campo en el que viajan los 4 últimos dígitos de la tarjeta real del cliente. Este campo viene informado cuando el pago se ha realizado con un token. Por lo que a la hora de mostrar información al cliente, si dispone de este campo, es preferible usar este al campo Ds_CardNumber.
Paso 2. Uso de la referencia. Pago 1-clic
Una vez que hemos obtenido el Ds_Merchant_Identifier, podemos empezar a operar con la referencia, para ello, tendrás que añadir estos nuevos parámetros a tu petición:
- Ds_Merchant_Identifier: Deberás adjuntar la referencia que se incluyó en la respuesta del TPV Virtual en la primera operación.
- Ds_Merchant_Cof_Txnid: Si guardaste este dato, puedes volver a enviarlo en la petición. Es opcional.
- Ds_Merchant_COF_TYPE: Si en la generación de referencia enviaste este parámetro, es recomendable volver a enviarlo. Es opcional.
- Ds_Merchant_Excep_Sca: Con valor MIT. Se debe enviar este parámetro de forma obligatoria si se quiere hacer operaciones MIT.
Además, en las operaciones sucesivas, debes tener en cuenta que como tu comercio es el que está iniciando la operación (una suscripción, por ejemplo) entonces debes incorporar el parámetro Ds_Merchant_DirectPayment con el valor «true».
Puedes usar como ejemplo de integración completa la mostrada dentro de la página Realizar un Pago, teniendo que agregar sólo los parámetros que se explican en los puntos anteriores o siguiendo los ejemplos siguientes. En las operaciones sucesivas usando inSite y una referencia generada anteriormente, no tienes por qué realizar el proceso de generación del idOper, ya que la referencia actuará como tal a la hora de realizar el proceso de autorización.
Ejemplo de los nuevos parámetros
"DS_MERCHANT_IDENTIFIER": "120c14ed9f7264383434fc1154559f1e2bcc2b1c", "Ds_Merchant_Cof_Txnid": "2006031152000", "DS_MERCHANT_COF_TYPE": "R", "DS_MERCHANT_EXCEP_SCA": "MIT", "DS_MERCHANT_DIRECTPAYMENT": "true"
Ejemplo de respuesta del TPV-Virtual
{ "Ds_Amount": "145", "Ds_Currency": "978", "Ds_Order": "9722vBXOv5O", "Ds_MerchantCode": "999008881", "Ds_Terminal": "1", "Ds_Response": "0000", "Ds_AuthorisationCode": "381927", "Ds_TransactionType": "0", "Ds_SecurePayment": "0", "Ds_Language": "1", "Ds_CardNumber": "454881******0003", "Ds_ExpiryDate": "3412", "Ds_Merchant_Identifier": "120c14ed9f7264383434fc1154559f1e2bcc2b1c", "Ds_Card_Last4":"9123", "Ds_MerchantData": "", "Ds_Card_Country": "724", "Ds_Card_Brand": "1", "Ds_Merchant_Cof_Txnid": "2006031152000" }
Puedes usar como ejemplo de integración completa la mostrada dentro de la página Realizar un Pago, teniendo que agregar sólo los parámetros que se explican en los puntos anteriores o siguiendo los ejemplos siguientes. En las operaciones sucesivas usando inSite y una referencia generada anteriormente, no tienes por qué realizar el proceso de generación del idOper, ya que la referencia actuará como tal a la hora de realizar el proceso de autorización.
Opción 2. Integración gestionada por el comercio
Esta opción es más compleja, y requiere el comercio sea PCI-DSS para poder almacenar los datos de la tarjeta. En estos casos. Aquí Redsys no generará ninguna referencia.
Paso 1. Primera operación
- Ds_Merchant_COF_INI: Parámetro que indica que se trata de una operativa COF. Para marcar que es la primera operación es necesario enviar Ds_Merchant_COF_INI con el valor «S».
- Ds_Merchant_COF_TYPE: Este parámetro siempre es opcional pero altamente recomendable. Indica el tipo de operativa COF que quieres utilizar en las sucesivas operaciones. Si este parámetro no se enviase, se usaría como predeterminado el valor «C» (otras). Puedes ver la tabla de valores aquí.
Ejemplo de los nuevos parámetros que se deben añadir en la primera operación.
"DS_MERCHANT_COF_INI": "S", "DS_MERCHANT_COF_TYPE": "R"
Ejemplo de respuesta del TPV-Virtual
{ "Ds_Amount": "145", "Ds_Currency": "978", "Ds_Order": "9722vBXOv5O", "Ds_MerchantCode": "999008881", "Ds_Terminal": "1", "Ds_Response": "0000", "Ds_AuthorisationCode": "381927", "Ds_TransactionType": "0", "Ds_SecurePayment": "0", "Ds_Language": "1", "Ds_CardNumber": "454881******0003", "Ds_ExpiryDate": "3412", "Ds_MerchantData": "", "Ds_Card_Country": "724", "Ds_Card_Brand": "1", "Ds_Merchant_Cof_Txnid": "2006031152000" }
Paso 2. Uso sucesivo de las tarjetas almacenadas por parte del comercio.
Tras recibir la respuesta, se debe almacenar el Ds_Merchant_COF_TXNID y enviarlo en las operaciones sucesivas.
- Ds_Merchant_COF_TXNID: Es el identificador que se incluyó en la respuesta del TPV Virtual en la primera operación.
- Ds_Merchant_COF_TYPE: Este parámetro siempre es opcional pero altamente recomendable. Indica el tipo de operativa COF que quieres utilizar en las sucesivas operaciones. Si este parámetro no se enviase, se recuperaría el utilizado en la primera operación.
- Ds_Merchant_Excep_Sca: Con valor MIT. Se debe enviar este parametro de forma obligatoria si se quiere hacer operaciones MIT.
Además, en las operaciones sucesivas, debes tener en cuenta que como tu comercio es el que está iniciando la operación (una suscripción, por ejemplo) entonces debes incorporar el parámetro Ds_Merchant_DirectPayment con el valor «true».
Ejemplo de los nuevos parámetros que se deben añadir:
"DS_MERCHANT_PAN": "4548**********03", "DS_MERCHANT_EXPIRYDATE": "4912", "DS_MERCHANT_COF_TXNID": "2006031152000", "DS_MERCHANT_COF_TYPE": "R", "DS_MERCHANT_EXCEP_SCA": "MIT", "DS_MERCHANT_DIRECTPAYMENT": "true"
Ejemplo de respuesta del TPV-Virtual.
{ "Ds_Amount": "145", "Ds_Currency": "978", "Ds_Order": "9722vBXOv5O", "Ds_MerchantCode": "999008881", "Ds_Terminal": "1", "Ds_Response": "0000", "Ds_AuthorisationCode": "381927", "Ds_TransactionType": "0", "Ds_SecurePayment": "0", "Ds_Language": "1", "Ds_CardNumber": "454881******0003", "Ds_ExpiryDate": "3412", "Ds_MerchantData": "", "Ds_Card_Country": "724", "Ds_Card_Brand": "1", "Ds_Merchant_Cof_Txnid": "2006031152000" }