javoscript / laravel-mercadopago-prepaid-subscriptions
使用MercadoPago作为支付方式的Laravel框架的预付费订阅包。
Requires
- mercadopago/dx-php: ^1.2
- nesbot/carbon: ^2.19
Requires (Dev)
- orchestra/testbench: ^3.5
- phpunit/phpunit: ^8.1
README
由于最近从MercadoPago开发者的文档中移除了关于 订阅(或 定期付款)的部分,因此需要创建一个 替代方案。
此包的功能与典型订阅不完全相同。相反,它提供了在 Laravel 开发的应用程序中实现 预付费订阅 所需的逻辑。
预付费订阅不是什么?
它不是我们经常使用的典型订阅概念,其中一个用户订阅一个服务或产品,并按固定周期支付固定金额。
MercadoPago提供了这种付款模式,但其API的集成文档已被从 开发者页面 移除。
预付费订阅是什么?
也许围绕 到期日 的概念更容易理解。此包的实现方式如下:
- 一个 模型 与一个 订阅账户 (
account
)相关联 - 在注册此关联时,将分配一个 到期日 (
expiration_date
)。此初始到期日将取决于可配置的 免费试用 的值。 - 只要账户的到期日晚于当前日期,订阅就会保持 活跃 状态。
- 提供通过购买(可配置)计划 来 延长 此到期日的选项。这些计划通过 时间段 和 价格 延长到期日。
- 可以连续购买多个计划,从而进一步延长到期日。
示例
- 用户于2019年1月1日创建了一个新账户
- 免费试用设置为7天。因此,到期日 被分配为2019年1月8日
初始情况
- 配置的 计划 是:
- 用户购买了 1个月计划,因此其账户将变为
- 用户购买了 12个月计划,因此其账户将变为
-
如果用户继续购买计划,则将继续延长其到期日(即使不必要)。
-
如果用户不再购买计划,则其账户将最早于2019年2月7日失效。在此日期之前,其订阅保持活跃。
安装
使用 composer
安装此包
composer require javoscript/laravel-mercadopago-prepaid-subscriptions
运行迁移以在数据库中生成所需的表
php artisan migrate
发布配置
php artisan vendor:publish --provider="Javoscript\PrepaidSubs\PrepaidSubsServiceProvider" --tag=config
(可选)发布视图以进行自定义
php artisan vendor:publish --provider="Javoscript\PrepaidSubs\PrepaidSubsServiceProvider" --tag=views
配置
环境变量
在 .env 文件中添加环境变量
MP_PUBLIC_KEY=
MP_ACCESS_TOKEN=
MP_SANDBOX_PUBLIC_KEY=
MP_SANDBOX_ACCESS_TOKEN=
这些可以从 MercadoPago 获取。
包配置
发布配置文件后,可以编辑 config/prepaid-subs.php
中的可配置参数。这些变量是:
service_name
指示正在销售的服务的名称。它将在MercadoPago的购买描述中发送。
route_prefix
指示将用于包中使用的路由的保留字。
默认值:"prepaid-subs"
free_trial
表示将提供免费试用期的时长。
默认值:"7 days"
此选项接受与 Carbon\Carbon
包中的 add()
函数相同格式的 strings
。查看文档。
一些有效示例
"1 week"
"3 weeks"
"2 months"
"1 year"
sandbox_mode
表示是否以测试模式进行 MercadoPago 集成。
默认值:true
当此变量值为 true
时,在通过 MercadoPago 进行支付时将可以看到 Sandbox Mode 标签。

测试模式下的 MercadoPago 集成
plans
表示将提供的套餐。必须遵守示例中显示的 array
格式。
"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
表示套餐名称time_value
和time_unit
表示购买该套餐后日期延长的时间段price
表示阿根廷比索(ARS)价格old_price
表示之前的价格(或 无折扣)details
是包含套餐特征的 array of strings
所有这些值都可通过 Javoscript\PrepaidSubs\PrepaidPlan 类对象在代码的任何需要位置使用(后面将详细介绍)。

包含在包中的 `partial`:包含必要数据和套餐选择表单。
使用
TODO:添加图片
总体结构
TODO:完成
外观(Facade)
TODO:完成
账户
TODO:完成
套餐
TODO:完成
特质(Trait)
(可选) 包含一个特质,可以添加到需要与订阅账户相关联的模型中 TODO:完成
视图(Views)
包包含两个示例视图,用于实现前端。
套餐
TODO:完成
支付(Payments)
TODO:完成
如何覆盖回调视图
- 成功
- 失败
- 挂起
购买套餐
许可
MIT 许可证(MIT)。查看 许可证 了解更多信息。