Laravel Cashier(条纹)获得订阅费用或优惠券使用?

时间:2018-01-30 09:22:29

标签: laravel-5 stripe-payments laravel-cashier

我正在使用带有Stripe的Laravel Cashier。

在我的帐户面板中,我想向用户显示他们的每月订阅费用是多少。

用户可以在没有优惠券的情况下制定正常计划,也可以使用优惠券制定相同的计划,使其价格降低一半。

无论如何,收银员可以告诉我每月订阅费用是多少,或者他们是否使用优惠券注册?或者这是我在订阅时必须存储在我自己的数据库中的东西吗?

1 个答案:

答案 0 :(得分:1)

我创建了一个可用于用户模型的优惠券特征。希望有帮助。

<?php

namespace App\Traits;

use Carbon\Carbon;

trait Coupon 
{
    public function getSubscriptions()
    {
        return $this->asStripeCustomer()->subscriptions->data;
    }

    public function getSubscription()
    {
        foreach ($this->getSubscriptions() as $subscription) {
            if ($subscription->status === 'active') {
                return $subscription;
            }
        }
    }

    public function discount()
    {
        return $this->getSubscription()->discount;
    }

    public function discountCustomerId()
    {
        return $this->discount()->customer;
    }

    public function discountSubscriptionId()
    {
        return $this->discount()->subscription;
    }

    public function discountStartDate()
    {
        return Carbon::createFromTimestamp($this->discount()->start);
    }

    public function discountEndDate()
    {
         return Carbon::createFromTimestamp($this->discount()->end);
    }

    public function discountDaysLeft()
    {
        return $this->discountEndDate()
            ->diffInDays($this->discountStartDate());
    }

    public function coupon()
    {
        return $this->discount()->coupon;
    }

    public function couponIsValid()
    {
         return $this->coupon()->valid;
    }
}