djekl
7/30/2014 - 8:06 PM

Laravel Cashier Free Subscription w/o Credit Card Filter

Laravel Cashier Free Subscription w/o Credit Card Filter

<?php

Route::filter('stripe.plans.free', function() {
    if (Auth::guest() || Auth::user()->subscribed()) {
        return;
    }

    $user = Auth::user();

    $chosenPlan = 'free';
    $creditCardToken = null;
    $additionalUserInformation = [
        'plan' => $chosenPlan,
        'email' => $user->email,
        'metadata' => [
            'user_id' => $user->id,
            'username' => $user->username,
            'username_slug' => $user->username_slug,
        ],
    ];

    $customer = $user->subscription()->createStripeCustomer($creditCardToken, $additionalUserInformation);

    $subscriptions = Collection::make($customer->subscriptions->data);
    $subscription = $subscriptions->last();

    $user->stripe_active = true;
    $user->stripe_id = $customer->id;
    $user->stripe_subscription = $subscription->id;
    $user->stripe_plan = $chosenPlan;

    $user->save();
});