Pago por referencia de Redsys (COF): qué es y cómo cobrar suscripciones

Qué pedir a tu banco, cómo encaja con PSD2 y qué hace falta, además del cobro, para que tus suscripciones se cobren y se facturen solas.

Qué es el pago por referencia de Redsys

El pago por referencia es la función del TPV virtual de Redsys que permite volver a cobrar a un cliente sin que tenga que escribir otra vez su tarjeta. En el primer pago, Redsys guarda la tarjeta y devuelve al comercio una referencia (también llamada token o identificador). En los cobros siguientes, el comercio envía esa referencia en lugar de los datos de la tarjeta.

Es lo que hace posibles los pagos recurrentes con Redsys: cuotas mensuales, suscripciones de software, matrículas, cuotas de socio o contratos de mantenimiento que se cobran solos cada periodo.

La tarjeta nunca sale de Redsys. El comercio solo guarda la referencia, que no sirve fuera de su número de comercio. Por eso no tiene que almacenar datos de tarjeta ni asumir las obligaciones de PCI DSS que eso conlleva.

Pago por referencia, COF y MIT: tres conceptos que van juntos

Cuando hables con tu banco o leas la documentación de Redsys verás tres términos. Conviene distinguirlos:

Un cobro de suscripción bien hecho es, por tanto, un MIT recurrente sobre una credencial COF que se obtuvo en un primer pago autenticado por el cliente.

Qué pedir a tu banco

El pago por referencia no siempre viene activado en un TPV virtual recién contratado. Antes de empezar, pide a tu banco o a su servicio de soporte del TPV:

  1. Que active el pago por referencia (tokenización) en tu número de comercio.
  2. Que permita las operaciones COF y MIT, es decir, los cobros recurrentes iniciados por el comercio sin el cliente presente.
  3. Los datos de acceso del entorno de pruebas, para hacer las primeras operaciones con la tarjeta de pruebas de Redsys sin mover dinero.
  4. Tu número de comercio (FUC), el terminal y la clave de firma de cada entorno, que necesitará la aplicación que vaya a cobrar.

Las comisiones del TPV no cambian por usar el pago por referencia: pagas lo mismo que tengas pactado con tu banco por cada operación.

Cómo funciona un cobro recurrente, paso a paso

1. Primer pago con el cliente presente

El cliente acepta las condiciones de la suscripción y paga en la página segura de Redsys, normalmente con autenticación 3D Secure (la confirmación en la aplicación de su banco). En esa operación el comercio pide a Redsys que guarde la tarjeta y la marca como primer pago COF recurrente.

2. Redsys devuelve la referencia

En la notificación del pago, Redsys envía la referencia de la tarjeta, su caducidad y el identificador de la operación inicial. El comercio guarda esos datos asociados a la suscripción.

3. Cobros siguientes sin el cliente

En cada periodo, el comercio envía a Redsys una petición directa (por REST, servidor a servidor) con el importe, la referencia y las marcas de MIT recurrente. No hay redirección ni intervención del cliente: el cobro se aprueba o se rechaza en el momento.

4. Cambio de tarjeta o baja

Si la tarjeta caduca o el cliente quiere usar otra, se repite el primer paso para obtener una referencia nueva. Cuando la suscripción termina, la referencia se puede borrar en Redsys para que no se pueda volver a usar.

PSD2 y autenticación reforzada en los pagos recurrentes

La directiva europea PSD2 exige autenticación reforzada (SCA) en los pagos con tarjeta por internet. En las suscripciones se cumple así:

Aun así, el banco del cliente puede pedir de forma puntual que confirme un cobro. Redsys lo indica con un código de respuesta específico (el 195). En ese caso no tiene sentido reintentar el cobro tal cual: hay que enviar al cliente un enlace para que lo confirme.

Para programadores: los parámetros del pago por referencia

Si vas a integrarlo tú, estos son los parámetros de Redsys que intervienen en cada fase. Se envían dentro de Ds_MerchantParameters, firmados con HMAC-SHA256 y la clave del comercio.

FaseParámetrosPara qué
Primer pago (redirección) DS_MERCHANT_IDENTIFIER=REQUIRED
DS_MERCHANT_COF_INI=S
DS_MERCHANT_COF_TYPE=R
Pedir que guarde la tarjeta y marcar la operación como primer pago COF recurrente.
Notificación del primer pago Ds_Merchant_Identifier
Ds_Merchant_Cof_Txnid
Ds_ExpiryDate
La referencia, el identificador de la operación inicial y la caducidad de la tarjeta, que hay que guardar.
Cobro recurrente (REST) DS_MERCHANT_IDENTIFIER=<referencia>
DS_MERCHANT_COF_INI=N
DS_MERCHANT_COF_TYPE=R
DS_MERCHANT_COF_TXNID=<id inicial>
DS_MERCHANT_EXCEP_SCA=MIT
DS_MERCHANT_DIRECTPAYMENT=true
Cobrar con la referencia como MIT recurrente, sin autenticación ni redirección. Se envía a trataPeticionREST.
Baja DS_MERCHANT_TRANSACTIONTYPE=44
DS_MERCHANT_IDENTIFIER=<referencia>
Borrar la referencia en Redsys.

Dos detalles que suelen dar problemas: el número de pedido debe ser único en cada operación, también en cada cobro recurrente; y la respuesta de la petición REST también va firmada, así que hay que comprobar su firma antes de dar el cobro por bueno.

Lo que hace falta además del cobro

Cobrar con la referencia es la parte sencilla. Para que un negocio de suscripciones funcione solo, alrededor del cobro hace falta:

Cobra suscripciones con Redsys sin programar el cobro

Crescere.VF hace todo lo anterior con tu propio TPV Redsys: primer pago con 3D Secure, cobros automáticos con la tarjeta guardada, reintentos y suspensión por impago, factura Verifactu en cada cobro y una API con avisos firmados para conectar tu SaaS.

Está incluido en el plan Empresarial y puedes probarlo 30 días gratis con tu TPV en modo pruebas.