Estándar Electrónico - Pagos Monedero Bancario E S T Á N D AR E L E C T R Ó N I C O PAGOS MONEDERO BANCARIO SERIE DE NORMAS Y PR OCEDIMIENTOS Público EE-PMB Estándar Electrónico - Pagos Monedero Bancario ESTÁNDAR ELECTRÓNICO PAGOS MONEDERO BANCARIO SERIE DE NORMAS Y PROCEDIMIENTOS PÚBLICO EE-PMB Estándar Electrónico - Pagos Monedero Bancario Tabla de contenido 1. Introducción ............................................................................................................................................ 1 2. Alcance .................................................................................................................................................... 1 3. Términos empleados............................................................................................................................... 1 4. Documentos aplicables y anexos ............................................................................................................ 2 5. Comunicación en Tiempo Real.............................................................................................................. 2 5.1. Consideraciones Generales .................................................................................................................... 2 5.2. Servicio de Administración de Pagos de Monedero Bancario (PMB) .................................................. 2 5.2.1. Listado de los métodos contenidos el estándar ..................................................................................................... 2 5.2.2. WebService en SINPE para el uso Entidades Bancarias Origen .......................................................................... 3 5.2.3. Servicio WCF en los BANCOS para el uso del SINPE ........................................................................................ 8 5.2.4. Flujos de información y uso de los métodos....................................................................................................... 10 5.2.4.1. Métodos para suscripción y desuscripción: 5.2.4.2. Métodos asociados al envío y recepción de operaciones: 10 10 5.2.5. Manejo de Excepciones ...................................................................................................................................... 11 6. Tipos de datos y formatos soportados................................................................................................. 14 6.1.1. Catálogo de Motivos de rechazo ........................................................................................................................ 14 6.1.2. Estados de las operaciones de Pagos y Cobros móviles ..................................................................................... 14 6.1.3. Catálogo de Identificaciones .............................................................................................................................. 14 6.1.4. Formatos de teléfonos ........................................................................................................................................ 15 6.1.5. Catálogo de monedas.......................................................................................................................................... 15 Estándar Electrónico - Pagos Monedero Bancario Sistema Nacional de Pagos Electrónicos Sistemas de Pagos - BCCR Año 2014 1. Introducción El contenido de este libro describe el estándar electrónico para el procesamiento de operaciones del servicio Pagos Monedero Bancario (PMB), provisto por el Banco Central de Costa Rica (BCCR), por medio del Sistema Nacional de Pagos Electrónicos (SINPE). El documento se enfoca principalmente en la modalidad de procesamiento de operaciones en tiempo real. En el caso del servicio PMB el procesamiento de pagos en tiempo real, se realiza mediante una interacción entre los servidores del SINPE y de servidores de Entidades Financieras, de tal forma que no existe un proceso manual para la aplicación de las mismas. Para lograr esta comunicación se detalla la tecnología a utilizar para implementar la capa de software encargada del paso de mensajes entre los participantes y el tipo de datos que se transportan en la comunicación entre servidores. Para cada servicio, se detalla cual es el esquema de validación aplicado antes de procesar las transferencias en tiempo real, elemento vital para garantizar la calidad de la información que procesa el SINPE y por consiguiente, el adecuado funcionamiento del sistema. En particular, el objetivo de este documento es permitir a los departamentos de informática de cada entidad verificar el estado de sus sistemas internos e identificar los ajustes necesarios para evitar contratiempos en la participación de la entidad en el servicio. 2. Alcance Este documento explica los elementos técnicos para que una entidad pueda consumir los servicios web que provee el SINPE para el servicio de negocio Servicio de Pagos Monedero Bancario (PMB). Adicionalmente, se definen las interfaces, tipos de datos y de mensajes que se pueden intercambiar entre el SINPE y los sistemas de las entidades para un procesamiento en tiempo real de las transferencias. Este documento incluye los métodos y clases que serán expuestas en la versión “Inicial” – la cual tendrá un alcance limitado - con el fin de que sea usada por las entidades para su desarrollo interno y que realicen las pruebas iniciales del servicio. Esta versión inicial incluirá los procesos de suscripción e inactivación del servicio de clientes de entidades financieras y el envío de transferencias (denominadas Pagos) móviles. 3. Términos empleados Para los fines del presente documento, se entenderá por: BCCR: Banco Central de Costa Rica. SINPE: Sistema Nacional de Pagos Electrónicos. PMB: Servicio de Pagos Monedero Bancario. WCF: Windows Comunication Foundation, es un marco tecnológico de trabajo para la creación de aplicaciones orientadas a servicios, en nuestro caso es la tecnología utilizada para la comunicación entre las entidades participantes y el Banco Central. Edición No. 1 Público Página No. 1 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario 4. Documentos aplicables y anexos Siglas Nombre del documento NC-CG Norma complementaria - Codificaciones generales del Sistema de Pagos. NC-CC Norma complementaria - Cuenta Cliente (CC) e IBAN. NC-GG Norma complementaria - Glosario general. NC-IED Norma complementaria - Estándar general para intercambio electrónico de datos. 5. Comunicación en Tiempo Real 5.1. Consideraciones Generales A continuación se citan algunos aspectos generales concernientes a la comunicación entre los servidores de las entidades participantes en el servicio de PMB. La interacción entre los sistemas se hará utilizando tecnología web, específicamente a través de WCFs. Los tipos de datos que se detallan a continuación están basados en el WSDL del WCF, el cual es necesario para que las entidades realicen los ajustes a sus sistemas. Los servidores serán asegurados con certificados digitales generados desde el SINPE. El paso de los mensajes se hará a través de la red privada de comunicaciones del SINPE. El SINPE proveerá un WCFs para uso de las entidades origen de las transferencias. Los métodos que provee este WCF son síncronos por lo que la entidad debe invocar a los métodos y esperar respuesta hasta un máximo de 10 segundos (timeout). Cada entidad participante como destino deberá implementar un WCF para uso exclusivo del SINPE el cual deberá realizar las validaciones necesarias y retornar las respuestas según se indiquen en el presente estándar. El código que utiliza este servicio en el SINPE es el número 83. 5.2. Servicio de Administración de Pagos de Monedero Bancario (PMB) 5.2.1. Listado de los métodos contenidos el estándar 1. Listado general de métodos para Entidades Bancarias brindado por el SINPE a) Administrativo: i) Solicitar servicio monedero bancario ii) Inactivar servicio monedero bancario iii) Servicio disponible iv) Obtener información teléfono v) Permitir Recibir Transacciones vi) ObtenerDetalleOperaciones b) Pagos: i) Enviar pago desde cuenta ii) Enviar pago desde teléfono iii) Obtener estado 2. Listado general de métodos de Entidades Bancarias para el uso exclusivo del SINPE Edición No. 1 Público Página No. 2 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario a) Administrativo: i) Servicio disponible ii) Inactivar b) Pagos: i) Autorizar ii) Confirmar iii) Obtener estado iv) Reversar 5.2.2. WebService en SINPE para el uso Entidades Bancarias Origen Para solicitar el servicio o enviar un pago, las “Entidades Bancarias” harán uso de un WCF desarrollado por el SINPE, que contendrá la siguiente interfaz. 1. RespuestaPago EnviarPagoDesdeTelefono(pago Operacion) Descripción: Este método envía una transferencia de pago desde un teléfono para tramitar su autorización. Retorna: RespuestaPago con el resultado del envío. Restricciones: Válida solo entre teléfonos suscritos al servicio por diferentes entidades. Uso: Plataforma. a) Recibe: Operacion: Esta clase representa una transferencia de pago entre cuentas cliente de entidades financieras por medio de un número de teléfono y contiene las siguientes propiedades: i) NumTelefonoOrigen: Código numérico que identifica un número telefónico de un dispositivo móvil. ii) NumTelefonoDestino: Código numérico que identifica un número telefónico de un dispositivo móvil. iii) Moneda: Código de la moneda – La cual debe ser aceptada por el servicio – En este momento se aceptan: 1- Colones. iv) Monto: Monto a acreditar en la CC asociada al número de teléfono destino. v) CodReferencia: Campo numérico con longitud de veinticinco campos, que identifica de forma única la operación en el SINPE. Se valida que cumpla con el estándar para referencias establecido en la Norma complementaria - Estándar general para intercambio electrónico de datos. Refiérase como código de servicio el número 83 que es el correspondiente al servicio PMB (Monedero Bancario). vi) Descripcion: Campo alfanumérico con longitud de 20 caracteres que sirve para enviar una descripción general de la operación a realizar. vii) NombreClienteOrigen: Campo alfanumérico con longitud máxima de 40 caracteres que sirve para enviar el nombre del cliente que envía el pago. Nota: Este campo no aplica a pagos hechos desde teléfono. No se debe fijar cuando se use el método EnviarPagoDesdeTelefono. viii) IdClienteOrigen: Campo alfanumérico con longitud máxima de 30 caracteres que lleva la identificación del que envía el pago. Nota: Este campo no aplica a pagos hechos desde teléfono. No se debe fijar cuando se use el método EnviarPagoDesdeTelefono. b) Retorna: RespuestaPago: Esta clase representa la respuesta a una solicitud de pago y contiene las siguientes propiedades: Edición No. 1 Público Página No. 3 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario i) CodEstado: Código que representa el estado de la operación de pago según se define en el punto 6 de este documento. ii) CodMotivoRechazo: En caso de que la operación haya sido rechazada, contiene el código que indica la razón. Estas codificaciones son las definidas en el apartado 6 de este documento, para el rechazo de las operaciones. iii) Descripcion: Campo alfanumérico con longitud máxima de 250 caracteres que sirve para enviar una descripción general del rechazo de la solicitud. iv) NombreClienteDestino: Campo alfanumérico con longitud máxima de 40 caracteres que sirve para enviar el nombre del cliente de destino ha quien es enviado el pago. v) FecValor: Campo tipo DateTime usado para devolver al origen la fecha de valor de la transacción. 2. RespuestaPago EnviarPagoDesdeCuenta(pago Operacion) Descripción: Este método envía una transferencia de pago desde una cuenta bancaria para tramitar su autorización. Retorna: RespuestaPago con el resultado del envío. Restricciones: Válida solo para envíos si la cuenta bancaria pertenece a una entidad diferente a la que esté suscrito el número de teléfono. Uso: Plataforma. a) Recibe: Operacion: Esta clase representa una transferencia de pago entre cuentas cliente de entidades financieras por medio de un número de teléfono y contiene las siguientes propiedades: i) NumTelefonoOrigen: Código numérico que identifica un número telefónico de un dispositivo móvil. Nota: Este campo no aplica a pagos hechos desde cuenta. Se debe fijar en 0 cuando se use el método EnviarPagoDesdeCuenta. ii) NumTelefonoDestino: Código numérico que identifica un número telefónico de un dispositivo móvil. iii) Moneda: Código de la moneda – La cual debe ser aceptada por el servicio – En este momento se aceptan: 1- Colones. iv) Monto: Monto a acreditar en la CC asociada al número de teléfono destino. v) CodReferencia: Campo numérico con longitud de veinticinco campos, que identifica de forma única la operación en el SINPE. Se valida que cumpla con el estándar para referencias establecido en la Norma complementaria - Estándar general para intercambio electrónico de datos. Refiérase como código de servicio el número 83 que es el correspondiente al servicio PMB. vi) Descripcion: Campo alfanumérico con longitud de 20 caracteres que sirve para enviar una descripción general de la operación a realizar. vii) NombreClienteOrigen: Campo alfanumérico con longitud máxima de 40 caracteres que sirve para enviar el nombre del cliente que envía el pago. viii) IdClienteOrigen: Campo alfanumérico con longitud máxima de 30 caracteres que lleva la identificación del que envía el pago. b) Retorna: RespuestaPago: Esta clase representa la respuesta a una solicitud de pago y contiene las siguientes propiedades: i) CodEstado: Código que representa el estado de la operación de pago según se define en el punto 6 de este documento. Edición No. 1 Público Página No. 4 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario ii) CodMotivoRechazo: En caso de que la operación haya sido rechazada, contiene el código que indica la razón. Estas codificaciones son las definidas en el apartado 6 de este documento, para el rechazo de las operaciones. iii) Descripcion: Campo alfanumérico con longitud máxima de 250 caracteres que sirve para enviar una descripción general del rechazo de la solicitud. iv) NombreClienteDestino: Campo alfanumérico con longitud máxima de 40 caracteres que sirve para enviar el nombre del cliente de destino ha quien es enviado el pago. v) FecValor: Campo tipo DateTime usado para devolver al origen la fecha de valor de la transacción. 3. RespuestaPago ObtenerEstado(referencia String) Descripción: Consulta una operación de pago. Recibe: Código de referencia de la operación a consultar. Retorna: RespuestaPago con los datos de la operación. Uso: Plataforma. a) Retorna: RespuestaPago: Esta clase representa la respuesta a una solicitud de pago y contiene las siguientes propiedades: i) CodEstado: Código que representa el estado de la operación de pago según se define en el punto 6 de este documento. ii) CodMotivoRechazo: En caso de que la operación haya sido rechazada, contiene el código que indica la razón. Estas codificaciones son las definidas en el apartado 6 de este documento, para el rechazo de las operaciones. iii) Descripcion: Campo alfanumérico con longitud máxima de 250 caracteres que sirve para enviar una descripción general del rechazo de la solicitud. iv) NombreClienteDestino: Campo alfanumérico con longitud máxima de 40 caracteres que sirve para enviar el nombre del cliente de destino ha quien es enviado el pago. v) FecValor: Campo tipo DateTime usado para devolver al origen la fecha de valor de la transacción. 4. Booleano ServicioDisponible() Descripción: Este método será el responsable de indicar la disponibilidad del servicio móvil. Uso: Plataforma. Retorna: Booleano: Valor booleano que indica el estado del servicio. 5. Suscripcion ObtenerInformacionTelefono(numTelefono Integer) Descripción: Este método será el responsable de brindar la información del padrón móvil asociado al número de teléfono consultado. a) Retorna: Suscripcion: Esta clase representa la suscripción al servicio monedero bancario. Propiedades: i) NumTelefono: Número telefónico de un dispositivo móvil. ii) Identificacion: Campo alfanumérico con longitud de treinta caracteres, que identifica de forma única al dueño de la línea telefónica. iii) NombreCliente: Campo alfanumérico con longitud de 40 caracteres, con la cual será conocido el número telefónico en la transmisión de mensajes. Edición No. 1 Público Página No. 5 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario iv) CodEntidad: Código numérico de la entidad a la cual está suscrito el cliente en el monedero. En caso de que la suscripción no existe o no se encuentre en estado Activa se retorna un objeto NULO. 6. Respuesta SolicitarMonedero (solicitud Suscripcion) Descripción: Este método envía una solicitud la suscripción al servicio monedero bancario. Uso: Plataforma. a) Recibe: Suscripcion: Esta clase representa la solicitud de suscripción al servicio monedero bancario. Propiedades: i) NumTelefono: Número telefónico de un dispositivo móvil. ii) Identificacion: Campo alfanumérico con longitud de treinta caracteres, que identifica de forma única al dueño de la línea telefónica. iii) NombreCliente: Campo alfanumérico con longitud de 40 caracteres, con la cual será conocido el número telefónico en la transmisión de mensajes. Formato sugerido: Nombre + Espacio + Apellido1 + Espacio + Apellido2, si el espacio requerido para estos datos no superan los 40 caracteres. Nombre + Espacio + Apellido1, en el caso de que el formato anterior supere los 40 caracteres. iv) CodEntidad: Código numérico de la entidad solicitante. b) Retorna: Respuesta: Esta clase representa la respuesta a una solicitud de información o procesamiento, contiene las siguientes propiedades: i) CodEstado: Código que representa el estado de la solicitud según se define en el punto 6 de este documento. ii) CodMotivoRechazo: En caso de que la solicitud haya sido rechazada, contiene el código que indica la razón. Estas codificaciones son las definidas en el apartado 6 de este documento, para el rechazo de las operaciones. iii) Descripcion: Campo alfanumérico con longitud de 100 caracteres que sirve para enviar una descripción general del rechazo de la solicitud. 7. Respuesta InactivarMonedero(solicitud Suscripcion) Descripción: Este método envía una solicitud de desactivación del servicio monedero bancario. Uso: Plataforma. a) Recibe: Suscripcion: Esta clase representa la solicitud de inactivación al servicio monedero bancario. Propiedades: i) NumTelefono: Número telefónico de un dispositivo móvil. ii) Identificacion: Campo alfanumérico con longitud de treinta caracteres, que identifica de forma única al dueño de la línea telefónica. (Este campo no es usado para la inactivación) iii) NombreCliente: Campo alfanumérico con longitud de 40 caracteres, con la cual será conocido el número telefónico en la transmisión de mensajes. (Este campo no es usado para la inactivación). Edición No. 1 Público Página No. 6 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario iv) CodEntidad: Código numérico de la entidad solicitante. b) Retorna: Respuesta: Esta clase representa la respuesta a una solicitud de inactivación, contiene las siguientes propiedades: i) CodEstado: Código que representa el estado de la solicitud según se define en el punto 6 de este documento. ii) CodMotivoRechazo: En caso de que la solicitud haya sido rechazada, contiene el código que indica la razón. Estas codificaciones son las definidas en el apartado 6 de este documento, para el rechazo de las operaciones. iii) Descripcion: Campo alfanumérico con longitud de 100 caracteres que sirve para enviar una descripción general del rechazo de la solicitud. 8. PermitirRecibirTransacciones(permitir Boolean) Descripción: Activa o inactiva una entidad para recibir transacciones en PMB. Uso: Plataforma a) Recibe: Booleano que indica si la entidad se configura para permitir transacciones en PMB. b) Retorna: Sin retorno. 9. List(Of DetalleOperacion) ObtenerDetalleOperaciones(fecLiquidacion DateTime) Descripción: Obtiene la lista de las transacciones realizadas para la fecha de liquidación indicada. Recibe: fecLiquidacion, es la fecha en la que fueron liquidadas las transacciones. Retorna: una lista de DetalleOperacion. Uso: Plataforma. a) Retorna: List (Of DetalleOperacion): es una lista de DetalleOperacion, correspondiente a las transacciones liquidadas en la fecha indicada, la misma con las siguientes propiedades: i) CodReferencia: Campo numérico con longitud de veinticinco campos, que identifica de forma única la operación en el SINPE. Se valida que cumpla con el estándar para referencias establecido en la Norma complementaria - Estándar general para intercambio electrónico de datos. Refiérase como código de servicio el número 83 que es el correspondiente al servicio PMB (Monedero Bancario). ii) CodEntidadOrigen: Código numérico de la entidad que solicitó el servicio a uno de sus clientes. iii) CodEntidadDestino: Código numérico de la entidad destino del servicio a uno de sus clientes. iv) Monto: Monto a acreditar en la CC asociada al número de teléfono destino. v) CodMoneda: Código de la moneda – La cual debe ser aceptada por el servicio – En este momento se aceptan: 1- Colones. vi) FecValor: Fecha en la que se recibe la autorización de la entidad de destino sobre la operación consultada. Edición No. 1 Público Página No. 7 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario 5.2.3. Servicio WCF en los BANCOS para el uso del SINPE Para la operativa de un Pago o un Cobro, las “Entidades financieras” deberán proveer al SINPE de un WCF que contendrá la siguiente interfaz. 1. Respuesta Autorizar(transaccion Pago) Descripción: Este método es ofrecido por una entidad financiera con el fin de autorizar un pago proveniente del SINPE hacia una de sus CC asociada a un número de teléfono. Retorna: Respuesta con el resultado del envío. Restricciones: Válida solo entre teléfonos suscritos al servicio por diferentes entidades. Uso: Plataforma. a) Recibe: Pago: Esta clase representa una transferencia de pago entre cuentas cliente de entidades financieras por medio de un número de teléfono y contiene las siguientes propiedades: i) NumTelefonoOrigen: Código numérico que identifica un número telefónico de un dispositivo móvil. Este dato solo se envió cuando se autorizan transferencias originadas desde un teléfono móvil. ii) NumTelefonoDestino: Código numérico que identifica un número telefónico de un dispositivo móvil. iii) Moneda: Código de la moneda – La cual debe ser aceptada por el servicio – En este momento se aceptan: 1- Colones. iv) Monto: Monto a acreditar en la CC asociada al número de teléfono destino. v) IdClienteOrigen: Identificación del cliente origen. vi) NombreCliente: Campo alfanumérico que contiene el nombre del cliente (nombre con la cual será conocido el número telefónico en la transmisión de mensajes) del número de teléfono origen que genera la transferencia de pago. Con longitud máxima de 40 caracteres. vii) CodReferencia: Campo numérico con longitud de veinticinco campos, que identifica de forma única la operación en el SINPE. Se valida que cumpla con el estándar para referencias establecido en la Norma complementaria - Estándar general para intercambio electrónico de datos. Refiérase como código de servicio el número 83 que es el correspondiente al servicio PMB (Monedero Bancario). viii) Descripcion: Campo alfanumérico con longitud de 20 caracteres que sirve para enviar una descripción general del pago a realizar. ix) Retorna: Respuesta: Esta clase representa la respuesta a una solicitud de información o procesamiento, contiene las siguientes propiedades. x) CodEstado: Código que representa el estado de la solicitud de autorización, según se define en el punto 6 de este documento. xi) CodMotivoRechazo: En caso de que la solicitud de autorización haya sido rechazada, contiene el código que indica la razón. Estas codificaciones son las definidas en el apartado 6 de este documento, para el rechazo de las operaciones. xii) Descripcion: Campo alfanumérico con longitud de 250 caracteres que sirve para enviar una descripción general del rechazo de la solicitud. Edición No. 1 Público Página No. 8 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario 2. Respuesta ObtenerEstado(codReferencia String) Descripción: Consulta una operación de pago. Recibe: Código de referencia de la operación a consultar. Retorna: Clase Respuesta con los resultados de la operación. Uso: Plataforma. a) Retorna: Respuesta: Esta clase representa la respuesta a una solicitud de información o procesamiento, contiene las siguientes propiedades: i) CodEstado: Código que representa el estado de la solicitud de autorización, según se define en el punto 6 de este documento. ii) CodMotivoRechazo: En caso de que la solicitud de autorización haya sido rechazada, contiene el código que indica la razón. Estas codificaciones son las definidas en el apartado 6 de este documento, para el rechazo de las operaciones. iii) Descripcion: Campo alfanumérico con longitud de 250 caracteres que sirve para enviar una descripción general del rechazo de la solicitud. 3. Confirmar(codReferencia String, fecValor DateTime) Descripción: Confirma una operación de pago. Recibe: Código de referencia de la operación a confirmar fecValor para efectos de contabilidad. Retorna: Sin retorno. Uso: Plataforma. 4. Reversar(codReferencia String) Descripción: Reversa una operación de pago. Recibe: Código de referencia de la operación a reversar. Retorna: Sin retorno. Uso: Plataforma. 5. Booleano ServicioDisponible() Descripción: Este método será el responsable de indicar la disponibilidad del servicio móvil. Uso: Plataforma. Retorna: Booleano: Valor booleano que indica el estado del servicio. 6. Inactivar(numTelefono Integer, codEntidad Integer) Descripción: Indica a entidad la inactivación de un número telefónico. Recibe: Número de teléfono que debe ser inactivado y el código de entidad que lo inactivó. Retorna: Sin retorno. Uso: Plataforma. Edición No. 1 Público Página No. 9 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario 5.2.4. Flujos de información y uso de los métodos Para el correcto funcionamiento del servicio es importante dejar claro la interacción que se da entre los métodos expuestos para el origen así como los implementados por la entidad destino para uso del SINPE. 5.2.4.1. Métodos para suscripción y desuscripción: Método SolicitarMonedero (origen). Método InactivarMonedero (origen). Método Inactivar (destino). Al solicitar monedero se crea un registro en el padrón móvil del SINPE que asocia la entidad origen con el número de teléfono. Cuando se invoca al InactivarMonedero (origen) esta suscripción se marca como inactiva. En el caso cuando la suscripción fue creada por una entidad X y la entidad Y es la que invoca al InactivarMonedero el SINPE, para que la información sea consistente entre los sistemas, invoca al método Inactivar (destino) para que la entidad X marque como inactiva la suscripción que originalmente creó. 5.2.4.2. Métodos asociados al envío y recepción de operaciones: Método EnviarPagoDesdeTelefono (origen). Método EnviarPagoDesdeCuenta (origen). Método ObtenerEstado (origen). Método Autorizar (destino). Método ObtenerEstado (destino). Método Confirmar (destino). Método Reversar (destino). Estos métodos se utilizan para varios escenarios de envío en donde las operaciones son autorizadas y confirmadas, en donde las operaciones son rechazadas y donde existen problemas de comunicación entre el destino y SINPE o el origen y SINPE. El buen uso de estos métodos es indispensable para que las operaciones sean procesadas correctamente sin afectar a los usuarios finales. Envío, autorización y confirmación Este es el flujo básico del envío en donde la entidad origen invoca a algunos de los métodos de envío (EnviarPagoDesdeTelefono o EnviarPagoDesdeCuenta). El SINPE valida los datos e invoca al método Autorizar (destino) para que la entidad verifique que la información es correcta y autoriza la transferencia. El SINPE recibe la autorización y le informa al origen que la transferencia soy autorizada con éxito. Asincrónicamente, el SINPE invoca al método Confirmar (destino) para que la entidad destino proceda a acreditar los fondos en la cuenta del cliente destino. Este proceso se ejecuta cuantas veces sea necesario hasta que el llamado al confirmar sea procesado sin error. Importante aclarar que para el SINPE, si una operación es Autorizada por el destino esta no puede reversarse. La autorización hace que la operación quede en firme en el SINPE. Edición No. 1 Público Página No. 10 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario Envío y error entre SINPE y Destino Cuando se realiza el envío de una operación existen dos momentos en los que el SINPE puede recibir un error al comunicarse con el sistema, destino. El primero de ellos es al Autorizar y el segundo es al Confirmar. Si el error se da Autorizando el SINPE marca la operación como Rechazada por “Problemas de Comunicación” he informa al origen del rechazo de la operación. El SINPE asincrónicamente inicia el proceso de reversión. Para esto invoca al método Reversar (destino) cuantas veces sea necesario hasta que la reversión sea procesada exitosamente por la entidad destino, es decir, hasta que un llamado al método Reversar se complete sin error. Envío y rechazo En este escenario el rechazo se da al momento del Autorizar la operación ante el destino. Cuando el SINPE obtiene un rechazo de la operación guarda en el sistema el motivo de rechazo he informa a la entidad origen el rechazo de la operación. Debido a que fue la misma entidad destino la que generó el rechazo el SINPE NO invoca al Reversar (destino). Envío y error entre SINPE y Origen Cuando se realiza en envío de una operación la entidad origen debe esperar la respuesta del método. En determinados casos, bajo condiciones particulares e inesperadas puede ocurrir que la entidad origen reciba como respuesta a su llamado una excepción inesperada no especificada en el presenta estándar. Dadas estas condiciones la entidad origen no puede, bajo ninguna circunstancia tomar una decisión respecto al resultado de la operación sin antes preguntar al SINPE por el estado de la misma. Para estos casos, la entidad debe invocar, cuantas veces sea necesario, siguiendo su propio diseño al método ObtenerEstado (origen). Este es el mecanismo con el que cuenta la entidad origen para que la información sea consistente entre lo que está registrado en SINPE y lo que quede registrado en la entidad origen. Por su parte el SINPE, cuanta con el método ObtenerEstado (destino) para sincronizar estas operaciones que sufrieron problemas en su procesamiento. 5.2.5. Manejo de Excepciones Para manejar los errores, se propagan hacia el cliente faults del siguiente tipo: Clase: System.ServiceModel.FaultException< [NombreProxyServicioMonedero].PmbFault> Donde NombreProxyServicioMonedero es el nombre de la referencia al Wcf del servicio monedero que cada entidad origen crea. El nombre puede variar entre entidades origen. En la propiedad Detail del objeto FaultException se encuentra el detalle del fallo. Propiedades: Nombre Codigo Descripción Tipo Código del error. Integer Mensaje Mensaje que describe el error ocurrido. String IdManejo Identificador único del error. Útil para buscar los mensajes en bitácora asociados al llamado al WCF. Se recomienda almacenar este valor. Guid Edición No. 1 Público Página No. 11 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario Los códigos de error que la entidad origen puede manejar en el servicio PMB son los siguientes: Código decimal Descripción 0 Error interno del servicio de Pagos Monedero Bancario. 1 Número de teléfono inválido. 2 Número de identificación inválida. 3 Número de identificación no soportado. 4 El nombre del cliente excede el tamaño máximo permitido de caracteres. 5 El nombre de cliente origen es obligatorio. 6 El código de entidad suministrado no coincide con el de su entidad. 7 Referencia duplicada. 8 Monto inválido. 9 La descripción excede el tamaño máximo permitido de caracteres. 10 Error al autorizar el pago [Cód. Referencia] ante la entidad destino. 11 El número de teléfono destino no está suscrito al servicio o está inactivo. 12 El número de teléfono origen no está suscrito al servicio o está inactivo. 13 La entidad origen es la misma que la entidad destino. 14 La entidad origen es inconsistente con el número telefónico. 15 La transacción desde cuenta no debe especificar el teléfono origen. 16 La transacción desde teléfono no debe especificar los datos del cliente origen. 17 La fecha de liquidación [Fec. Liquidación] dada es incorrecta. 18 El número de teléfono utilizado ya está suscrito al servicio para otro cliente de la entidad: [Cód. Entidad]. 19 La entidad está usando una referencia inválida. 20 El número de teléfono utilizado no está suscrito al servicio Pagos Monedero Bancario. 21 La entidad origen [Cód. Entidad] está inactiva o no pertenece al servicio Pagos Monedero Bancario. 22 La entidad destino [Cód. Entidad] está inactiva o no pertenece al servicio Pagos Monedero Bancario. 23 La entidad origen [Cód. Entidad] no está registrada. 24 La entidad [Cód. Entidad] no está disponible para recibir transacciones. 25 El ciclo consultado para la fecha de liquidación [Fec. Liquidación] aún no ha cerrado. 26 La fecha de liquidación [Fec. Liquidación] consultada no corresponde a un día hábil. 27 Moneda no soportada. 28 El número de teléfono utilizado ya está suscrito al servicio para el mismo cliente en la entidad: [Cód. Entidad]. 29 El número de teléfono origen y destino no pueden ser el mismo. 30 La fecha de liquidación [Fec. Liquidación] para el cálculo de bilaterales del servicio Monedero Bancario, no puede ser mayor o igual a la actual [Fec. Actual]. Siempre que se invoque a uno de los métodos expuestos por el servicio de Monedero se debe cerrar el canal de Wcf para evitar que queden conexiones abiertas. En caso de excepción se debe Abortar el llamado. Edición No. 1 Público Página No. 12 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario A continuación un ejemplo para consumir unos de los métodos del WCF en forma segura: Lógica ante error en el envío El servicio genera excepciones tipo FaultException controladamente según las reglas de negocio que están definidas. Sin embargo, existe la posibilidad de que se generen otro tipo de excepciones que no se esperan. Cuando se llama a un método para enviar (EnviarPagoDesdeTelefono o EnviarPagoDesdeCuenta) es importante saber qué tipo de excepción se generó para así reaccionar ante el error. Las excepciones manejadas de tipo System.ServiceModel.FaultException< [NombreProxyServicioMonedero].PmbFault> indican el error específico ocurrido por lo que no es necesario invocar al método ObtenerEstado. Los envíos que reciben como respuesta este tipo de excepción no son registrados en el sistema debido a violaciones en las reglas del negocio. Del punto anterior existe solo una excepción, que es el código de error 0 - Error interno del servicio de Pagos Monedero Bancario. Este error no debería generarse ya que supondría un error en el procesamiento que no es parte de la lógica del servicio Monedero. Si un error de este tipo se presenta sí es necesario que la entidad origen invoque al método ObtenerEstado. Adicionalmente, es importante que la entidad reporte este tipo de errores ya que no deben presentarse en condiciones normales. Por otro lado, cuando al realizar un envío se recibe como respuesta una excepción diferente es necesario invocar cuantas veces sea necesario al ObtenerEstado con el fin de sincronizar los sistema de la entidad y del BCCR. Este tipo de errores pueden tener causas diversas y deben contemplarse en el desarrollo para que el sistema sea robusto. Edición No. 1 Público Página No. 13 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario 6. Tipos de datos y formatos soportados 6.1.1. Catálogo de Motivos de rechazo Código Descripción Uso exclusivo Entidad destino 1 Cuenta asociada al número de teléfono cerrada 2 Cuenta asociada bloqueada 3 Cuenta asociada al número de teléfono no existe Inconsistente 4 El número de teléfono no se encuentra registrado Inconsistente 5 Moneda no corresponde Inconsistente 6 Problemas de comunicación SINPE 7 Problemas en la respuesta del destino SINPE al número de Inconsistente teléfono Correcto Nota: Cuando el destino retorne un código de error “Inconsistente” o que existan problemas de comunicación (el SINPE registrará un código de error interno con valor igual a 6), el sistema retornará a la entidad origen el motivo “Problemas en la respuesta del destino” código igual a 7. 6.1.2. Estados de las operaciones de Pagos y Cobros móviles En los Wcf, al consultar una operación, la misma puede tener cualquiera de los siguientes estados: Código Descripción 1 No Existe. 2 Rechazada. 4 Autorizada. 6.1.3. Catálogo de Identificaciones Este catálogo es parte del documento NC-CG. Las identificaciones listadas son las que están soportadas por el servicio PMB. Código Identificación 1 Cédula Identidad 4 Cédula Jurídica 8 10 Edición No. 1 Formato y Expresión Regular \0#-####-#### ^0[1-9]{1}-\d{4}-\d{4}$ 3-###-###### ^3-\d{3}-\d{6}$ Documento Único 1########### de Identificación ^1[0-9]{11}$ (DIMEX) Documento de Identificación para 5########### Diplomáticos ^5[0-9]{11}$ (DIDI) Público Página No. 14 Longitud 12 9 12 12 Vigencia: 01/01/2014 Estándar Electrónico - Pagos Monedero Bancario 6.1.4. Formatos de teléfonos Data la portabilidad numérica con la que cuentan los clientes de teléfonos móviles el SINPE no puede identificar el proveedor de servicios al cual está adscrito el teléfono. El SINPE, a modo de verificar que los datos sean correcto valida que se cumplan alguno de los siguientes formatos. Código Operador Formato y Expresión Regular Longitud 1 ICE \8####### ^8[0-9]{7}$ 8 2 MoviStar \6####### ^7[0-9]{7}$ 8 3 Claro \7####### ^6[0-9]{7}$ 8 6.1.5. Catálogo de monedas Este catálogo es parte del documento NC-CG Código Descripción Aceptada 1 Colones Si 2 Dólares No 19 Euros No Edición No. 1 Público Página No. 15 Vigencia: 01/01/2014