PHPackages                             javoscript/laravel-mercadopago-prepaid-subscriptions - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. javoscript/laravel-mercadopago-prepaid-subscriptions

AbandonedLibrary[Payment Processing](/categories/payments)

javoscript/laravel-mercadopago-prepaid-subscriptions
====================================================

A prepaid subscriptions package for the Laravel framework implemented with MercadoPago as the payment method.

v0.3.3(7y ago)6521[1 issues](https://github.com/javoscript/laravel-mercadopago-prepaid-subscriptions/issues)MITPHPCI failing

Since Jun 1Pushed 7y ago2 watchersCompare

[ Source](https://github.com/javoscript/laravel-mercadopago-prepaid-subscriptions)[ Packagist](https://packagist.org/packages/javoscript/laravel-mercadopago-prepaid-subscriptions)[ RSS](/packages/javoscript-laravel-mercadopago-prepaid-subscriptions/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependencies (4)Versions (12)Used By (0)

💰 Laravel MercadoPago Prepaid Subscriptions 💰
=============================================

[](#-laravel-mercadopago-prepaid-subscriptions-)

Dado que la sección sobre *suscripciones* (o *pagos recurrentes*) fue removida recientemente de la documentación de MercadoPago para desarrolladores, fue necesario crear una **alternativa**.

La funcionalidad de este paquete no es exactamente igual a la de las suscripciones típicas. En cambio, provee la lógica necesaria para implementar **suscripciones prepagas** dentro de una aplicación desarrollada en [Laravel](https://laravel.com).

¿Qué **NO** son las *suscripciones prepagas*?
---------------------------------------------

[](#qué-no-son-las-suscripciones-prepagas)

No son el típico concepto de suscripción que utilizamos frecuentemente, donde uno se **suscribe** a un servicio o producto y paga un monto fijo cada cierto período de tiempo.

Ese modelo de pagos lo ofrece MercadoPago, pero la documentación de la API para poder integrar un sistema externo fue removida de la [página para developers](https://www.mercadopago.com.ar/developers).

¿Qué **SÍ** son las *suscripciones prepagas*?
---------------------------------------------

[](#qué-sí-son-las-suscripciones-prepagas)

Tal vez sea más fácil de entender alrededor del concepto de **fecha de vencimiento**. La implementación de este paquete funciona de la siguiente forma:

- Un **modelo** se asocia a una **cuenta de suscripción** (`account`)
- En el momento en que se registra esta asociación, se le asigna una **fecha de vencimiento** (`expiration_date`). Esta fecha de vencimiento inicial dependerá del valor configurable del **free trial**.
- La suscripción estará **activa** siempre que la fecha de vencimiento de la cuenta sea posterior a la fecha actual.
- Se ofrece la posibilidad de **extender** esta fecha de vencimiento con la compra de **planes** (configurables). Estos planes extienden la fecha de vencimiento por un **período de tiempo** a un **precio**.
- Se pueden comprar múltiples planes de forma consecutiva, extendiendo aún más la fecha de vencimiento.

### Ejemplo

[](#ejemplo)

- Un usuario crea una nueva cuenta el 1-ene-2019
- El **free trial** se encuentra configurado por 7 días. Por lo tanto, la **fecha de vencimiento** se asigna al 8-ene-2019

Situación inicial:

cuentaFecha de vencimiento7-ene-2019Fecha de creación1-ene-2019- Los **planes** configurados son:

Plan 1 mesPlan 6 mesesPlan 12 mesesExtiende la fecha1 mes6 meses12 mesesPrecio$99$499$999- El usuario compra el **plan de 1 mes**, por lo que su cuenta quedará:

cuentaFecha de vencimiento7-ene-2019 **7-feb-2019**Fecha de creación1-ene-2019- El usuario compra el **plan de 12 meses**, por lo que su cuenta quedará:

cuentaFecha de vencimiento7-feb-2019 **7-feb-2020**Fecha de creación1-ene-2019- Si el usuario siguiera comprando planes, seguiría extendiendo su fecha de vencimiento (más allá de que no fuera necesario).
- Si el usuario no comprara más planes, su cuenta recién quedaría inhabilitada el 7-feb-2019. Hasta ese día su suscripción se encuentra activa.

Instalación
-----------

[](#instalación)

Para instalar el paquete con `composer`:

```
composer require javoscript/laravel-mercadopago-prepaid-subscriptions
```

Correr las migraciones para generar las tablas necesarias en la base de datos:

```
php artisan migrate
```

Publicar la configuración

```
php artisan vendor:publish --provider="Javoscript\PrepaidSubs\PrepaidSubsServiceProvider" --tag=config
```

(Opcional) Publicar las vistas para customizarlas

```
php artisan vendor:publish --provider="Javoscript\PrepaidSubs\PrepaidSubsServiceProvider" --tag=views
```

Configuración
-------------

[](#configuración)

### Variables de entorno

[](#variables-de-entorno)

Agregar las variables de entorno en el archivo .env:

```
MP_PUBLIC_KEY=
MP_ACCESS_TOKEN=
MP_SANDBOX_PUBLIC_KEY=
MP_SANDBOX_ACCESS_TOKEN=

```

Estas se pueden obtener de [MercadoPago](https://www.mercadopago.com/mla/account/credentials).

### Configuración del paquete

[](#configuración-del-paquete)

Luego de publicar el archivo de configuración, se pueden editar los parámetros configurables en `config/prepaid-subs.php`. Estas variables son:

#### `service_name`

[](#service_name)

Indica el nombre del servicio que se está vendiendo. Se enviará en la descripción de la compra por MercadoPago.

#### `route_prefix`

[](#route_prefix)

Indica el prefijo que se usarán para las rutas utilizadas por el paquete.

Valor por defecto: `"prepaid-subs"`

#### `free_trial`

[](#free_trial)

Indica el período que se ofrecerá como free trial.

Valor por defecto: `"7 days"`

Esta opción acepta `strings` con el mismo formato que la función `add()` del paquete `Carbon\Carbon`. Ver [Documentación](https://carbon.nesbot.com/docs/).

Algunos ejemplos válidos:

- `"1 week"`
- `"3 weeks"`
- `"2 months"`
- `"1 year"`

#### `sandbox_mode`

[](#sandbox_mode)

Indica si la integración con MercadoPago se realiza en modo de prueba.

Valor por defecto: `true`

Cuando esta variable tenga el valor `true`, se podrá obervar el cartelito de *Sandbox Mode* al proceder al pago con MercadoPago.

 !\[alt text\](./docs/sandbox\_mode.png "MercadoPago sandbox mode")

 Integración con MercadoPago en modo de prueba (\*sandbox mode\*)

#### `plans`

[](#plans)

Indica los planes que ofrecerá el paquete. Se debe respetar el formato del `array` que se vé en el ejemplo.

```
    "plans" => [
        [
            "name" => "1 mes",
            "time_value" => 1,
            "time_unit" => "month",
            "price" => 99,
            "old_price" => null,
            "details" => [
                "El más básico, sólo un mes",
                "Sin ahorros",
                "Sin riesgos",
                "Para probar el producto"
            ]
        ],
        [
            "name" => "3 meses",
            "time_value" => 3,
            "time_unit" => "month",
            "price" => 199,
            "old_price" => 300,
            "details" => [
                "Para quien piensa a mediano plazo, tres meses",
                "Quiero probarlo, y quiero ahorrar",
            ]
        ],
        [
            "name" => "12 meses",
            "time_value" => 12,
            "time_unit" => "month",
            "price" => 999,
            "old_price" => 1200,
            "details" => []
        ],
    ]
```

- `name` indica el nombre del plan
- `time_value` y `time_unit` indican el período de tiempo que se extenderá la fecha de vencimiento al comprar ese plan
- `price` indica el precio en pesos argentinos (ARS)
- `old_price` indica el precio anterior (o *sin descuento*)
- `details` es un *array* de *strings* que contiene características del plan

Todos estos valores estarán disponibles para usar en donde sea necesario en el código a través de objetos de la clase **Javoscript\\PrepaidSubs\\PrepaidPlan** (ver más adelante).

 !\[alt text\](./docs/plans\_partial.png "Included default plans partials")

 `partial` inlcuido con el paquete: formulario con datos necesarios y elección de plan.

Uso
---

[](#uso)

TODO: add image

### Estructura general

[](#estructura-general)

TODO: completar

### Facade

[](#facade)

TODO: completar

#### Cuentas

[](#cuentas)

TODO: completar

#### Planes

[](#planes)

TODO: completar

### Trait

[](#trait)

(Opcional) El paquete incluye un Trait que se puede agregar a los modelos que se quieran relacionar con las cuentas de suscripciones TODO: completar

### Views

[](#views)

El paquete incluye dos vistas a modo de ejemplo para la implementación del lado del frontend.

#### Planes

[](#planes-1)

TODO: compoletar

#### Payments

[](#payments)

TODO: completar

#### Cómo sobreescribir las vistas de callback

[](#cómo-sobreescribir-las-vistas-de-callback)

- Success
- Failure
- Pending

### Compra de un plan

[](#compra-de-un-plan)

Licencia
--------

[](#licencia)

MIT License (MIT). Ver [Licencia](LICENSE.md) para más información.

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance17

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

10

Last Release

2573d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/98cb268ce8d38cba08b647f8e780ac180f3b5c86de0492d837f3a8017e4d1222?d=identicon)[javoscript](/maintainers/javoscript)

---

Top Contributors

[![javoscript](https://avatars.githubusercontent.com/u/11479916?v=4)](https://github.com/javoscript "javoscript (40 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/javoscript-laravel-mercadopago-prepaid-subscriptions/health.svg)

```
[![Health](https://phpackages.com/badges/javoscript-laravel-mercadopago-prepaid-subscriptions/health.svg)](https://phpackages.com/packages/javoscript-laravel-mercadopago-prepaid-subscriptions)
```

###  Alternatives

[srmklive/paypal

PayPal REST API client for Laravel and standalone PHP.

1.1k4.0M29](/packages/srmklive-paypal)[shetabit/multipay

PHP Payment Gateway Integration Package

293355.3k4](/packages/shetabit-multipay)[imdhemy/google-play-billing

Google Play Billing

491.4M5](/packages/imdhemy-google-play-billing)[lemonsqueezy/laravel

A package to easily integrate your Laravel application with Lemon Squeezy.

587114.4k](/packages/lemonsqueezy-laravel)[mollie/laravel-cashier-mollie

Laravel Cashier provides an expressive, fluent interface to Mollie's subscription billing services.

177185.5k1](/packages/mollie-laravel-cashier-mollie)[blendbyte/paypal

PayPal REST API client for Laravel and standalone PHP.

1.1k1.4k](/packages/blendbyte-paypal)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
