【问题标题】:How to handle different plan options with Stripe?如何使用 Stripe 处理不同的计划选项?
【发布时间】:2016-04-10 07:06:11
【问题描述】:

我正在使用 Laravel 和 Stripe。我的应用中有 5 种不同的订阅计划。每个计划都有自己的一组选项,例如

基本计划 - 最大广告系列 - 20 - 最大电子邮件数 - 100

专业计划 - 最大广告系列 - 40 - 最大电子邮件 - 200

等等

如何在我的数据库中表示这些选项?

我使用 Laravel 的收银员,它很好地处理订阅表,其中存储订阅名称、条带计划 ID 等。

但是我想稍后当用户即将创建一个活动时检查他是否可以这样做,即他没有按照他的计划达到活动限制。

听起来我需要另一个像plan_options 这样的表来存储所有这些。我关心的是如何将它连接到这个订阅表?手动?用户订阅后,我是否必须找到他选择的订阅名称,在 plan_options 表中找到它并使用 id 连接它们?这是正确的方法吗?

【问题讨论】:

  • 您可以只拥有plan_options 表和订阅表中名为plan_id 的新字段。在访问时或用户尝试添加广告系列时 - 将他们当前的广告系列数量与计划的选项(最大)进行比较。

标签: php laravel stripe-payments laravel-cashier


【解决方案1】:

您可以将plan_options 保存到 Stripe 的订阅计划元数据中。这样一来,所有内容都集中在一个地方,无需同步。

您可以使用 API 访问元数据,如下所示。

示例请求:

\Stripe\Stripe::setApiKey("sk_test_ascfadfaeadsfadsfasdfasdfV");

\Stripe\Plan::retrieve("pro");

示例响应:

Stripe\Plan JSON: {
  "id": "pro",
  "object": "plan",
  "amount": 1000,
  "created": 1453123864,
  "currency": "usd",
  "interval": "month",
  "interval_count": 1,
  "livemode": false,
  "metadata": {
    "campaigns_limit": "40",
    "emails_limit": "200"
  },
  "name": "Pro Plan",
  "statement_descriptor": null,
  "trial_period_days": 30
}

有了许多订阅计划,集中的信息将消除许多复杂性。

PS:响应在 JSON 中包含字符串而不是数字/整数。

【讨论】:

  • 每次你想检查元数据时都会调用stripe api,还是存储在laravel数据库中?
  • 如果您不想频繁调用 Stripe API,您可以在某处缓存这些数据。存在权衡,将此信息存储在付款计划的元数据中,将所有相关信息保存在一个地方(一个事实来源)。数据不同步的可能性很小。
猜你喜欢
  • 2016-04-06
  • 2017-04-09
  • 2015-12-19
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
相关资源
最近更新 更多