【问题标题】:Laravel - Stripe Subscription based on Quantity / variable subscription amountLaravel - 基于数量/可变订阅量的条带订阅
【发布时间】:2016-06-23 19:49:09
【问题描述】:

我在一个 Laravel 项目中实现了 Stripe。我想每月向客户收费,但他们每个人都必须支付不同的金额。我通过另一个系统分别向他们发送发票,他们必须在我的网站上输入发票编号、金额和付款。

现在要向客户收取可变金额,我在这里遇到了一个解决方案:https://support.stripe.com/questions/how-can-i-create-plans-that-dont-have-a-fixed-price

我有一个表格,客户可以在其中输入他的发票号码、其他详细信息和他想要支付的金额。现在我如何以条带形式使用这些信息并创建这样的条带客户?我无法让它工作。

【问题讨论】:

    标签: php laravel laravel-4 stripe-payments laravel-cashier


    【解决方案1】:

    我认为处理可变订阅量的最佳方法是在条带上创建一个基本计划,例如 freePlan 并为其分配 1 的数量。

    因此,如果您想处理可变的订阅量“这就是您的情况” 您将订阅此freePlan,然后通过您的订阅数量(金额)增加该金额1

    例如,您想分别向 2 位用户收取 10 美元和 15 美元的费用。你会

    // Let get first user
    $user = User::find(1);
    
    // subscribe to free plan which has an amount of one(1)
    // and increment the quantity by 10 so in this case he/she will pay 
    // $10 every month
    $user->subscription('freePlan')->incrementQuantity(10); 
    
    // Lets do same for user 2 
    $user = User::find(2);
    
    // subscribe to free plan which has an amount of one(1)
    // and increment the quantity by 15 so in this case he/she will pay 
    // $15 every month
    $user->subscription('freePlan')->incrementQuantity(15); 
    

    或者您可以选择使用已创建的计划示例basicPlanbusinessPlan 并增加或减少数量

    // Let say basicPlan is $30 so increasing it by 5 will be 150
    $user->subscription('basicPlan')->incrementQuantity(15); 
    

    此链接指向如何设置数量https://stripe.com/docs/subscriptions/guide#setting-quantities

    这是有关如何增加或减少数量的 laravel 的链接点 https://laravel.com/docs/5.2/billing#subscription-quantity

    【讨论】:

    • 在免费计划中更改数量无济于事:任何数量的零乘以仍然等于零!您需要将计划的金额设置为 1 美元或 0.01 美元之类的基值,才能使用该数量“技巧”。
    • 当然我猜你是对的。但它对你有用吗?
    • 我以 1 美元的价格创建了一个计划,按照您的方法将数量增加了 5。我做了$user->subscription('planName')->create($token),然后是$user->subscription()->increment(5);(我使用的是 Laravel 4)。现在它正在增加数量,但问题是,它只对当月的订阅收取 1 美元,之后确实会增加,并将其显示为下个月的到期金额。因此,在这种情况下,收取 1 美元,本月应支付 4 美元(5-1),因此下个月的到期金额为 9 美元。请参阅此屏幕截图以获取条纹发票:awesomescreenshot.com/0515p4on58
    【解决方案2】:

    听起来您只是想按给定的金额向客户收取费用。您不需要为此使用 Stripe 的计划或订阅,您只需 create a charge

    如果您想一次性收集客户的卡详细信息并能够重复向他们收费而无需再次要求他们提供他们的卡详细信息,您应该首先使用卡令牌create a customer,然后与客户创建一个收费customer 参数中的 ID。

    你应该看看这个教程:https://stripe.com/docs/charges#saving-credit-card-details-for-later

    【讨论】:

    • 如果我先创建客户,然后向他收取金额,一个月后会发生什么?一个月后我必须手动向他收费吗?我希望每月向客户收取他们输入的金额。它就像每月订阅计划一样,只是客户必须输入他们想要支付的金额。所以基本上是可变金额的月度订阅计划。
    • 所以您希望客户选择一次金额,然后按该金额计费,直到取消订阅,对吗?如果是这样,最简单的方法是为每个客户创建一个计划并订阅他们的特定计划。如果您可以确认这是您的用例,我可以用更具体的信息更新我的答案。
    • 是的,这就是我要找的。每位客户将每月按他选择的金额计费,直到他取消订阅。
    【解决方案3】:

    好的,所以我已经解决了这个问题。我所做的不是使用 Stripe 的QuantityQuantityIncrement(),而是为每个客户创建一个单独的计划。

    现在 Laravel Cashier 不允许我们以编程方式创建条带计划。但是,this solution 帮助我做到了这一点。虽然我不得不做一些改变才能让它在 Laravel 中工作,但在玩了之后我终于得到了这个工作。

    【讨论】:

      猜你喜欢
      • 2018-09-20
      • 1970-01-01
      • 2015-01-08
      • 2016-12-17
      • 2015-02-20
      • 2015-11-08
      • 2018-11-29
      • 2017-09-19
      • 1970-01-01
      相关资源
      最近更新 更多