javoscript/laravel-mercadopago-prepaid-subscriptions

使用MercadoPago作为支付方式的Laravel框架的预付费订阅包。

v0.3.3 2019-06-10 16:03 UTC

This package is auto-updated.

Last update: 2024-09-11 03:46:56 UTC


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 标签。

![alt text](./docs/sandbox_mode.png "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_valuetime_unit 表示购买该套餐后日期延长的时间段
  • price 表示阿根廷比索(ARS)价格
  • old_price 表示之前的价格(或 无折扣
  • details 是包含套餐特征的 array of strings

所有这些值都可通过 Javoscript\PrepaidSubs\PrepaidPlan 类对象在代码的任何需要位置使用(后面将详细介绍)。

![alt text](./docs/plans_partial.png "默认套餐部分")

包含在包中的 `partial`:包含必要数据和套餐选择表单。

使用

TODO:添加图片

总体结构

TODO:完成

外观(Facade)

TODO:完成

账户

TODO:完成

套餐

TODO:完成

特质(Trait)

(可选) 包含一个特质,可以添加到需要与订阅账户相关联的模型中 TODO:完成

视图(Views)

包包含两个示例视图,用于实现前端。

套餐

TODO:完成

支付(Payments)

TODO:完成

如何覆盖回调视图

  • 成功
  • 失败
  • 挂起

购买套餐

许可

MIT 许可证(MIT)。查看 许可证 了解更多信息。