Как использовать пакет кассира в laravel 5.2?

Я создаю план подписки пользователя, для этого я использую пакет кассира в laravel 5.2. Я следую точному пути, указанному в руководстве, приведенном в документе laravel https://laravel.com/docs/5.2/billing. Но я получаю ошибку

ErrorException in FacebookScraperController.php line 1767: 
Undefined variable: creditCardToken

мой код контроллера:

$user = User::find(2);
$res = $user->newSubscription('main', 'monthly')->create($creditCardToken);
dd($res);

Что я должен передать значение внутри переменной $creditCardToken. Я попытался указать данные карты внутри этой переменной. Но получаю ошибку. Пожалуйста, помогите мне.


person Elsie Hamilton    schedule 02.09.2016    source источник


Ответы (1)


Вам нужно будет передать план подписки здесь с токеном, сгенерированным во время ввода карты. Вот шаг, которому вы можете следовать. создать страницу просмотра:

<form action="/subscription" method="POST" id="payment-form">
    <span class="payment-errors"></span>

    <div class="form-row">
        <label>
            <span>Card Number</span>
            <input type="text" size="20" data-stripe="number">
        </label>
    </div>

    <div class="form-row">
        <label>
            <span>Expiration (MM/YY)</span>
            <input type="text" size="2" data-stripe="exp_month">
        </label>
        <span> / </span>
        <input type="text" size="2" data-stripe="exp_year">
    </div>

    <div class="form-row">
        <label>
            <span>CVC</span>
            <input type="text" size="4" data-stripe="cvc">
        </label>
    </div>


    <input type="submit" class="submit" value="Submit Payment">
</form>
<script src="//code.jquery.com/jquery-1.9.1.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script type="text/javascript">
    Stripe.setPublishableKey('pk_test_TSGgkchoa9iQU4ZQ628a8Auz');
</script>
<script>
    $(function() {
        var $form = $('#payment-form');
        $form.submit(function(event) {
            // Disable the submit button to prevent repeated clicks:
            $form.find('.submit').prop('disabled', true);

            // Request a token from Stripe:
            Stripe.card.createToken($form, stripeResponseHandler);

            // Prevent the form from being submitted:
            return false;
        });
    });
    function stripeResponseHandler(status, response) {
        // Grab the form:
        var $form = $('#payment-form');

        if (response.error) { // Problem!

            // Show the errors on the form:
            $form.find('.payment-errors').text(response.error.message);
            $form.find('.submit').prop('disabled', false); // Re-enable submission

        } else { // Token was created!

            // Get the token ID:
            var token = response.id;

            // Insert the token ID into the form so it gets submitted to the server:
            $form.append($('<input type="hidden" name="stripeToken">').val(token));

            // Submit the form:
            $form.get(0).submit();
        }
    };
</script>

и в вашем контроллере:

public function subscription(Request $request)
    {
        $user = User::find(1);
        $creditCardToken = $request->stripeToken;
        $res = $user->newSubscription('main', 'pro')
            ->trialDays(30)
            ->create($creditCardToken, [
            'plan' => 'pro',
            'email' => $user->email,

        ]);

    }
person Aman Kumar    schedule 02.09.2016