Detalle
| Campo | Descripción |
|---|---|
| Manual de Usuario | MercadoPago - Configuración y cobro de cuotas online en Plenario |
MercadoPago es un medio de cobro online que se integra a Plenario para que los clientes puedan pagar las cuotas de sus créditos con tarjeta, dinero en cuenta o efectivo (Pago Fácil / Rapipago), usando el checkout de…
| Campo | Descripción |
|---|---|
| Manual de Usuario | MercadoPago - Configuración y cobro de cuotas online en Plenario |
MercadoPago es un medio de cobro online que se integra a Plenario para que los clientes puedan pagar las cuotas de sus créditos con tarjeta, dinero en cuenta o efectivo (Pago Fácil / Rapipago), usando el checkout de MercadoPago (Checkout Pro).
Funciona de forma complementaria al proveedor de cobro base (Pago360 / Mobbex): no lo reemplaza, se suma como una opción más. El circuito es el mismo que ya conocés de Pago360, pero sobre la plataforma de MercadoPago.
Se puede usar de dos maneras:
Cuando el cliente paga, el cobro se imputa automáticamente (asiento contable + cuenta corriente + cuota marcada como cobrada), sin intervención manual. Este manual explica cómo configurarlo y cómo usarlo desde cero.
MercadoPago no es una pantalla propia: se usa desde los lugares donde ya cobrás cuotas.
Importante: para generar links de pago desde el Back Office necesitás el permiso de operaciones de solicitud de pago. Ver la sección Permisos al final.
En el Detalle de Crédito, el menú Operaciones agrupa las acciones de cobro. Además de las de Pago360 y Mobbex, vas a encontrar las de MercadoPago:
El menú Ver incluye Log MercadoPago (crédito) y Log MercadoPago (cuota seleccionada). Todas estas opciones están también en el menú contextual (clic derecho sobre la grilla de cuotas), en el mismo orden.
Toda la configuración de MercadoPago vive en parámetros del sistema. El principal es un parámetro con un JSON (patrón config-en-parámetro, no una tabla).
| Campo | Descripción |
|---|---|
Web.MisCreditos.MercadoPago.Config |
JSON con las credenciales. Campos: AccessToken / AccessToken_Test (tokens de MercadoPago), WebhookSecret / WebhookSecret_Test (clave secreta de firma del webhook), Entorno (test o produccion), Activo (habilita/deshabilita). El sistema usa el par Test o el productivo según Entorno. |
| Campo | Descripción |
|---|---|
BO.MercadoPago.WebHooks |
URL base de la API de Plenario adonde MercadoPago avisa el pago (ej. https://apiqa.plenario.net.ar/PlenarioServices.svc/json). Es el mismo que usa MisCreditos. |
BO.MercadoPago.UrlRetorno |
Página de "gracias" a la que vuelve el cliente después de pagar. |
BO.MercadoPago.Link.DiasVigencia |
Días de vigencia del link desde el día de emisión (default 7; 0 = sin vencimiento). Pasado ese plazo el link deja de funcionar. |
BO.MercadoPago.Asunto.Correo |
Asunto del mail con el link de pago. |
BO.MercadoPago.Solicitud_Pago.Descripcion |
Texto que acompaña al link cuando no se usa una carta. |
BO.MercadoPago.Solicitud_Pago.Id_Carta |
Id de carta (plantilla) para el body del mail. Si es 0, se envía texto plano. La carta puede usar el tag <MercadoPago_Link_CheckOut_Url> donde va el link. |
BO.MercadoPago.Conciliar.Token |
Token interno que protege el endpoint de conciliación (lo usan el botón "Verificar cobro" y la tarea automática). |
Web.MercadoPago.WebHooks.Cobros.ProveedoresFinancieros |
Id del inversor / proveedor financiero contra el que se hace el asiento del cobro. Debe apuntar a un inversor con cuenta contable definida. |
…/MercadoPago/WebHooks) y copiá la Clave secreta al parámetro JSON. Ojo: el panel tiene Modo de prueba y Modo productivo, cada uno con su propia clave secreta; usá la que corresponda al entorno de tus pagos.Importante: si el token es de producción, los pagos salen reales (
live_mode:true) y MercadoPago firma con la clave secreta productiva. Para probar sin plata real, usá credenciales de test + un usuario de prueba comprador (así los pagos sonlive_mode:false).
El cobro se imputa por dos vías complementarias, con doble red de seguridad:
| Campo | Descripción |
|---|---|
| Webhook automático | Cuando el cliente paga, MercadoPago avisa a la API de Plenario (MercadoPago/WebHooks). El sistema valida la firma, consulta el pago y, si está aprobado, imputa la cuota (asiento + cuenta corriente + marca la cuota cobrada). Es el camino normal, sin intervención. |
| Conciliación (respaldo) | Si el webhook no llega o no valida (error de red, firma, etc.), la conciliación consulta MercadoPago directamente y cobra los pagos aprobados que todavía no se imputaron. Se dispara a mano (botón "Verificar cobro") o automáticamente por una tarea programada cada 10 minutos. |
Importante: el cobro está garantizado por la conciliación aunque el webhook falle. Ningún pago se pierde: si el webhook no lo imputó, la tarea automática lo levanta en pocos minutos.
| Campo | Descripción |
|---|---|
| Crear link y enviar por correo | Genera el link de pago para las cuotas seleccionadas y lo envía por mail al cliente. |
| Crear link (copiar para WhatsApp) | Genera el link y lo copia al portapapeles para que lo pegues en el chat de WhatsApp con el cliente. |
| Verificar cobro / Conciliar | Consulta MercadoPago por los pagos del crédito e imputa los aprobados que falten (respaldo manual del webhook). |
| Log MercadoPago (crédito / cuota) | Muestra las preferencias, webhooks y cobros de MercadoPago del crédito o de la cuota seleccionada. |
Importante: si ya existe un pago activo (aprobado o en curso) para esas cuotas, el sistema no genera un link nuevo y avisa, para evitar el doble pago.
Querés cobrarle a un cliente la cuota 3 de su crédito mandándole el link por WhatsApp:
El link tiene vencimiento (por defecto 7 días desde que lo emitís): si el cliente no paga en ese plazo, generá uno nuevo.
Si el cliente dice que pagó pero la cuota figura impaga, usá Verificar cobro / Conciliar antes de preocuparte: en pocos minutos la tarea automática también la levanta.
No hace falta esperar el webhook: la conciliación es la red de seguridad y cobra igual.
Para pagos de prueba, usá un usuario de prueba comprador de MercadoPago y una tarjeta de test con titular APRO (fuerza la aprobación).
| Permiso | Habilita |
|---|---|
Prestamos.Creditos.Busquedas.Operaciones_SolicitudDePago360 |
Generar links de pago (mail / WhatsApp) desde el Detalle de Crédito. Es el mismo permiso que las operaciones de Pago360. |
Ver el log de MercadoPago no requiere permiso adicional. El endpoint de conciliación se protege con el token interno
BO.MercadoPago.Conciliar.Token, no con permisos de usuario.
Sección de referencia para soporte/desarrollo. Basada en la implementación real de la v14 (changesets 23190–23208).
| Componente | Detalle |
|---|---|
| Config | MercadoPago_Config (VPNET_DataModel/Modelo/ServiciosExternos/MercadoPago_Config.cs), POCO cargado del parámetro JSON Web.MisCreditos.MercadoPago.Config. |
| Cliente REST | Rest_MercadoPago (VPNET_DataModel/…/ServiciosExternos/Rest_MercadoPago.cs) sobre el SDK oficial mercadopago-sdk 2.3.8: CrearPreferenciaAsync (con vencimiento expires/expiration_date), GetPaymentAsync, BuscarPagosPorExternalRef, ExistePagoActivoPorExternalRef (guard), ValidarFirma (prueba ambas secrets). El search usa el SDK (no HttpClient crudo) porque el HttpClient crudo negocia TLS de forma intermitente contra la API de MercadoPago. |
| Orquestador BO | MercadoPago_Solicitud_Manager (dentro de MercadoPago_Manager.cs): ValidarCrearLinkMercadoPago_ByIdDetalle_Credito (valida crédito/cuotas, calcula importe con punitorios, arma external_reference, genera link, envía mail) y ConciliarCredito. RunSync evita deadlock async en el hilo de UI. |
| Persistencia / log | MercadoPago_Manager (getLog/GetHooks/GetHooksCobros, HookProcesadoConCobros, Save_Log/Save_Hooks, GetSolicitudesPendientesConciliar). |
| UI Back Office | frmPrestamos_Creditos_Detalle.vb (menú Operaciones/Ver + contextual), frmPrestamos_Solicitudes.vb (botón Log en ribbon), FormMercadoPago_Log (VPNET_WinForms/Servicios/). |
| API / webhook | VPNET_WCF/…/Externos/MercadoPago.cs: endpoints MercadoPago/WebHooks (IPN, valida firma → imputa), MercadoPago/Conciliar (por solicitud) y MercadoPago/ConciliarPendientes (batch, para la tarea programada). La imputación reusa la lógica de Pago360 (MercadoPago_ImputarCobro). |
| Web cliente | VPNET_WEB_MisCreditos (HomeController.ProcesarPago branch Medio=="MP", vista PagoExitosoMercadoPago.cshtml, botonera en Index.cshtml). |
| Tabla / entidad | Contenido |
|---|---|
MercadoPago_Log |
Preferencias creadas (Identificador = external_reference, Id_Referencia = preference id, CheckOut_Url, Estado). |
MercadoPago_Hooks |
Webhooks recibidos (Data_Payment_Id, Data_Payment_Status, Procesado). |
MercadoPago_Hooks_Cobros |
Cuotas cobradas por cada hook (Id_Prestamos_Creditos_Detalle). |
Prestamos_Creditos_Detalle |
Cuotas (Fecha_Cobro se marca al imputar). |
| Se conecta con | Cómo |
|---|---|
| Medios de cobro (Pago360 / Mobbex) | Es complementario: reusa la lógica de imputación de Pago360 (MercadoPago_ImputarCobro) y el mismo layout de external_reference. Ver Préstamos - Medios de cobro. |
| Préstamos (Detalle de Crédito) | Se opera desde el Detalle de Crédito; imputa marcando la cuota en Prestamos_Creditos_Detalle. Ver Nueva solicitud de crédito. |
| Contabilidad | Cada cobro genera asiento contable (contra el inversor/proveedor financiero del parámetro Web.MercadoPago.WebHooks.Cobros.ProveedoresFinancieros). |
| Cuentas Corrientes | El cobro genera el movimiento en la cuenta corriente del cliente. |
| Web de clientes (MisCreditos) | El mismo circuito se dispara desde el portal VPNET_WEB_MisCreditos. Ver Web de Workflow. |
| Cartas / Notificaciones | El mail con el link usa una carta (plantilla) del módulo de Cartas (BO.MercadoPago.Solicitud_Pago.Id_Carta). |
{Id_Solicitud},{Id_Credito},{Id_PCD…} (mismo layout que Pago360). El webhook lo parsea para imputar. Es agnóstico al origen: un link nacido en el BO imputa igual que uno de MisCreditos.HookProcesadoConCobros (por payment_id) + cuotas solo Fecha_Cobro == null + transacción IsolationLevel.Snapshot (conflicto de escritura si dos procesos imputan la misma cuota a la vez → el segundo hace rollback).id:{queryDataId};request-id:{x-request-id};ts:{ts}; firmado HMAC-SHA256. Los headers se leen de HttpContext.Current.Request (WebOperationContext no los expone bien). ValidarFirma prueba las secrets de test y producción.expires=true + expiration_date_from/to desde el día de emisión, según BO.MercadoPago.Link.DiasVigencia.MercadoPago/ConciliarPendientes de la API. Así, aunque un webhook no llegue, los pagos aprobados que quedaron sin imputar se levantan solos a los pocos minutos. Conviene que la tarea corra bajo una cuenta con permiso para ejecutarse desatendida.Esquema del script de conciliación (PowerShell). No incluye credenciales: reemplazá los marcadores <...> por los valores de tu instalación. El token es el valor del parámetro BO.MercadoPago.Conciliar.Token y la URL es la de la API de Plenario (la misma base que el webhook).
# Fuerza TLS 1.2 (requerido para hablar con la API)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$uri = "<URL_API>/MercadoPago/ConciliarPendientes" # misma base que el webhook
$token = "<TOKEN_CONCILIACION>" # = parametro BO.MercadoPago.Conciliar.Token
$log = "<RUTA_DEL_LOG>" # archivo donde registrar el resultado
$body = '{"token":"' + $token + '","dias":15,"max":200}'
try {
$r = Invoke-WebRequest -Uri $uri -Method Post -Body $body `
-Headers @{ "Content-Type" = "application/json" } -UseBasicParsing -TimeoutSec 240
Add-Content $log ("{0} OK {1}" -f (Get-Date), $r.Content)
} catch {
Add-Content $log ("{0} ERROR {1}" -f (Get-Date), $_.Exception.Message)
}
En el cuerpo, dias indica cuántos días hacia atrás revisar y max el tope de solicitudes por corrida. El endpoint es idempotente: nunca vuelve a imputar una cuota ya cobrada, así que es seguro correrlo tan seguido como quieras.
Ingresá con tu usuario del equipo para dejar una sugerencia.