Gestión de los wallets de comprador
Un wallet (billetera electrónica) permite que el comprador pueda almacenar varias tarjetas de pago y elegir la que desea utilizar en el momento de la compra, sin tener que ingresar su número de tarjeta.
La plataforma de pago almacena los datos bancarios de conformidad con las normas del RGPD (Reglamento General de Proteccion De Datos).
Principio de uso
- Cuando se muestra el formulario, el comprador tiene varias opciones:
- pagar sin guardar el medio de pago,
- pagar y guardar su medio de pago.
Si el comprador elige guardar los datos del medio de pago, la plataforma de pago los almacena y los vincula a su referencia de comprador (wallet del comprador).
En su próxima compra, el comprador tendrá varas opciones posibles:
- pagar utilizando un medio de pago guardado previamente en su wallet de comprador,
- pagar con un nuevo medio de pago y añadirlo a su wallet de comprador,
- pagar con un nuevo medio de pago sin añadirlo a su wallet de comprador,
- eliminar un medio de pago guardado previamente en su wallet de comprador.
No se ofrecen los medios de pago expirados.
Medios de pago admisibles
AMEX
CB
Tarjeta Titre-Restaurant
VISA
VISA ELECTRON
MASTERCARD
MAESTRO
Implementación
- El sitio web comercial debe asignar una referencia única a cada comprador (por ejemplo, el identificador de su cuenta de cliente en el sitio web comercial). El vendedor debe cerciorarse del carácter único del identificador.
- Para ofrecer el uso de un wallet de comprador al momento del pago, el sitio web comercial debe:
- llamar al Web Service Charge/CreatePayment,
- transmitir la referencia del comprador en el campo customer.reference
- Transmitir el campo formAction con el valor CUSTOMER_WALLET.
Casos de uso
- Utilizar un wallet de comprador durante un pago
- Guardar una tarjeta en un wallet de comprador sin pagar
- Eliminar una tarjeta registrada
Utilizar un wallet de comprador durante un pago
Este caso de utilización necesita crear un formToken a través de una llamada a Service Charge/CreatePayment.
Para indicar que desea usar un wallet de comprador, el sitio web del vendedor debe transmitir:
- la referencia del comprador en el campo customer.reference ,
- el campo formAction con el valor CUSTOMER_WALLET.
Se devolverá un error:
- Si la oferta de la tienda no incluye la opción "Pago por token".
- si el valor del campo formAction es CUSTOMER_WALLET pero no se transmite el campo *customer.reference**.
Nota sobre los datos del comprador asociados con el wallet del comprador
Los detalles de facturación (objeto billingDetails ) transmitidos al registrar el medio de pago se transfieren automáticamente a las transacciones realizadas con el wallet del comprador.
Sin embargo, si el vendedor transmite datos nuevos en la solicitud Charge/CreatePayment , los datos de la solicitud se utilizarán para la transacción. En ese caso, el token no se actualiza. En este caso, los datos del comprador asociados al modo de pago no se actualizan.
Si el vendedor desea actualizar los datos del comprador en todos los tokens asociados a la referencia del comprador, debe llamar al Web Service CustomerWallet/Update.
Ejemplo de solicitud POST Charge/CreatePayment
{ "amount": 40000, "currency": "EUR", "orderId": "myOrderId-999999", "formAction": "CUSTOMER_WALLET", "customer": { "email": "sample@example.com", "reference": "cust-001" } }
La respuesta contiene un **formToken** que se utilizará para mostrar el formulario.
{ "webService": "Charge/CreatePayment", "version": "V4", "applicationVersion": "5.13.0", "status": "SUCCESS", "answer": { "formToken": "10n5J2yTR-Sb6jnXXOohmfsw209eyJhbW91bnQiOjQwMDAwLCJjdXJyZW5jeSI6IkVVUiIsIm1vZGUiOiJURVNUIiwidmVyc2lvbiI6Mywib3JkZXJJZCI6Im15T3JkZXJJZC05OTk5OSIsInNob3BOYW1lIjoiRGVtbyBzaG9wIiwiYnJhbmRQcmlvcml0eSI6WyJCQU5DT05UQUNUIiwiTUFFU1RSTyJdLCJjYXRlZ29yaWVzIjp7ImRlYml0Q3JlZGl0Q2FyZHMiOnsiYXBwSWQiOiJjYXJkcyIsInBhcmFtIjpbIkVERU5SRUQiLCJBTUVYIiwiQ09ORUNTIiwiTUFTVEVSQ0FSRF9ERUJJVCIsIkRJU0NPVkVSIiwiVklTQSIsIlZJU0FfREVCSVQiLCJTT0RFWE8iLCJESU5FUlMiLCJNQUVTVFJPIiwiRS1DQVJURUJMRVVFIiwiQ0hRX0RFSiIsIk1BU1RFUkNBUkQiLCJCQU5DT05UQUNUIiwiQVBFVElaIiwiVklTQV9FTEVDVFJPTiIsIkNCIl19fSwiY2FyZHMiOnsiQ09ORUNTIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJBTUVYIjp7ImZpZWxkcyI6eyJzZWN1cml0eUNvZGUiOnsibWF4TGVuZ3RoIjo0fX0sImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJFREVOUkVEIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJNQVNURVJDQVJEX0RFQklUIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJESVNDT1ZFUiI6eyJjb3B5RnJvbSI6ImNhcmRzLkRFRkFVTFQifSwiVklTQSI6eyJjb3B5RnJvbSI6ImNhcmRzLkRFRkFVTFQifSwiRElORVJTIjp7ImZpZWxkcyI6eyJzZWN1cml0eUNvZGUiOnsicmVxdWlyZWQiOmZhbHNlfX0sImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJTT0RFWE8iOnsiY29weUZyb20iOiJjYXJkcy5ERUZBVUxUIn0sIlZJU0FfREVCSVQiOnsiY29weUZyb20iOiJjYXJkcy5ERUZBVUxUIn0sIk1BRVNUUk8iOnsiZmllbGRzIjp7InNlY3VyaXR5Q29kZSI6eyJyZXF1aXJlZCI6ZmFsc2V9LCJkb1JlZ2lzdGVyIjp7ImhpZGRlbiI6dHJ1ZX19LCJjb3B5RnJvbSI6ImNhcmRzLkRFRkFVTFQifSwiRS1DQVJURUJMRVVFIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJDSFFfREVKIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJNQVNURVJDQVJEIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJCQU5DT05UQUNUIjp7ImZpZWxkcyI6eyJzZWN1cml0eUNvZGUiOnsicmVxdWlyZWQiOmZhbHNlLCJoaWRkZW4iOnRydWV9LCJkb1JlZ2lzdGVyIjp7ImhpZGRlbiI6dHJ1ZX19LCJjb3B5RnJvbSI6ImNhcmRzLkRFRkFVTFQifSwiVklTQV9FTEVDVFJPTiI6eyJmaWVsZHMiOnsic2VjdXJpdHlDb2RlIjp7InJlcXVpcmVkIjpmYWxzZX19LCJjb3B5RnJvbSI6ImNhcmRzLkRFRkFVTFQifSwiQVBFVElaIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJERUZBVUxUIjp7ImZpZWxkcyI6eyJwYW4iOnsibWluTGVuZ3RoIjoxMCwibWF4TGVuZ3RoIjoxOSwidmFsaWRhdG9ycyI6WyJOVU1FUklDIiwiTFVITiJdLCJyZXF1aXJlZCI6dHJ1ZSwic2Vuc2l0aXZlIjp0cnVlLCJoaWRkZW4iOmZhbHNlLCJjbGVhck9uRXJyb3IiOmZhbHNlfSwiZXhwaXJ5RGF0ZSI6eyJyZXF1aXJlZCI6dHJ1ZSwic2Vuc2l0aXZlIjp0cnVlLCJoaWRkZW4iOmZhbHNlLCJjbGVhck9uRXJyb3IiOmZhbHNlfSwic2VjdXJpdHlDb2RlIjp7Im1pbkxlbmd0aCI6MywibWF4TGVuZ3RoIjo0LCJ2YWxpZGF0b3JzIjpbIk5VTUVSSUMiXSwicmVxdWlyZWQiOnRydWUsInNlbnNpdGl2ZSI6dHJ1ZSwiaGlkZGVuIjpmYWxzZSwiY2xlYXJPbkVycm9yIjp0cnVlfSwiZG9SZWdpc3RlciI6eyJ2YWx1ZSI6ImZhbHNlIiwidmFsaWRhdG9ycyI6WyJCT09MRUFOIl0sInJlcXVpcmVkIjpmYWxzZSwic2Vuc2l0aXZlIjpmYWxzZSwiaGlkZGVuIjpmYWxzZSwiY2xlYXJPbkVycm9yIjpmYWxzZX19fSwiQ0IiOnsiY29weUZyb20iOiJjYXJkcy5ERUZBVUxUIn19LCJwYXNzQWN0aXZhdGVkIjp0cnVlLCJhcGlSZXN0VmVyc2lvbiI6IjQuMCJ96902", "_type": "V4/Charge/PaymentForm" }, "ticket": null, "serverDate": "2020-09-25T10:09:36+00:00", "applicationProvider": "PAYZEN", "metadata": null, "_type": "V4/WebService/Response" }
Siguiendo los principios básicos de uso del cliente JavaScript, se utiliza el formToken generado al llamar al Web Service Charge/CreatePayment para especificar el ID del formulario que se debe mostrar en el atributo kr-form-token de su <div>
.
Se muestra el formulario:
El comprador ingresa los datos de su tarjeta, marca la casilla Guardar mi tarjeta y hace clic en el botón "Pagar".
Si el comprador ya había guardado una tarjeta en su wallet de comprador, los campos se rellenarán previamente con los datos de su medio de pago:
Si no desea pagar su compra con esta tarjeta, podrá ingresar un nuevo medio de pago, y eventualmente guardarlo, desde la pestaña "Nueva tarjeta":
Si el comprador ha guardado varios medios de pago en su wallet de comprador, deberá elegir la tarjeta que desea utilizar o ingresar una nueva tarjeta desde la pestaña "Nueva tarjeta":
Una vez realizado el pago, se envía una notificación al sitio web comercial a la URL definida en el Back Office del vendedor. El cliente JavaScript devuelve la misma información al navegador a través de la URL indicada en el parámetro kr-post-url-success cuando se muestra el formulario.
Entre la información transmitida, el objeto kr-answer contiene el objeto Payment con el detalle de la transacción realizada y del medio de pago utilizado.
Guardar una tarjeta en un wallet de comprador sin pagar
Este caso de utilización necesita crear un formToken a través de una llamada a Service Charge/CreatePayment.
Para indicar que desea usar un wallet del comprador, el sitio web del vendedor debe transmitir Referencia del comprador en el campo customer.reference.
Si no se transmite la referencia del comprador, la tarjeta se guarda y se crea un token, pero no se agrega al wallet.
En el próximo pago, si el sitio web comercial transmite la referencia del comprador (uso del wallet del comprador) la tarjeta no aparecerá en la lista de tarjetas guardadas.
Ejemplo de solicitud POST Charge/CreateToken
{ "currency": "EUR", "orderId": "myOrderId-999999", "customer": { "email": "sample@example.com", "reference": "cust-001" } }
La respuesta contiene un **formToken** que se utilizará para mostrar el formulario.
{ "webService": "Charge/CreateToken", "version": "V4", "applicationVersion": "5.13.0", "status": "SUCCESS", "answer": { "formToken": "10hIV6-LQ9TGeZIRI9C_zENg209eyJhbW91bnQiOjAsImN1cnJlbmN5IjoiRVVSIiwibW9kZSI6IlRFU1QiLCJ2ZXJzaW9uIjozLCJvcmRlcklkIjoibXlPcmRlcklkLTk5OTk5Iiwic2hvcE5hbWUiOiJEZW1vIHNob3AiLCJjYXRlZ29yaWVzIjp7ImRlYml0Q3JlZGl0Q2FyZHMiOnsiYXBwSWQiOiJjYXJkcyIsInBhcmFtIjpbIkFNRVgiLCJFLUNBUlRFQkxFVUUiLCJNQVNURVJDQVJEX0RFQklUIiwiTUFTVEVSQ0FSRCIsIkRJU0NPVkVSIiwiVklTQSIsIlZJU0FfRUxFQ1RST04iLCJWSVNBX0RFQklUIiwiQ0IiLCJESU5FUlMiXX19LCJjYXJkcyI6eyJBTUVYIjp7ImZpZWxkcyI6eyJzZWN1cml0eUNvZGUiOnsibWF4TGVuZ3RoIjo0fX0sImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJFLUNBUlRFQkxFVUUiOnsiY29weUZyb20iOiJjYXJkcy5ERUZBVUxUIn0sIk1BU1RFUkNBUkRfREVCSVQiOnsiY29weUZyb20iOiJjYXJkcy5ERUZBVUxUIn0sIkRJU0NPVkVSIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJNQVNURVJDQVJEIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJWSVNBIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJWSVNBX0VMRUNUUk9OIjp7ImZpZWxkcyI6eyJzZWN1cml0eUNvZGUiOnsicmVxdWlyZWQiOmZhbHNlfX0sImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJERUZBVUxUIjp7ImZpZWxkcyI6eyJwYW4iOnsibWluTGVuZ3RoIjoxMCwibWF4TGVuZ3RoIjoxOSwidmFsaWRhdG9ycyI6WyJOVU1FUklDIiwiTFVITiJdLCJyZXF1aXJlZCI6dHJ1ZSwic2Vuc2l0aXZlIjp0cnVlLCJoaWRkZW4iOmZhbHNlLCJjbGVhck9uRXJyb3IiOmZhbHNlfSwiZXhwaXJ5RGF0ZSI6eyJyZXF1aXJlZCI6dHJ1ZSwic2Vuc2l0aXZlIjp0cnVlLCJoaWRkZW4iOmZhbHNlLCJjbGVhck9uRXJyb3IiOmZhbHNlfSwic2VjdXJpdHlDb2RlIjp7Im1pbkxlbmd0aCI6MywibWF4TGVuZ3RoIjo0LCJ2YWxpZGF0b3JzIjpbIk5VTUVSSUMiXSwicmVxdWlyZWQiOnRydWUsInNlbnNpdGl2ZSI6dHJ1ZSwiaGlkZGVuIjpmYWxzZSwiY2xlYXJPbkVycm9yIjp0cnVlfX19LCJESU5FUlMiOnsiZmllbGRzIjp7InNlY3VyaXR5Q29kZSI6eyJyZXF1aXJlZCI6ZmFsc2V9fSwiY29weUZyb20iOiJjYXJkcy5ERUZBVUxUIn0sIkNCIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9LCJWSVNBX0RFQklUIjp7ImNvcHlGcm9tIjoiY2FyZHMuREVGQVVMVCJ9fSwicGFzc0FjdGl2YXRlZCI6dHJ1ZSwiYXBpUmVzdFZlcnNpb24iOiI0LjAifQ4a02", "_type": "V4/Charge/PaymentForm" }, "ticket": null, "serverDate": "2020-09-25T10:15:37+00:00", "applicationProvider": "PAYZEN", "metadata": null, "_type": "V4/WebService/Response" }
Una vez registrado el medio de pago, se envía una notificación al sitio web comercial a la URL definida en el Back Office del vendedor.
El cliente JavaScript devuelve la misma información al navegador a través de la URL indicada en el parámetro kr-post-url-success cuando se muestra el formulario.
El campo kr-answer transmitido contiene un objeto Payment que describe a transacción de verificación y contiene información sobre el token creado.
Solamente la presencia del campo customer.reference , cuyo valor es la referencia del comprador transmitida por el vendedor, permite identificar que la tarjeta se añadió al wallet del comprador.
Eliminar una tarjeta registrada
Durante el pago, el comprador puede solicitar la eliminación de una tarjeta guardada en su wallet de comprador haciendo clic en el ícono de papelera.
Se dice que la eliminación es "lógica" ya que se ha rescindido el token y ya no se puede utilizar para pagos. Pero todavía es visible en el Back Office del vendedor.
Conforme a las reglas de seguridad y de protección de los datos bancarios exigidas por PCI DSS, los datos del medio de pago serán eliminados si transcurrieron 15 meses sin utilizar el token asociado.
Una nueva configuración del Back Office del vendedor le permite configurar si la eliminación es automática o si debe ser realizada por el vendedor.
Eliminación automática
Al hacer clic en la papelera aparece un mensaje de confirmación:
Si el comprador hace clic en Eliminar , la tarjeta desaparece de la lista de tarjetas disponibles.
Esta acción activa las notificaciones basadas en la actualización de un token:
URL de notificación al final del pago
E-mail de confirmación de una creación de token destinado al comprador
E-mail de confirmación de la creación de un token enviado al vendedor
SMS de confirmación de creación de un token enviado al vendedor
SMS de confirmación de creación de un token enviado al comprador
Si la tarjeta eliminada era la única tarjeta guardada, la pestaña "Nueva tarjeta" se mostrará automáticamente.
Si la tarjeta está siendo utilizada para el pago de una suscripción automática, aparece un mensaje de advertencia que invita al comprador a comunicarse con el vendedor:
Para activar la eliminación automática:
- Desde el Back Office del vendedor, abra el menú Configuración > Empresa y haga clic en la pestaña Configuración de suscripciones y tokens.
- En la sección Configuración del wallet del comprador , marque la casilla Eliminación lógica del token autorizado por el comprador.
- Haga clic en Guardar para registrar sus cambios.
Eliminación manual
Al hacer clic en la papelera de reciclaje, aparece un mensaje de información invitando al comprador a ponerse en contacto con el vendedor:
Para activar la eliminación manual:
- Desde el Back Office del vendedor, abra el menú Configuración > Empresa y haga clic en la pestaña Configuración de suscripciones y tokens.
- En la sección Configuración del wallet del comprador , desmarque la casilla Eliminación lógica del token autorizado por el comprador.
- Haga clic en Guardar para registrar sus cambios.