Documentación integración WANNME
1. Introducción
Bienvenidos a la documentación de integración de WANNME. Durante estas páginas explicaremos los distintos modos de integración con nuestra plataforma. Esta documentación está destinada a técnicos y desarrolladores que quieran integrarse con WANNME.
Disponemos de dos formas de comunicación con nuestra plataforma: un APIREST securizado para la comunicación entre sistemas y módulos de pago o plugins para las plataformas CMS descritas en el punto 5.
2. Autenticación
2.1. Credenciales
Es necesario ponerse en contacto con WANNME para la obtención de las credenciales de operación. Estas credenciales son únicas por empresa colaboradora y entorno (sandbox / producción).
- Usuario web
- Contraseña web
- Partner Id
- Clave privada (necesaria para la firma de las peticiones, no debe ser distribuida ni usada como texto plano)
- APIKEY de acceso al APIREST
2.2. Entornos
Disponemos de dos entornos, un entorno de sandbox y un entorno de producción. Todas nuestras URL están disponibles a través de HTTPS.
El entorno de sandbox está dedicado a pruebas durante el proceso de desarrollo de las integraciones con las empresas colaboradoras. En este entorno tanto los datos como las transacciones no son reales, siendo siempre utilizados datos de pruebas que se destruyen cada cierto tiempo. En el entorno de producción tanto los datos como las operaciones son reales.
URL sandbox https://rest-demo.wannme.com/integration/v2
URL producción https://rest.wannme.com/integration/v2
Documentación técnica API Reference
2.3. Autenticación
Para asegurar la autenticación de las peticiones que se realizan al APIREST, todas deben incluir los siguientes elementos:
- APIKEY en cabecera: La cabecera de la petición debe incluir el APIKEY de acceso al APIREST (Ver 4. Integración APIREST para más información).
- Checksum y Partner Id en el cuerpo: El cuerpo de la petición debe incluir dos parámetros que aseguran su autenticación. Por un lado el PartnerId que identifica al comercio y por otro un parámetro de control resumen de la petición denominado checksum. Este está compuesto por una cadena codificada en SHA512 que concatena algunos parámetros significativos de la petición (definidos en cada end-point) y la clave privada del comercio. Esta clave privada solo deberá ser incluida como parte de la firma en las peticiones nunca como texto plano.
En los callbacks de notificaciones nuestras peticiones incluirán de igual modo al parámetro checksum, construido de igual manera. En cada notificación o end-point se especifica la forma de construir la cadena para posteriormente cifrarla con el algoritmo SHA512.
Si se envía una petición sin incluir el checksum se recibirá una respuesta con estado 400. En caso de mandar un checksum no válido para esa petición, se recibirá una respuesta con estado 500
3. Uso de la integración
A continuación se presenta una serie de listas con los datos maestros utilizados WANNME. Toda esta información se puede obtener a través de sus correspondientes end-points, por ejemplo los estados de los cobros: /wannmepay/masterdata/.
3.1. Estados de los cobros
Los cobros pueden tener los siguientes estados:
URL de consulta: integration/v2/wannmepay/masterdata/payment-states
Código | Nombre | Descripción |
---|---|---|
1 | Creado | Estado inicial |
2 | Compartido | Estado abierto |
3 | Pago en proceso | El cobro no puede ser alterado |
4 | Error | Estado transitorio. El cobro puede ser reseteado |
5 | Pago completado | Estado final |
6 | Medio añadido | Estado final |
7 | Accedido | Estado abierto |
8 | Pago incompleto | Estado final |
9 | Cancelado | Estado final |
10 | Caducado | Estado final |
11 | Firma en proceso | Estado transitorio |
12 | Firma completada | Estado transitorio |
13 | Reembolso total | Estado final |
Cuando un cobro se crea figura en estado CREADO. Cuando el usuario accede al cobro se situa en estado ACCEDIDO. En el momento en el que el usuario procede al pago el cobro se situa en PAGO EN PROCESO, de donde puede transitar hacia el estado PAGO COMPLETADO o ERROR / PAGO INCOMPLETO sino ha podido pagar. El cobro se situará en estado CADUCADO si el usuario no ha realizado el pago antes de la fecha de caducidad fijada en la creación del cobro.
3.1.1. Sub estados de los cobros
Los cobros pueden tener los siguientes sub-estados:
Código | Estado | Descripción |
---|---|---|
1 | Pago tarjeta | Este sub estado indica que el cliente ha realizado el primer pago con tarjeta en un cobro con financiación instantánea |
2 | Denegada | Un cobro con financiación instantánea ha sido denegado por la entidad financiera |
3 | Admin | Este sub estado indica el autor de la cancelación de un cobro |
4 | Financiación completada | Este sub estado indica que el cliente ha finalizado el pago de sus cuotas en un cobro con financiación instantánea |
5 | Punto venta | Este sub estado indica el autor de la cancelación de un cobro |
6 | Pendiente verificación | Este sub estado indica que un cobro en proceso se encuentra en estudio de la documentación por parte de la entidad financiera |
7 | Pago incompleto | En el caso de domiciliaciones bancarias, el proceso no ha concluido |
8 | Integración | Este sub estado indica el autor de la creación del cobro |
9 | Pay checkout | Este sub estado indica el autor del último acceso |
10 | Programado | Un cobro con sub estado programado es una domiciliación ejecutada y programada para su cobro |
18 | Reembolso parcial | Este sub estado indica que se ha producido un reembolso parcial en el cobro |
19 | Reembolsos con error | El cobro tiene algún error en alguno de sus reembolsos parciales |
20 | Auto | El sistema ha reseteado el cobro automáticamente a un estado compartido |
21 | Carga masiva | Este sub estado indica el autor de la creación del cobro |
22 | POS | Este sub estado indica el autor de la creación del cobro |
23 | Liquidado | El cobro ha sido conciliado con los pagos al comercio |
24 | Devuelto | El cobro se encuentra en estado de error y la causa es por devolución de la domiciliación bancaria |
25 | Rechazado | El cobro se encuentra en estado de error y la causa es por rechazo de la domiciliación bancaria |
27 | Devolución en proceso | Dependiendo del método de pago, algunas devoluciones pueden no ser inmediatas |
28 | Pendiente de autorización | Significa que el usuario necesita dar su consentimiento para realizar la transferencia, en algunos métodos de pago de transferencia bancaria |
29 | Pre autorizado | Significa que el el flujo de autorización del consentimiento tiene 2 pasos y el usuario ha llevado a cabo el primero de ellos, en algunos métodos de pago de transferencia bancaria |
31 | Autorizado | Significa que el banco da consentimiento para crear el cobro, en algunos métodos de pago de transferencia bancaria |
Los sub estados del cobro aportan más información sobre un cobro cuando se encuentra en alguna determinada etapa.
3.2. Estados de los recobros
Los recobros pueden tener los siguientes estados:
URL de consulta: integration/v2/wannmepay/masterdata/debt-case-states
Código | Descripción |
---|---|
1 | Creado |
2 | Cancelado |
3 | Error |
4 | En proceso |
5 | Finalizado |
3.2.1. Sub estados de los recobros
Los recobros pueden tener los siguientes sub-estados:
Código | Descripción |
---|---|
5 | Cobros con error |
3.3. Estados de los recurrentes
Los recurrentes pueden tener los siguientes estados:
URL de consulta: integration/v2/wannmepay/masterdata/recurrent-states
Código | Nombre | Descripción |
---|---|---|
1 | Creado | Estado inicial |
2 | Detenido | Recurrencia detenida, el recurrente puede ser alterado |
3 | Cancelado | Estado final |
4 | Finalizado | Estado final |
5 | En proceso | Recurrencia en marcha, el recurrente no puede ser alterado |
6 | Error | Estado final |
3.3.1. Sub estados de los recurrentes
Los recurrentes pueden tener los siguientes sub-estados:
Código | Nombre | Descripción |
---|---|---|
4 | Cuotas con error | Alguna de las cuotas ha fallado |
5 | Cuotas finalizadas | Todas las cuotas han sido ejecutadas con éxito (complementario al estado finalizado) |
11 | Con cuotas reembolsadas | Alguna de las cuotas ha sido reembolsada |
12 | Con cuotas canceladas | Alguna de las cuotas ha sido cancelada |
13 | Con cuotas reembolsadas y canceladas | Alguna de las cuotas ha sido reembolsada y alguna otra cancelada |
14 | Pendiente de método de pago | El recurrente ha sido inicializado pero todavía no se ha capturado método de pago para la recurrencia (solo en modalidad de recurrencia de ejecución automática) |
15 | Con cobros pendientes | Alguno de sus cobros permanece en proceso |
3.4. Estados de los agrupados
Los agrupados pueden tener los siguientes estados:
URL de consulta: integration/v2/wannmepay/masterdata/merge-payment-states
Código | Descripción |
---|---|
CREATED | Creado |
IN_PROGRESS | En proceso |
COMPLETED | Finalizado |
ERROR | Error |
CANCELLED | Cancelado |
EXPIRED | Caducado |
REFUNDED | Reembolsado |
3.4.1. Sub estados de los agrupados
Los agrupados pueden tener los siguientes sub-estados:
URL de consulta: integration/v2/wannmepay/masterdata/merge-payment-sub-states
Código | Descripción |
---|---|
VALIDATION_ERROR | Error de validación en la inicialización de un agrupado |
INIT_ERROR | Error en la inicialización de un agrupado |
ERRORS_IN_PAYMENTS | Error en los cobros generados |
ERROR_IN_REFUNDS | Error en las devoluciones efectuadas |
ERROR_REFUND_AFTER_COMPLETED | Cuando se realiza una devolución externa al agrupado en alguno de sus cobros |
3.4.2. Estados de las definiciones de cobro
Las definiciones de agrupados pueden tener los siguientes estados:
URL de consulta: integration/v2/wannmepay/masterdata/merge-payment-slice-states
Código | Descripción |
---|---|
CREATED | Creado |
IN_PROGRESS | En proceso |
PAID | Finalizado |
ERROR | Error |
EXPIRED | Caducado |
REFUNDED | Reembolsado |
CANCELLED | Cancelado |
3.5. Estados de los merchant
Los diferentes valores que se pueden presentar en el atributo stateId de un merchant son los siguientes:
Código | Nombre | Descripción |
---|---|---|
1 | Datos no cargados | El merchant no dispone de toda la información necesaria para comenzar el proceso de verificación de esos datos por parte de WANNME (1/4 DATOS NO CARGADOS) |
2 | Verificación en proceso | Los datos del merchant están siendo analizados por WANNME. Del mismo modo un merchant en estado operativo puede volver a este estado si sus datos son modificados y no validados por WANNME (2/4 DATOS CARGADOS VERIFICACIÓN EN PROCESO) |
3 | Firma en proceso | El merchant debe completar los procesos de firma solicitados si existiesen (3/4 EN PROCESO DE FIRMA) |
4 | Operativo | El merchant está disponible para las operativas de negocio en WANNME (4/4 PROCESO FINALIZADO) |
Cuando un merchant es creado o modificado se evalúa su información hasta que se sitúe en el estado de verificación. Será WANNME el que valide la documentación aportada y transitará el merchant a un estado operativo. En los entornos de sandbox existe un endpoint para poder realizar esta transicción de forma manual.
3.6. Notificaciones
3.6.1. URL's de notificación
En la creación de un cobro, recobro, agrupado o recurrente se puede proporcionar una URL de notificación a la que WANNME llamará en cada transición de estado de la entidad o en cada cambio que se produzca en la entidad, y se enviará por POST a la URL indicada. Se llamará a la URL de notificación antes de devolver el control en las URL de return (solo en el caso de un cobro). Esta URL puede ser configurada por defecto a nivel de partner para todos los cobros, recurrentes, agrupados o recobros o bien se puede indicar en cada generación de entidad.
Por ejemplo, un cobro que se crea y se comparte recibe la notificación de creado y la notificación de compartido, si se volviera a compartir se generaría otra notificación de compartido. Es decir, se pueden producir notificaciones en el cambio de estado, pero también dentro de cada estado se pueden notificar eventos con el mismo estado. Otro ejemplo sería cuando se completa un pago se notificaría la transación de en proceso a completado, pero también se notificará en el estado completado la liquidación de ese cobro.
En el caso de un recurrente, se puede cambiar la URL de notificación del primer cobro una vez inicializado, y se pueden proporcionar URL de notificación para los cobros manuales o para las programaciones en el caso del plan de pagos. La URL de notificación del primer cobro la heredan todos los cobros, salvo que se proporcione una distinta tanto para los cobros manuales como para las programaciones.
En caso de utilizar una dirección de notificación, si esta fuese una redirección debe de compartir protocolo con el origen y el destino. Se recomienda el uso de HTTPS para cualquier URL que se intercambie con WANNME.
Tipos notificaciones
Los tipos de notificación pueden ser los siguientes:
Código | Descripción |
---|---|
PAYMENT | Notificaciones de cobro |
DEBT_CASE | Notificaciones de recobro |
RECURRENT_PAYMENT | Notificaciones de recurrente |
MERGE_PAYMENT | Notificaciones de agrupado |
MERCHANT | Notificaciones de punto de venta |
Notificaciones de cobro
La información enviada en las notificaciones de cobro es la siguiente:
{
"id": "1600329190190828548",
"checksum": "8b8478cc8e4b14076135183bca4e88653cf848ce",
"checksum512": "8b8478cc8e4b14076135183bca4e88653cf848ceasdfasdf333333dd",
"notificationType": "PAYMENT",
"receiptNumber":"1600329190190828548",
"transactionCode":"",
"amount": 50,
"statusCode": 1,
"statusDescription": "CREADO",
"subStatusCode": 0,
"subStatusDescription": "xxxxxx",
"partnerReference1": "ref1",
"partnerReference2": "",
"uniqueNotificationId": "1600329388963",
"recurrentPaymentId":"",
"debtCaseId":"",
"errorCode":"",
"errorDescription":"",
"paymentMethod":"",
"partnerId":"",
"customField1":"",
"customField2":"",
"customField3":"",
"customField4":"",
"customField5":"",
"customField6":""
}
DEPRECATED
checksum
SHA1(id + uniqueNotificationId + partnerReference1 + clave_privada)checksum512
SHA512(id + uniqueNotificationId + partnerReference1 + clave_privada)
Notificaciones de recobro
La información enviada en las notificaciones de recobro es la siguiente:
{
"id": "1600329190190828548",
"checksum": "8b8478cc8e4b14076135183bca4e88653cf848ce",
"checksum512": "8b8478cc8e4b14076135183bca4e88653cf848ceasdfasdf333333dd",
"notificationType": "DEBT_CASE",
"statusCode": 1,
"statusDescription": "CREADO",
"subStatusCode": 0,
"subStatusDescription": "xxxxxx",
"partnerReference1": "ref1",
"partnerReference2": "",
"uniqueNotificationId": "1600329388963",
"partnerId":"",
"customField1":"",
"customField2":"",
"customField3":"",
"customField4":"",
"customField5":"",
"customField6":""
}
DEPRECATED
checksum
SHA1(id + uniqueNotificationId + partnerReference1 + clave_privada)checksum512
SHA512(id + uniqueNotificationId + partnerReference1 + clave_privada)
Notificaciones de recurrente
La información enviada en las notificaciones de recurrente es la siguiente:
{
"id": "1600329190190828548",
"checksum": "8b8478cc8e4b14076135183bca4e88653cf848ce",
"checksum512": "8b8478cc8e4b14076135183bca4e88653cf848ceasdfasdf333333dd",
"notificationType": "RECURRENT_PAYMENT",
"statusCode": 1,
"statusDescription": "CREADO",
"subStatusCode": 0,
"subStatusDescription": "xxxxxx",
"partnerReference1": "ref1",
"partnerReference2": "",
"uniqueNotificationId": "1600329388963",
"partnerId":"",
"debtCaseId":"",
"customField1":"",
"customField2":"",
"customField3":"",
"customField4":"",
"customField5":"",
"customField6":""
}
DEPRECATED
checksum
SHA1(id + uniqueNotificationId + partnerReference1 + clave_privada)checksum512
SHA512(id + uniqueNotificationId + partnerReference1 + clave_privada)
Notificaciones de agrupado
La información enviada en las notificaciones de agrupado es la siguiente:
{
"id": "1600329190190828548",
"checksum": "8b8478cc8e4b14076135183bca4e88653cf848ce",
"checksum512": "8b8478cc8e4b14076135183bca4e88653cf848ceasdfasdf333333dd",
"notificationType": "MERGE_PAYMENT",
"statusCode": 1,
"statusDescription": "CREADO",
"subStatusCode": 0,
"subStatusDescription": "xxxxxx",
"partnerReference1": "ref1",
"partnerReference2": "",
"uniqueNotificationId": "1600329388963",
"partnerId":"",
"customField1":"",
"customField2":"",
"customField3":"",
"customField4":"",
"customField5":"",
"customField6":""
}
DEPRECATED
checksum
SHA1(id + uniqueNotificationId + partnerReference1 + clave_privada)checksum512
SHA512(id + uniqueNotificationId + partnerReference1 + clave_privada)
Notificaciones de punto de venta
La información enviada en las notificaciones de punto de venta es la siguiente:
{
"partnerId": "cxfffffs4",
"checksum": "8b8478cc8e4b14076135183bca4e88653cf848ce",
"checksum512": "8b8478cc8e4b14076135183bca4e88653cf848ceasdfasdf333333dd",
"notificationType": "MERCHANT",
"stateId": "4",
"stateName": "4/4 .......",
"merchantReference1":"",
"merchantReference2":"",
"uniqueNotificationId": "1600329388963"
}
DEPRECATEDchecksum
SHA1(partnerId + uniqueNotificationId + clave_privada)
checksum512
SHA512(partnerId + uniqueNotificationId + clave_privada)
3.6.2. URL's de redirección de cobros
En la creación de un cobro se pueden proporcionar URL's de vuelta (redirección) para los estados de pago correcto o pago con error. WANNME devolverá el control a estas URL's una vez se produzca el pago por parte de cliente tanto en la situación de OK como de KO. Estas URL's desde su creación deben de ir informadas con el identificador necesario para localizar en el sistema destino la entidad relacionada, esto debe hacerse en el query string, puesto que son redirecciones sin cuerpo. Estas URL's pueden ser configuradas por defecto a nivel de partner para todos los cobros o bien se pueden indicar en cada generación de un cobro.
3.7. Importación de mandatos SEPA en los cobros
Es posible importar mandatos SEPA ya creados en un cobro, es condición necesaria que previamente el cobro tenga los datos completos del cliente.
3.8. Gestión multi idioma
WANNME soporta la internacionalización de los contenidos en varios idiomas. La selección del idioma deseado (ver tabla de códigos) se realiza a través de la cabecera opcional Content-Language
que se podrá incluir en cada una de las peticiones realizadas a este API. Si no existiese esta cabecera el idioma por defecto es el Español. Por otro lado, el idioma en el cuál WANNME devuelve los contenidos se especifica en la cabecera Accept-Language
que WANNME incluirá en todas sus respuestas.
Código ISO | Idioma |
---|---|
es | Español |
en | Inglés |
fr | Francés |
de | Alemán |
pt | Portugues |
4. Integración APIREST
Para el uso de los end-point proporcionados por WANNME es necesario situar la APIKEY proporcionada en las cabeceras de la llamada. El tipo de cabecera a usar es:
Authorization
APIKEY
De no utilizar una credencial valida el sistema responderá con un estado 401 Unauthorized. Estas KEYs caducarán si no son utilizadas en un año.
Se establece otro sistema de seguridad a partir del resumen de determinados datos de la llamada a cada end-point con un algoritmo de resumen. (Para información detallada ver 2.3. Autenticación)
Algunos ejemplos del API-REST para Postman se pueden descargar aqui Collection Environment
4.1. Gestión de cobros
Ponemos a disposición de los desarrolladores diversos métodos para la creación y manipulación de cobros en el sistema WANNME. Se pueden crear y actualizar los cobros, así como recuperar la información asociada a los mismos. En el Swagger se encuentra la información necesaria para proporcionar el checksum de cada llamada.
4.1.1 Algunas consideraciones sobre el cobro:
- Para la creación del cobro es necesario proporionar de forma obligatoria los campos
partnerId
,checksum
,amount
ypartnerReference1
checksum
SHA512(partnerId + clave_privada + amount + partnerReference1)- El campo
partnerReference2
es opcional, y junto con el campopartnerReference1
son los identificadores del comercio que permiten localizar el cobro en tu sistema, deben de ser únicos - Es posible definir a nivel de punto de venta las direcciones de notificación y de retorno OK y KO para no enviarlas en cada creación de cobro. Se examina primero la creación, si existen URL’s se usarán las de la creación, sino se utilizarán las definidas por punto de venta si existen
- El parámetro
manualPayment
configura el cobro manual. Si se configura a true, no se enviarán sms ni email, si se configura a false los parámetrossendSMS
ysendEmail
se utilizarán según sean proporcionados
4.1.2 Acciones sobre el expediente de cobro
Las acciones que se pueden ejecutar sobre un expediente de cobro son:
- cancel: permite cancelar un cobro existente
- share: permite compartir el cobro y enviar las notificaciones al cliente (sms, email, etc.)
- total-refund: permite realizar una devolución completa del cobro si es posible
4.1.3 Pago dividido (Split Payment)
Esta opción permite indicar los diferentes comercios que pueden reciben el importe del cobro realizado. Los receptores serán identificados mediante el identificador del comercio partnerId
, y la cantidad amount
que les corresponde, será definida según el tipo del pago dividido splitPaymentType
, pudiendo ser una cantidad fija (splitPaymentType = "FIXED"
) o un porcentaje del total (splitPaymentType = "PERCENTAGE"
).
Para utilizar está opción el cobro deberá incluir una lista con los SplitPayments, teniendo en cuenta:
- Todos los splitPayments deben ser del mismo tipo.
- La suma de las cantidades parciales debe ser igual a la importe del cobro
Cobro: Objeto payment
{
"partnerId": "string",
"checksum": "string",
"amount": 0,
"description": "string",
"partnerReference1": "string",
"partnerReference2": "string",
"customField1": "string",
"customField2": "string",
"customField3": "string",
"customField4": "string",
"customField5": "string",
"customField6": "string",
"mobilePhone": "string",
"mobilePhone2": "string",
"mobilePhone3": "string",
"email": "string",
"email2": "string",
"email3": "string",
"usersGroup": "string",
"notificationURL": "string",
"returnOKURL": "string",
"returnKOURL": "string",
"documentId": "string",
"expirationDate": "2022-06-13T11:00:54.424Z",
"paymentMethods": [
"string"
],
"signType": 0,
"customer": {
"documentType": 0,
"document": "string",
"firstName": "string",
"lastName1": "string",
"lastName2": "string",
"viaType": 0,
"address": "string",
"floorStairsDoor": "string",
"postalCode": "string",
"location": "string",
"countryType": 0,
"provinceType": 0,
"bankAccountIban": "string"
},
"extra": {
"sendSMS": true,
"sendEmail": true,
"manualPayment": true,
"paymentPassword": "string",
"tokenizeOnly": true,
"sendCertifiedSMS": true
},
"splitPayments": [
{
"partnerId": "string",
"reference": "string",
"description": "string",
//"PERCENTAGE" || "FIXED"
"splitPaymentType": "string",
"amount": 0
}
]
}
4.2. Gestión de recobros
Ponemos a disposición de los desarrolladores diversos métodos para la creación y manipulación de recobros en el sistema WANNME. Se pueden crear y actualizar los recobros, así como recuperar la información asociada a los mismos. En el Swagger se encuentra la información necesaria para proporcionar el checksum de cada llamada.
Los recobros permiten la gestión de los intervinientes y de los cobros asociados al proceso de recobro.
4.2.1 Configuración del recobro
Se puede configurar el recobro con los siguientes atributos en tiempo de creación:
- sendPaymentAllMobilePhones: se enviará la notificación de los cobros a todos los teléfonos configurados en el recobro, sino está activa esta propiedad solo se enviará al teléfono principal
- sendPaymentAllEmails: se enviará la notificación de los cobros a todos los emails configurados en el recobro, sino está activa esta propiedad solo se enviará al teléfono principal
- createTotalAmountPaymentAuto: en tiempo de creación esta propiedad permite la creación automática de un cobro por la totalidad del recobro
- sendPaymentAuto: en caso de estar activada la propiedad createTotalAmountPaymentAuto, se permite el envío automático de las notificaciones por sms, email.
- requestCustomerDocumentInPayment: se solicitará al cliente el DNI como contraseña para acceso a los cobros
4.2.2 Acciones sobre el expediente de recobro
Las acciones que se pueden ejecutar sobre un expediente de recobro son:
- cancel: permite cancelar un recobro existente
Recobro: Objeto debt-case
{
"partnerId": "partnerId_comercio",
"checksum": "campo_calculado",
"amountTotalDebt": 500,
"amountPrincipalDebt": 50,
"amountPending": 490,
"amountRealDiscount": 10,
"amountMaximumDiscount": 20,
"amountMinimumPartialPayment": 30,
"amountExternalPayment": 0,
"description": "",
"mobilePhone1": "",
"mobilePhone2": "",
"mobilePhone3": "",
"email1": "",
"email2": "",
"email3": "",
"dueDate" : "",
"partnerReference1" : "",
"partnerReference2": "",
"documentURL1": "",
"documentURL2": "",
"documentURL3": "",
"usersGroup" : "",
"notificationURL":"",
"mainCustomer" : {
"address": "",
"bankAccountIban": "",
"document": "",
"documentType": 0,
"firstName": "",
"floorStairsDoor": "",
"lastName1": "",
"lastName2": "",
"location": "",
"postalCode": "",
"provinceType": 0,
"viaType": 0
},
"creditor" : {
"bankAccountHolderName": "",
"bankAccountIban": "",
"bankAccountSwift": "",
"brandName": "",
"debtCaseManagementType": 0,
"document": "",
"documentType": 0,
"judicialStateType": 0,
"name": ""
},
"extra" : {
"sendPaymentAllMobilePhones" : false,
"sendPaymentAllEmails" : false,
"createTotalAmountPaymentAuto" : false,
"sendPaymentAuto" : false,
"requestCustomerDocumentInPayment" : false
}
}
Objeto debt-case-customer
{
"mobilePhone1": "",
"mobilePhone2": "",
"mobilePhone3": "",
"email1": "",
"email2": "",
"email3": "",
"documentType": 0,
"document": "",
"firstName": "",
"lastName1": "",
"lastName2": ""
}
4.3. Gestión de recurrentes
Un expediente recurrente permite planificar un conjunto de cobros en el tiempo pudiendo hacerse de forma libre (plan de pagos) o de forma recurrente (suscripción). Ponemos a disposición de los desarrolladores diversos métodos con los que se pueden crear y actualizar expedientes recurrentes en el sistema WANNME, así como recuperar la información asociada a los mismos. En el Swagger se encuentra la información detallada de cada petición así como la información necesaria para proporcionar el checksum de cada una de ellas.
Tipos de recurrente
Un expediente recurrente puede ser una suscripción o un plan de pagos. La diferencia entre ellos es que la suscripción permite la generación de cobros de importe igual y periodicidad constante, mientras que los planes de pago permiten la generación de cobros planificados o no, de cantidades distintas y periodicidades también distintas.
En la creación del recurrente se deberá definir si se trata de un plan de pagos o de una suscripción mandando la definición correspondiente. Solo debe mandarse la estructura subscription o paymentPlan que corresponda, en caso de mandar las dos la petición fallará.
Definición de plan de pagos
Un plan de pagos se define incluyendo la estructura paymentPlan, que solo contiene el atributo finalizeRecurrent que configura si el recurrente debe ser finalizado al ejecutar la última de sus programaciones.
paymentPlan: Estructura interna que define un plan de pagos
{
...
"paymentPlan": {
"finalizeRecurrent": false
}
...
}
Definición de suscripción
Una suscripción se define incluyendo la estructura subscription, con los siguientes atributos:
- amount: cantidad en euros de cada cuota
- intervalType: intervalo de la recurrencia (tipos).
- startDate: fecha en la que comienza la recurrencia. Si está vacía en el momento de la inicialización, se tomará ese instante como fecha de inicio. Puede ser una fecha pasada.
- endDate: fecha en la que finaliza la recurrencia (opcional). Tiene que ser posterior a la fecha de inicio.
- amountFirstInstallment: cantidad para la cuota inicial (opcional). Esta cantidad es independiente del importe definido para el ciclo de recurrencia. Si no se define una fecha especial para esta cuota inicial a traves de firstInstallmentDate, esta cantidad será añadida a la primera cuota del ciclo de recurrencia.
- firstInstallmentDate: fecha de ejecución de la cuota inicial (opcional). Tiene que ser anterior a la fecha de inicio. En esta fecha se creará un primer cobro independiente de la recurrencia, si no se ha definido importe en amountFirstInstallment y el recurrente es de ejecución automática, llegada esta fecha se generará un primer cobro de importe 0, que permitirá poder capturar el método de pago del cliente en la fecha deseada anterior al comienzo de la recurrencia.
subscription: Estructura interna que define una suscripción
{
...
"subscription" : {
"amount":120,
"intervalType":0,
"startDate":"2023-01-23T12:34:56.123456789Z",
"endDate":"2024-01-23T12:34:56.123456789Z",
"amountFirstInstallment":33.33,
"firstInstallmentDate":"2022-01-23T12:34:56.123456789Z"
}
...
}
Trás la creación del recurrente, esta estructura incluirá también el atributo nextInstallmentDate, representando la fecha de la próxima cuota de la recurrencia, pudiendo ser modificada incluyendo este atributo en la petición de modificación.
Modos de ejecución de cobros
Los recurrentes tienen dos modos diferentes para ejecutar sus cobros, ejecución automática o ejecución manual. En la modalidad automática se permite la captura de un medio de pago del cliente para posteriormente poder cargarle cobros sin su intervención. Por el contrario, en la modalidad manual, no se captura ningún método de pago del cliente, los cobros son simplemente creados. Si se desea se puede configurar que los cobros de un recurrente manual sean, compartidos de forma automática por email y sms.
Configuración del recurrente
El recurrente tiene una serie de funcionalidades que pueden ser configuradas mediante su objeto de configuración:
config: estructura del objeto de configuración
{
...
"config": {
"executePastSchedulesAfterActivation": true,
"sharingConfig": {
"sendToAllPhones": false,
"sendToAllEmails": false
},
"firstPaymentConfig": {
"sharingConfig": {
"shareBySms": true,
"smsTemplateId": null,
"shareByEmail": true,
"emailTemplateId": null
}
},
"manualExecutionConfig": {
"enable": false,
"sharingConfig": {
"shareBySms": true,
"smsTemplateId": null,
"shareByEmail": false,
"emailTemplateId": null
}
},
"schedulePriorNoticeConfig": {
"enable": false,
"numberOfDays": null,
"sharingConfig": {
"shareBySms": true,
"smsTemplateId": null,
"shareByEmail": true,
"emailTemplateId": null
}
}
}
...
}
Si en la petición de creación de un recurrente no se manda este objeto, el recurrente creado será configurado por defecto. Si en la modificación de un recurrente no se manda este objeto no se verán alterados los valores actuales de la configuración.
Apartados de la configuración
El objeto de configuración tiene 5 apartados:
- Ejecución de cuotas pasadas tras activación - executePastSchedulesAfterActivation: esta opción permite que cuando el recurrente sea activado, también durante la inicialización, se ejecuten aquellas cuotas programadas cuya fecha haya pasado. Por defecto está activado.
- Configuración general de compartir - sharingConfig: en este apartado se puede configurar a modo general si se desea que cuando se manden mensajes al cliente se hagan a todos sus teléfonos (sendToAllPhones) y/o a todos sus correos (sendToAllEmails). Por defecto se comparte solo al telefono e email principal.
- Configuración relacionada al primer cobro - firstPaymentConfig: este apartado configura los mensajes que comparten con el cliente el primer cobro. Esto se realiza a través de un objeto de configuración de compartir. El primer cobro puede ser con importe o en el caso de los recurrentes de ejecución automática también puede ser de importe 0. En función de como sea el cobro, se deberá elegir la plantilla deseada correspondiente. De no elegir ninguna se utilizará la plantilla predeterminada. La configuración de compartir el primer cobro puede ser sobreescrita en el momento de la inicialización. Ver inicialización del recurrente.
- Ejecución manual - manualExecutionConfig: este apartado permite cambiar el modo de ejecución a manual. Se activa con el atributo enable y se puede configurar el envío de las cuotas mediante un objeto de configuración de compartir. El recurrente por defecto ejecuta sus cobros de modo automático.
- Preaviso de programaciones - schedulePriorNoticeConfig: este apartado permite mandar mensajes de preaviso de las cuotas, por defecto desactivado. Se activa con el atributo enable, numberOfDays define el número de días previos a la cuota en que se mandarán los mensajes y el envío de las estos se configura mediante un objeto de configuración de compartir.
Configuración de compartir
El objeto sharingConfig, incluido en algunas de las configuraciones, permite definir si se mandan mensajes al cliente por sms (shareBySms) y/o email (shareByEmail) y que plantillas se usan (smsTemplateId y emailTemplateId). Por defecto tiene activado el envío tanto por sms como por email y no tiene plantilla seleccionada por lo que usará las predeterminadas.
Funcionamiento del recurrente
Un expediente recurrente puede ser de tipo plan de pagos o de tipo suscripción. En tiempo de creación se deber proprocionar la información para determinar de que tipo de recurrente se trata. Si es una suscripción es necesario proporcionar una cantidad y un tipo de periodicidad, es decir, una frecuencia de recurrencia. Un plan de pagos puede ser creado e incluso inicializado sin que tenga programaciones, que podrán ser añadidas posteriormente.
Modificación de un recurrente
Un recurrente puede ser modificado mientras está en estado CREADO
o DETENIDO
, si ha sido inicializado.
Antes de ser inicializado es posible cambiar el tipo de recurrencia entre plan de pagos y suscripción y el modo de ejecución entre automático y manual.
En el caso de las suscripciones, después de la inicialización no se podrá cambiar la fecha de inicio (startDate), solo modificable en periodo de creación. Una vez EN PROCESO
, el resto de atributos podrán ser modificados, siempre que se detenga, incluida la fecha de próxima cuota nextInstallmentDate (atributo añadido en la inicialización). Toda suscripción que ya haya sido inicializada va a tener siempre valores en los atributos de fecha de inicio y de próxima cuota, si se mandase una petición de modificación sin incluir alguno de estos dos valores, se mantendrán los valores actuales.
Gestión de programaciones
Los planes de pagos pueden gestionar sus programaciones sin que tenga que ser detenido, pudiendo crear, modificar y eliminar programaciones, así como recuperar la lista de ellas.
Acciones sobre el expediente recurrente
Sobre un expediente recurrente se pueden ejecutar las siguientes acciones:
- /initialize: comienza la inicialización del recurrente (estado
EN PROCESO
). - /pause: permite detener la recurrencia del expediente recurrente (estado
DETENIDO
). Debe ser detenido para poder ser modificado - /resume: permite reanudar la recurrencia del expediente recurrente que previamente ha sido detenido (estado
EN PROCESO
). - /cancel: permite cancelar un expediente recurrente existente (estado
CANCELADO
) - /manual-payment: permite ejecutar un cobro manual (solo en recurrentes de ejecución automática)
Inicialización de un recurrente (.../action/initialize)
Una vez creado el expediente recurrente (estado CREADO
) debe de ser inicializado a través de la acción initialize con lo que comienza el ciclo de recurrencia (estado EN PROCESO
).
Si existe una cuota que ejecutar en el momento de la inicialización se creará el cobro correspondiente. Si no existe dicha cuota pero se trata de un recurrente automático, se generará también un primer cobro pero en este caso de importe 0. El primer cobro de un recurrente automático, tenga o no importe, deberá ser completado por el cliente para almacenar su método de pago y así poder ejecutar posteriormente las cuotas. En caso de ser generado, el primer cobro será devuelto en la respuesta a la petición de inicialización. Esta petición permite la redefinición de la configuración de compartir el primer cobro a través de los atributos sendPaymentAuto que permite configurar que se comparta el primer cobro y sendPaymentToAllEmails y sendPaymentToAllPhones que especifica si se debe compartir a todos los correos y/o telefonos disponibles.
En el caso de una suscripción que tenga fecha de inicio pasada o de un plan de pagos con programaciones con fecha de programación pasada, en la inicialización entra en juego el atributo de configuración executePastSchedulesAfterActivation que en caso de estar activo, valor por defecto, generará cobros para las cuotas correspondientes al periodo entre la fecha de inicio y la fecha actual.
Inicialización de una suscripción
Aunque una suscripción sea automática, si la fecha de inicio (startDate) es futura y tiene definido una fecha para la cuota inicial (firstInstallmentDate), no se creará el primer cobro durante la inicialización ya que será creado en la fecha definida.
Pausa de un recurrente (.../action/pause)
En ocasiones se desea detener (estado DETENIDO
) una recurrencia para por ejemplo poder realizar alguna modificación (no es posible modificar un recurrente que esta en marcha) o pausar la ejecución de las cuotas o programaciones (verificar el atributo executePastSchedulesAfterActivation para definir el comportamiento que debe tener al volver a activarlo). Solo es posible detener recurrentes en proceso (estado EN PROCESO
).
Activación de un recurrente (.../action/resume)
Esta acción vuelve a poner en marcha (estado EN PROCESO
) el recurrente. En este momento si el atributo de configuración executePastSchedulesAfterActivation esta activo, se ejecutarán aquellas cuotas programadas cuya fecha haya pasado.
Cancelación de un recurrente (.../action/cancel)
Con esta acción se cancela el recurrente, lo que provocará la cancelación de todas las programaciones que tenga programadas y de todos aquellos cobros generados que no hayan sido completados o cancelados.
La cancelación deja al recurrente en el estado finalizasta CANCELADO
. No se puede cancelar un recurrente que haya sido COMPLETADO
.
Cobro manual (.../action/manual-payment)
Un recurrente con ejecución automática de las cuotas permite realizar en cualquier momento cobros manuales manual-payment, es decir la generación y ejecución de sobre el método de pago almacenado de un cobro por un importe distinto al marcado en la suscripción o en las programaciones del plan de pagos.
Cobros en error
En el caso de los recurrentes de ejecución automática, si su primer cobro fallase, estando su estado en ERROR
, el recurrente pasará también a ERROR
hasta que se solucione la incidencia.
Durante el ciclo de recurrencia si alguna cuota del recurrente falla (cobro en estado de ERROR
), el recurrente reflejará esta situación a través de su subestado CUOTAS CON ERROR
. El API dispone de métodos que permiten efectuar acciones sobre cobros en error:
- Reintento: un recurrente con ejecución automática de las cuotas permite reintentar un cobro que haya fallado mediante la invocación de la acción (.../action/retry). Intentará de nuevo cobrar la cuota usando el método de pago capturado.
- Reseteo: También es posible resetear un cobro en error de un recurrente a través de los endpoint del cobro payment/reset.
Finalización del recurrente
Finalización de planes de pago
Un plan de pagos podrá ser finalizado si está configurado para que se finalice tras la ejecución de su última programación mediante su atributo finalizeRecurrent.
Finalización de suscripciones
Una suscripción podrá ser finalizada si su fecha de fin es excedida y no tiene cuotas pendientes o en error.
Un recurrente no podrá ser finalizado mientras que alguna de sus cuotas esté en error o no haya sido pagada. Su finalización además dependerá de si es plan de pagos o suscripción.
Cuando un recurrente es finalizado su estado pasa a COMPLETADO
y es complementado con uno de los siguientes subestados: Cuotas finalizadas, Con cuotas reembolsadas, Con cuotas canceladas o Con cuotas reembolsadas y canceladas.
Objeto recurrente
A continuación la estructura completa del expediente recurrente. Incluye las estructuras de los dos tipo de recurrente posibles, suscripción y plan de pagos, de los que se espera solo uno en las peticiones, con los dos simultáneamente fallará. Además la estructura de la suscripción incluye la fecha de próxima cuota nextInstallmentDate, atributo que es añadido a partir de la inicialización.
Recurrente: Objeto recurrent-payment
{
"partnerId": "partnerId_comercio",
"checksum": "campo_calculado",
"description": "",
"mobilePhone": "",
"mobilePhone2": "",
"mobilePhone3": "",
"email": "",
"email2": "",
"email3": "",
"partnerReference1" : "",
"partnerReference2": "",
"notificationURL":"",
"usersGroup": "string",
"subscription" : {
"amount":120,
"intervalType":0,
"startDate":"2023-01-23T12:34:56.123456789Z",
"endDate":"2024-01-23T12:34:56.123456789Z",
"amountFirstInstallment":33.33,
"firstInstallmentDate":"2022-01-23T12:34:56.123456789Z",
"nextInstallmentDate":"2023-05-23T12:34:56.123456789Z"
},
"paymentPlan": {
"finalizeRecurrent": false
},
"customer": {
"address": "",
"bankAccountIban": "",
"document": "",
"documentType": 0,
"firstName": "",
"floorStairsDoor": "",
"lastName1": "",
"lastName2": "",
"location": "",
"postalCode": "",
"provinceType": 0,
"viaType": 0
},
"config": {
"executePastSchedulesAfterActivation": true,
"sharingConfig": {
"sendToAllPhones": false,
"sendToAllEmails": false
},
"firstPaymentConfig": {
"sharingConfig": {
"shareBySms": true,
"smsTemplateId": null,
"shareByEmail": true,
"emailTemplateId": null
}
},
"manualExecutionConfig": {
"enable": false,
"sharingConfig": {
"shareBySms": true,
"smsTemplateId": null,
"shareByEmail": false,
"emailTemplateId": null
}
},
"schedulePriorNoticeConfig": {
"enable": false,
"numberOfDays": null,
"sharingConfig": {
"shareBySms": true,
"smsTemplateId": null,
"shareByEmail": true,
"emailTemplateId": null
}
}
}
}
4.4. Gestión de agrupados
Un expediente agrupado permite dividir un importe a pagar entre diferentes fuentes de pago, que serán especificadas mediante las Definiciones de cobro (Slices). Una vez inicializado el agrupado (/initialize), cada Slice definido generará un cobro individual y tanto el agrupado como sus definiciones de cobro pasarán a estar en proceso IN_PROGRESS
. Un expediente agrupado será completado COMPLETED
cuando todos sus cobros sean pagados de forma exitosa. Dos acciones pueden detener el proceso de un expediente agrupado, por un lado, la invocación de la cancelación (/cancel) y por otro la caducidad, en el caso de haber sido definida una fecha de caducidad y que esta haya sido superada. En ambos casos se procederá a la finalización de los cobros, lo que implica que los que hayan sido pagados serán reembolsados y los que no, serán cancelados.
4.4.1 Uso de expedientes agrupados
El API de integración presenta métodos para la gestión de los expedientes agrupados. Un expediente agrupado está formado por la información básica de la entidad y el conjunto de definiciones de cobros. La información básica de la entidad contiene datos que definen al agrupado, como URL's, meta información, información de cliente, configuración, etc. El conjunto de definiciones de cobro permite especificar cuantos cobros va a generar el agrupado en el proceso de inicialización y determinada información asociada a cada uno de los cobros. La suma de todas las cantidades de las definiciones debe de ser igual al importe definido en el agrupado.
De esta forma la principal característica del expediente agrupado es que para considerar esta entidad como finalizada, deben de finalizarse todos los cobros definidos y generados en el proceso de inicialización. La cancelación en cualquier momento del expediente agrupado conlleva la cancelación de los cobros y su reembolso en caso de haber sido abonados. Esta cancelación puede producirse en cualquier momento desde que el agrupado es inicializado, ya sea por expiración de la fecha de caducidad (si existiese) o por la cancelación del agrupado mientras este se encuentre en proceso o finalizado.
4.4.2 Pago dividido en expediente agrupado
El expediente agrupado permite utilizar la modalidad de pago dividido en los cobros. Para ello las definiciones de cobro (slices) deberán incluir las definiciones del pago dividido splitPayments y ser del tipo SPLIT_PAYMENT
.
{
...
"slices": [
{
...
"type": "SPLIT-PAYMENT",
...
}],
...
}
Para la utilización de cobro sin pago dividido el tipo de los slices será: STANDARD_PAYMENTS
4.4.3 Creación y modificación
Ponemos a disposición de los desarrolladores diversos métodos para la creación y manipulación de expedientes agrupados en el sistema WANNME. Se pueden crear y actualizar los expedientes agrupados, así como recuperar la información asociada a los mismos. En el Swagger se encuentra la información necesaria para proporcionar el checksum de cada llamada.
Una petición de creación o modificación de un expediente agrupado puede incluir, de forma opcional, la lista con las definiciones de cobro (slices) para ser creadas o modificadas, así como las definiciones de pago dividido (splitPayments) en el caso de la utilización de esta modalidad. Una petición de modificación podrá modificar y/o añadir nuevos slices y/o splitPayments, teniendo en cuenta que los que deben ser modificado serán reconocibles por la presencia de su id
asociado. En ningún caso una petición de modificación eliminiará slices o splitPayments que no estén incluidos en las respectivas listas. Su eliminación debe realizarse de forma individual a través de los end-points para la eliminación de slices y la eliminación de splitPayments
No se pueden realizar modificaciones en un agrupado ya iniciado, finalizado o cancelado.
4.4.4 Acciones sobre cobros creados
La información extra permite configurar acciones que se efectuarán sobre los cobros creados en la ejecución del proceso de inicialización. Las acciones configurables son las siguientes:
- sendAuto: el cobro generado será compartido automáticamente (requiere la definición del email y/o el teléfono del cliente en la definición del cobro).
- rtpFirst: tras la generación del cobro se intentará enviar el cobro por RTP (Request To Pay) al teléfono definido (requerido). Si no es posible y sendAuto esta activo, se compartirá el cobro, en caso contrario no se actuará sobre el cobro generado.
Si no se activa ninguna de estas siguientes características, los cobros serán generados a partir de las definiciones y no se realizará ninguna acción sobre ellos.
4.4.5 Acciones sobre el expediente agrupado
Las acciones que se pueden ejecutar sobre un expediente agrupado son:
- initialize: con un expediente agrupado creado y configurado correctamente, invocar a la acción initialize para ponerlo en proceso.
- cancel: permite cancelar un expediente agrupado en proceso, los cobros que hayan sido pagados serán reembolsados y los que no, serán cancelados.
Agrupado: Objeto merge-payment
{
"partnerId": "string",
"checksum": "string",
"amount": 0,
"description": "string",
"expirationDate": "2022-06-13T08:46:29.714Z",
"usersGroup": "string",
"notificationURL": "string",
"documentId": "string",
"partnerReference1": "string",
"partnerReference2": "string",
"customField1": "string",
"customField2": "string",
"customField3": "string",
"customField4": "string",
"customField5": "string",
"customField6": "string",
"customer": {
"documentType": 4,
"document": "string",
"firstName": "string",
"lastName1": "string",
"lastName2": "string",
"viaType": 34,
"address": "string",
"floorStairsDoor": "string",
"postalCode": "string",
"location": "string",
"provinceType": 52,
"countryType": 237,
"mobilePhone": "string",
"mobilePhone2": "string",
"mobilePhone3": "string",
"email": "string",
"email2": "string",
"email3": "string"
},
"slices": [
{
//"STANDARD_PAYMENT" || "SPLIT_PAYMENT"
"type": "string",
"amount": 0,
"description": "string",
"notificationURL": "string",
"customer": {
"documentType": 4,
"document": "string",
"firstName": "string",
"lastName1": "string",
"lastName2": "string",
"viaType": 34,
"address": "string",
"floorStairsDoor": "string",
"postalCode": "string",
"location": "string",
"provinceType": 52,
"countryType": 237,
"mobilePhone": "string",
"mobilePhone2": "string",
"mobilePhone3": "string",
"email": "string",
"email2": "string",
"email3": "string"
},
"splitPayments": [
{
"splitPartnerId": "string",
"reference": "string",
"description": "string",
//"PERCENTAGE" || "FIXED"
"splitPaymentType": "string",
"amount": 0
}
]
}
],
"extra": {
"sendAuto": true,
"rtpFirst": true
}
}
4.5. Gestión de merchants
Ponemos a disposición de los desarrolladores diversos métodos para la creación y manipulación de Merchants en el sistema WANNME. Se pueden crear y actualizar los Merchants, así como recuperar la información asociada a los mismos. Los Merchants permiten también la gestión de los métodos de pago, como es el caso de Redsys o PayIn7. Un método de pago se pude inicializar, actualizar y desactivar. Al momento de inicializar un método de pago hay que pasar una URL de notificación, tal y como se indica en la sección 3.9. Sumado a lo ya mencionado, también es posible la personalización de la página web del PayCheckout, como es el cambio de textos, tipos de letras e imágenes, por mencionar algunos de los cambios disponibles.
La asignación de un documento a un merchant, se explica en la sección 4.5.
4.5.1 Configuración del proceso de checkout
Existe la posibilidad de activar o desactivar la personalización del proceso de checkout para los comercios creados. Por defecto, WANNME proporciona una imagen y textos para el proceso, pero es posible alterar esta configuración a través del end-point /wannmepay/merchant/{partnerId}/checkout-branding.
{
"partnerId": "7x53juavzcx_upvh_in8_z2bp",
"checksum": "62b7134f9b1bd13fcf6237b701025662b7931070",
"checkoutBrandingActive": false,
"headerBackgroundColor": null,
"titlesTextColor": null,
"textColor": null,
"buttonTextColor": null,
"buttonBackgroundColor": null,
"showReceiptButton": false,
"showSendReceiptByEmailButton": false,
"showRequestInvoiceButton": false,
"hideHeader": false,
"showLanguageSelection": false,
"footerOwnWebURL": null,
"footerPrivacyPolicyURL": null,
"footerCookiesURL": null,
"logoDocumentId": ""
}
4.5.2 Personalización de textos del proceso de checkout
Es posible la edición de algunos textos presentes en el Paycheckout. Llamando al end-point /wannmepay/masterdata/checkout-branding-translation-types se obtienen la lista de esos textos personalizables con una pequeña explicación de cada uno.
Además de existir esos textos personalizables, también existe la posibilidad de personalizarlos para cada uno de los idiomas disponibles en el sistema. Se pueden obtener los idiomas disponibles en el sistema llamando al end-point /wannmepay/masterdata/languages.
Para saber cuáles son esos textos personalizados en todos los idiomas disponibles asociados al punto de venta que se mostrarán en el Paycheckout, se debe llamar al end-point /wannmepay/merchant/{partnerId}/checkout-branding/translations/list. En esta llamada recibiremos todos los textos tenga o no activado el punto de venta la personalización del Paycheckout.
Si el punto de venta tiene activada la personalización del Paycheckout y quiere modificar alguno de esos textos, se hará uso del end-point /wannmepay/merchant/{partnerId}/checkout-branding/translations donde se informará para cada uno de los textos que se quiera personalizar, un texto para cada uno idioma.
{
"partnerId": "7x53juavzcx_upvh_in8_z2bp",
"checksum": "62b7134f9b1bd13fcf6237b701025662b7931070",
"translations": [
{
"code": "commerce.info.label",
"values": [
{
"language": "de",
"value": "Handelsdaten"
},
{
"language": "en",
"value": "Merchant information"
},
{
"language": "es",
"value": "DATOS DEL COMERCIO"
},
{
"language": "fr",
"value": "DATOS DEL COMERCIO [FR]"
},
{
"language": "pt",
"value": "DATOS DEL COMERCIO [PT]"
}
]
},
................................
{
"code": "viacash.title",
"values": [
{
"language": "de",
"value": "Barzahlung "
},
{
"language": "en",
"value": "Cash payment"
},
{
"language": "es",
"value": "Pagar en efectivo"
},
{
"language": "fr",
"value": "Payer en espces"
},
{
"language": "pt",
"value": "Payer en PT"
}
]
}
]
}
Solo deben indicarse los que se quieran crear o modificar en cada llamada, no afectando a los creados o modificados anteriormente. Para eliminar una personalización, se debe enviar el idioma sin indicar el valor del texto personalizado.
Por ejemplo: Se quiere borrar el texto personalizado return.store.text en alemán y añadir o modificar la personalización del texto en español.
{
"partnerId": "7x53juavzcx_upvh_in8_z2bp",
"checksum": "62b7134f9b1bd13fcf6237b701025662b7931070",
"translations": [
{
"code": "return.store.text",
"values": [
{
"language": "de"
},
{
"language": "es",
"value": "Volver a la tienda"
}
]
}
]
}
4.6. Gestión de documentos
Ponemos a disposición de los desarrolladores diversos métodos para la creación y manipulación de Documentos en el sistema WANNME. Se puede subir documentos, obtener el documento subido y eliminar el documento.
El documento se sube en Base64, y los tipos válidos son los siguientes:
- PNG
- GIF
- JPG
- JPEG
- CSV
En caso que todo haya salido correctamente la respuesta será la siguiente:
{
"partnerId": "7x53juavzcx_upvh_in8_z2bp",
"checksum": "62b7134f9b1bd13fcf6237b701025662b7931070",
"documentType": "MERCHANT_COMPANY_SHAREHOLDER_IDENTIFICATION_CARD",
"content": null,
"fileName": "genericDNI.pdf",
"contentType": "application/pdf",
"id": "7a1e968c17d83d5557a99d80184304534acb358b3f5ec4637f9c25877a6d6610"
}
Para asignar un documento a un punto de venta (merchant) nuevo o ya existente, se debe primero subir el documento y luego asignarlo a la propiedad correspondiente. En el ejemplo, el Id del documento fue asignado al campo: registrationDocumentId.
"documents":
{
"registrationDocumentId": "7a1e968c17d83d5557a99d80184304534acb358b3f5ec4637f9c25877a6d6610",
"taxIdDocumentId": "0",
"bankAccountOwnershipVerificationId": "0",
"shareholderIdentificationCardId": "0",
"realOwnershipDocumentId": "0"
}
4.7. Gestión de datos maestros
A continuación presentamos algunos datos maestros que estan disponibles a través de los end-point de maestros en el api.
Tipos de documento
Los documentos pueden ser de los siguientes tipos:
URL de consulta: integration/v2/wannmepay/masterdata/document-types
Código | Descripción |
---|---|
1 | DNI / NIF |
2 | Pasaporte |
3 | CIF |
4 | Tarjeta de residencia |
5 | Otros |
6 | NIE |
Es importante señalar que el tipo de documento va siempre acompañado del documento identificativo personal en las entidades de WANNME, y ese conjunto de datos tienen una validación en particular. En el caso de proporcionar estos datos, deben proporcionarse los dos. Sino se proporcionan no se debe informar de ninguno. Si se proporcionan deben de ser una combinación válida. El documento tiene que ser válido según el tipo de documento proporcionado, excepto el tipo 5 que no se realiza ninguna validación.
Tipos de intervalos de recurrencia
Los intervalos pueden ser de los siguientes tipos:
URL de consulta: integration/v2/wannmepay/masterdata/recurrent-interval-types
Código | Descripción |
---|---|
1 | Cada día |
2 | Cada semana |
3 | Cada mes |
4 | Cada 3 meses |
5 | Cada 6 meses |
6 | Cada año |
7 | Personalizado |
Tipos de gestión de recobro
Las gestiones pueden ser de los siguientes tipos:
URL de consulta: integration/v2/wannmepay/masterdata/debt-case-management-types
Código | Descripción |
---|---|
1 | Amistoso |
2 | Judicial |
Tipos de estados judiciales de un recobro
Los estados judiciales pueden ser de los siguientes tipos:
URL de consulta: integration/v2/wannmepay/masterdata/debt-case-judicial-state-types
Código | Descripción |
---|---|
1 | Monitorio |
2 | Verbal |
3 | Ejecución |
4 | Ordinario |
Tipos de punto de venta
Los tipos de punto de venta pueden ser:
URL de consulta: integration/v2/wannmepay/masterdata/merchant-types
Código | Descripción |
---|---|
1 | Empresa |
2 | Autónomo |
Métodos de pago de un cobro
Cuando se crea un cobro es posible indicar que en el proceso de checkout del cobro únicamente aparezcan algunos métodos de pago, y no todos los que tiene contratado el punto de venta con WANNME. Esto se hace a través del atributo paymentMethods que permite una lista de alguno/s de los siguientes valores. Sino se indica ningún valor, en el checkout aparecerán todos los métodos, si se especifica algun/os valor/es, únicamente aparecerán esos, si están contratados en WANNME.
Valor | Descripción |
---|---|
payin7 | Payin7 |
redsys | Redsys |
bizum | Bizum |
abanca | Abanca |
slimpay_direct_debit | SlimPay (domiciliación) |
afterbanks | AfterBanks |
cecabank | Cecabank |
gocardless | GoCardLess (domiciliación) |
paypal | PayPal |
viacash | ViaCash |
truust | Truust |
paybycall | PayByCall |
yapily | Yapily |
oney | Oney |
floapay | FloaPay |
mbway | MBWay |
mbreference | MBReference |
pepper | Pepper |
Tipos vías
Los tipos de vías pueden ser de los siguientes:
URL de consulta: integration/v2/wannmepay/masterdata/via-types
Código | Descripción |
---|---|
1 | Alameda o aldea |
2 | Apartamento |
3 | Avenida |
4 | Bloque |
5 | Barrio |
6 | Chalet |
7 | Calle |
8 | Camino |
9 | Colonia |
10 | Carretera |
11 | Caserio |
12 | Cuesta |
13 | Edificio |
14 | Glorieta |
15 | Grupo |
16 | Lugar |
17 | Mercado |
18 | Municipio |
19 | Manzana |
20 | Poblado |
21 | Poligono |
22 | Pasaje |
23 | Parque |
24 | Prolongacion |
25 | Paseo |
26 | Plaza |
27 | Rambla |
28 | Ronda |
29 | Travesia |
30 | Urbanizacion |
31 | Desconocida, Apartado de correos |
32 | Bajada |
33 | Rua |
34 | Subida |
Tipos de firma
Los tipos de firma pueden ser de los siguientes:
Código | Descripción |
---|---|
1 | Validación simple |
2 | Validación y aceptación |
3 | Validación y aceptación con OTP |
4 | Validación y envio de acuse de recibo |
Provincias
Las provincias pueden ser de los siguientes:
URL de consulta: integration/v2/wannmepay/masterdata/provinces
Código | Descripción |
---|---|
1 | ÁLAVA |
2 | ALBACETE |
3 | ALICANTE |
4 | ALMERÍA |
5 | ÁVILA |
6 | BADAJOZ |
7 | ILLES BALEARS |
8 | BARCELONA |
9 | BURGOS |
10 | CÁCERES |
11 | CÁDIZ |
12 | CASTELLÓN |
13 | CIUDAD REAL |
14 | CÓRDOBA |
15 | A CORUÑA |
16 | CUENCA |
17 | GIRONA |
18 | GRANADA |
19 | GUADALAJARA |
20 | GUIPUZKOA |
21 | HUELVA |
22 | HUESCA |
23 | JAÉN |
24 | LEÓN |
25 | LLEIDA |
26 | LA RIOJA |
27 | LUGO |
28 | MADRID |
29 | MÁLAGA |
30 | MURCIA |
31 | NAVARRA |
32 | OURENSE |
33 | ASTURIAS |
34 | PALENCIA |
35 | LAS PALMAS |
36 | PONTEVEDRA |
37 | SALAMANCA |
38 | STA. CRUZ DE TENERIFE |
39 | CANTABRIA |
40 | SEGOVIA |
41 | SEVILLA |
42 | SORIA |
43 | TARRAGONA |
44 | TERUEL |
45 | TOLEDO |
46 | VALENCIA |
47 | VALLADOLID |
48 | BIZKAIA |
49 | ZAMORA |
50 | ZARAGOZA |
51 | CEUTA |
52 | MELILLA |
Países
Los países pueden ser de los siguientes:
URL de consulta: integration/v2/wannmepay/masterdata/countries
Código | Descripción |
---|---|
64 | ESPAÑA |
176 | PORTUGAL |
71 | FRANCIA |
El listado completo de países esta disponible en el endpoint descrito anteriormente.
Estados de facturas de recobro
Código | Descripción |
---|---|
1 | PENDIENTE |
2 | PAGADA |
3 | EN PROCESO |
Tipos de documento para la gestión documental
Se especifican a continuación los posibles valores para el tipo de documento documentType en la subida física de ficheros al repositorio documental de WANNME:
URL de subida de documentos: integration/v2/wannmepay/document/upload-document
Código | Descripción |
---|---|
PAYMENT_DOCUMENT | Documento de cobro |
RECURRENT_PAYMENT_DOCUMENT | Documento de recurrente |
MERGE_DOCUMENT | Documento de agrupado |
DEBTCASE_DOCUMENT | Documento de recobro |
DEBTCASE_INVOICE_DOCUMENT | Documento de factura de recobro |
MERCHANT_CHECKOUT_BRANDING_LOGO | Logo personalizado del proceso de pago WANNMEPAY |
MERCHANT_COMPANY_SHAREHOLDER_REGISTRATION_DOCUMENT | Escrituras de poderes de una sociedad |
MERCHANT_COMPANY_SHAREHOLDER_IDENTIFICATION_CARD | Documento acreditativo del apoderado de una sociedad (DNI,...) |
MERCHANT_COMPANY_REGISTRATION_DOCUMENT | Escrituras de constitución de una sociedad |
MERCHANT_COMPANY_BANK_ACCOUNT_OWNERSHIP_VERIFICATION | Justificante de titularidad de cuenta de una sociedad |
MERCHANT_COMPANY_TAX_ID_DOCUMENT | CIF de una sociedad |
MERCHANT_COMPANY_REAL_OWNERSHIP_DOCUMENT | Acta de titularidad real de una sociedad |
MERCHANT_COMPANY_REAL_OWNERSHIP_IDENTIFICATION_CARD | NIF de titularidad real de una sociedad |
MERCHANT_COMPANY_OTHER_DOCUMENT | Otro tipo de documento de una sociedad |
MERCHANT_INDIVIDUAL_IDENTIFICATION_CARD | Documento acreditativo del autónomo (DNI,...) |
MERCHANT_INDIVIDUAL_TAX_REGISTRATION_FORM | Modelo 36 37 de autónomo |
MERCHANT_INDIVIDUAL_BANK_ACCOUNT_OWNERSHIP_VERIFICATION | Justificante de titularidad de cuenta de autónomo |
MERCHANT_INDIVIDUAL_LAST_INDIVIDUAL_TAX_RECEIPT | Último recibo de autónomo |
MERCHANT_INDIVIDUAL_OTHER_DOCUMENT | Otro tipo de documento de autónomo |
4.8. Gestión de errores provocados
En los entornos de desarrollo de WANNME se pueden provocar diferentes situaciones de error para comprobar el funcionamiento de la integración ante situaciones anómalas. El funcionamiento de esta gestión de errores es proporcionar diferentes valores en algunos campos significativos como se detalla a continuación.
Valor | Campo | Entidad | Operación |
---|---|---|---|
99.13 | Importe | Cobro | Devolución total |
99.14 | Importe | Cobro | Cancelación |
99.15 | Importe | Cobro | Compartir |
55.55 | Importe | Cobro | Devolución parcial |
99.16 | Importe total | Recobro | Cancelar |
99.17 | Importe del cobro | Recobro | Crear un cobro para un recobro |
9988771122Z | Documento | Recobro | Creación de un interviniente |
REF-INVOICE-ERROR | Referencia | Recobro | Creación de una factura |
99.18 | Importe de la cuota | Recurrente | Cancelar |
99.19 | Importe de la cuota | Recurrente | Inicializar |
99.20 | Importe de la cuota | Recurrente | Detener |
99.21 | Importe de la cuota | Recurrente | Reiniciar |
99.22 | Importe de la cuota | Recurrente | Reintentar cobro |
99.82 | Importe del agrupado | Agrupado | Inicializar |
99.83 | Importe del agrupado | Agrupado | Cancelar |
99.84 | Importe del slice | Agrupado | Creación de un slice |
4.9. Datos de prueba para los medios de pago de un cobro
A continuación presentamos datos de prueba para las diferentes pasarelas de pago.
4.9.1 Redsys
https://pagosonline.redsys.es/entornosPruebas.html
4.9.2 Cecabank
Resultado | PAN | Caducidad | CVV2 |
---|---|---|---|
OK | 5540500001000004 | AAAA12 (Diciembre del año en curso) | 989 |
OK | 5020470001370055 | AAAA12 (Diciembre del año en curso) | 989 |
OK | 5020080001000006 | AAAA12 (Diciembre del año en curso) | 989 |
OK | 4507670001000009 | AAAA12 (Diciembre del año en curso) | 989 |
KO | 5540990082685080 | 10/23 | 111 |
4.9.3 Afterbanks
Credenciales de acceso a los bancos de sandbox
Clave | Valor |
---|---|
Usuario | user1 |
Password | 1234 |
OTP | 123456 o en algunos casos 1234 |
4.9.4 PayPal
Solicitar a WANNME las credenciales de acceso al entorno de sandbox
4.9.5 Bizum
Para la realización de pruebas de Bizum, se podrán realizar contra la URL de pruebas, pero se tendrá que tener en cuenta que la cuantía de la operación no puede superar los 10€. Para hacer estas pruebas, se puede habilitar un cupón de descuento temporal en la tienda que descuente el 95% del precio para así no pasarnos del importe máximo.
Los datos para realizar las pruebas son:
Usuario de Bizum | Caso que se está probando |
---|---|
700 000 000 (número de móvil) | Compra con éxito |
ko@ko.ko | Compra rechazada con respuesta "error autenticación clave Bizum" |
4.9.6 GoCardLess
Para los mandatos SEPA es necesario seleccionar el país Francia y el IBAN FR1420041010050500013M02606
4.9.7 Pepper
PIN de pruebas 1111
Tarjeta 1 de pruebas PAN: 4018 8100 0015 0015 Cad: 12/34 CVV: 123 Código OTP (3DS) válido: 0101
Tarjeta 2 de pruebas PAN: 5555 5555 5555 4444 Cad: 03/30 CVV: 737 Código OTP (3DS) válido: 123456
4.9.8 Floa
Tipo | Número | Caducidad | Código seguridad |
---|---|---|---|
OK | 5017679110380400 | 12/24 | 000 |
KO | 5017679100900712 | 12/24 | 000 |
4.10. Notas integración APIREST
Cosas que debes tener en cuenta para el correcto funcionamiento de la integración:
- Formato de fechas: yyyy-MM-dd'T'HH:mm:ss.SSSZ
- El checksum se calculará como el resumen en SHA512 de la cadena especificada en cada método. (Recuerda que la clave privada debe almacenarse únicamente en tu servidor y generar de forma dinámica el checksum para cada método)
- Es necesario proporcionar la cabecera Authorization con la APIKEY de las credenciales para el uso del APIREST
- Ponemos a disposición de los desarrolladores un Swagger para la comprobación de los detalles de los end-point
- Es posible incluir en las cabeceras de las peticiones la clave Content-Language con un valor ISO de idioma para la obtención de los contenidos localizados en el idioma proporcionado. Los idiomas disponibles de pueden obtener en el end-point /wannmepay/masterdata/languages
- Los valores de tipo double especificados en los end-point usados para el proceso de firma no deben incoporar los ceros no necesarios a la derecha de la coma. Por ejemplo, el valor 33,5 es un valor distinto a 33,50 para el calculo de la firma. Es decir, los atributos de tipo double deben de ser enviados como tipo numérico y no como cadenas de caracteres, si se pasa a cadena de texto para ser enviado deben de eliminarse los ceros no significativos
- Algunos ejemplos del API-REST para Postman se pueden descargar aqui Collection Environment
- En el caso de usar las búsquedas en las entidades a través de los métodos search se puede indicar de forma opcional la paginación deseada en los resultados. Para ello se puede proporcionar el número de página deseado page (comenzando en la página 0) y el número de registros esperados size dentro de esa página.
5. Integración comercio electrónico
WANNME disponse de módulos o plugins para su integración en los portales de comercio electrónico o CMS, mostrando WANNME como una opción de pago más dentro del proceso de compra de los sitios web. La lista de CMS actualmente soportada por WANNME es la siguiente:
CMS | Descarga plugin |
---|---|
Última versión | |
Última versión |
5.1. Prestashop
Versiones soportadas de PrestaShop:
- 1.6
- 1.7
Requisitos obligatorios:
- PHP 7 o superior
Notas:
- Es necesario configurar el plugin para la comprobación de las actualizaciones
- No necesita base de datos adicional
5.2. Wordpress - WooCommerce
Requisitos obligatorios:
- WooCommerce instalado
- PHP 7 o superior
Notas:
- Es necesario configurar el plugin para la comprobación de las actualizaciones
- No necesita base de datos adicional