StripeCheckout не определена ошибка - PullRequest
0 голосов
/ 26 мая 2018

Я использую полосу, но с пользовательскими полями формы для пользователя введите номер кредитной карты, дату карты, чтобы зарядить карту.

Но при нажатии кнопки «Подтвердить» появляется ошибка:

Must provide source or customer.

Эта ошибка может появляться, потому что на консоли появляется:

"Uncaught ReferenceError: StripeCheckout is not defined"

СStripe.setPublishableKey({{config('services.stripe.key')}}); "перед кодом JavaScript появляется:

jquery.min.js:2 Uncaught ReferenceError: pk_test_.... is not defined
        at HTMLDocument.<anonymous>

Знаете ли вы, как исправить проблему?

RegistrationControllercharge ():

public function charge(Request $request)
{
    Stripe::setApiKey(config('services.stripe.secret'));
    $source = $request->stripeToken;
    dd($source); //shows null
    Charge::create([
        'currency' => 'eur',
        'amount' => 1000,
        'source' => $source,
    ]);
}

Маршрут:

Route::post('/charge', [
    'uses' => 'RegistrationController@charge',
    'as'   => 'registration.charge'
]);

Форма:

<form action="{{ route('registration.charge') }}" method="post" id="paymentForm">
    {{csrf_field()}}
    <input type="hidden" name="stripeToken" id="stripeToken"/>
    <div class="form-group font-size-sm">
        <label class="text-gray">Card Number</label>
        <input type="text" required class="form-control">
    </div>

    <div class="form-row">
        <div class="form-group col-lg-6 font-size-sm">
            <label class="text-gray">Date</label>
            <input type="text" required class="form-control"/>
        </div>

        <div class="form-group font-size-sm col-lg-6">
            <label class="text-gray">CVC</label>
            <input type="text" required class="form-control">
        </div>
    </div>
    <input type="submit" href="" id="confirmPayment"
     class="btn btn-primary" value="Confirm"/>
</form>

Тогда у меня есть javascript для интеграции полосы:

<script src="https://js.stripe.com/v3/"></script>
<script>
    let stripe = StripeCheckout.configure({
        key: "{{config('services.stripe.key')}}",
        image: "/square-image.png",
        locale: "auto",
        token: function(token){
            document.querySelector('#stripeToken').value = token.id;
            document.querySelector('#paymentForm').submit();
        }
    });

    document.getElementById('#confirmPayment').addEventListener('click', function(e){
        stripe.open({
            amount: 1000
        });
        e.preventDefault();
    });
</script>

Если я передам ключ напрямую, как:

var stripe = Stripe ({{config ('pk _....')}});

Показывает:

jquery.min.js:2 Uncaught Error: Invalid value for Stripe(): apiKey should be a string. You specified: undefined.
...