Stripe / Laravel "У этого клиента нет подключенного источника платежа или способа оплаты по умолчанию." - PullRequest
0 голосов
/ 30 января 2020

Здесь есть несколько человек, у которых была такая же проблема, за исключением всех сообщений, которые я мог найти здесь относительно этой проблемы с Stripe API, из устаревшей версии Stripe, и код, кажется, полностью изменился, поэтому их метод оплаты не работает для меня. У меня есть почти слово в слово код непосредственно из документации кассира Laravel.

В настоящее время он выглядит так на стороне клиента;

    <script src="https://js.stripe.com/v3/"></script>
    <script>
        window.addEventListener('load', function() {
            const stripe = Stripe('mystripekey');

            const elements = stripe.elements();
            const cardElement = elements.create('card');

            cardElement.mount('#card-element');

            const cardHolderName = document.getElementById('card-holder-name');
            const cardButton = document.getElementById('card-button');
            const clientSecret = cardButton.dataset.secret;

            cardButton.addEventListener('click', async (e) => {
                const { setupIntent, error } = await stripe.confirmCardSetup(
                    clientSecret, {
                        payment_method: {
                            card: cardElement,
                            billing_details: { name: cardHolderName.value }
                        }
                    }
                );
                if (error) {
                    // Display "error.message" to the user...
                } else {
                    alert("it works");
                    $("#paymentForm").submit();
                }
            });
        });
    </script>
@endsection

@section('content')
    <div class="mt-5 border border-secondary rounded container w-25">
        <h3 class="mt-3 text-left font-weight-bold">Upgrade Account</h3>
        {!! Form::open(['action' => 'PaymentController@paymentLeadUser', 'method' => 'POST', 'id' => 'paymentForm']) !!}
            @csrf
                <input value="user_premium" type="hidden">
                <label for="card-holder-name">Card Holder Name:</label>
                <input id="card-holder-name" class="w-100 mb-3" name="card-holder-name" type="text">
                <!-- Stripe Elements Placeholder -->
                <div id="card-element" class="form-control"></div>

                <button id="card-button" class="my-4 btn btn-primary"data-secret="{{ $intent->client_secret }}">
                    Upgrade to Premium
                </button>
        {!! Form::close() !!}
    </div>
@endsection

Мой контроллер имеет этот код

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Auth;

class PaymentController extends Controller
{
    public function __construct() {
        $this->middleware('auth');
    }

    public function paymentPage() {
        $user = Auth::user();
        $data = [

            'intent' => $user->createSetupIntent()

        ];

        return view('payment')->with($data);
    }

    public function paymentLeadUser(Request $request) {
        $user = auth()->user();
        $paymentMethod = $request->payment_method;

        $user->newSubscription('default', 'plan_id')->create($paymentMethod);

        return redirect('/userlanding')->with('success', 'User has subscribed successfully!');
    }
}

Я не знаю, почему это не работает, оно должно быть успешным, но по некоторым причинам это не так ...

Любая помощь будет принята с благодарностью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...