Я изо всех сил пытаюсь получить интеграцию Laravel Cashier Strip для работы с картами безопасности 3D. У меня есть go, он настроен, поэтому подписка работает и отображается на моей панели инструментов полосы и все, что попадает в мою локальную базу данных. Но когда я тестирую карты, требующие строгой аутентификации, как 3ds, они получают статус незавершенного на моей панели инструментов.
Я получаю страницу ответа cashier.payment в журнале консоли. но разве Кассир не должен перенаправлять в это окно подтверждения?
Мой код выглядит следующим образом
В моем контроллере подписки у меня есть
public function index() {
$data = [
'intent' => auth()->user()->createSetupIntent(),
// 'plans' => $available_plans
];
return view('artists.subscription')->with($data);
}
public function checkout(Request $request) {
$user = auth()->user();
$paymentMethod = $request->payment_method;
$planId = 'monthly_sub';
// SCA
try {
$subscription = $user->newSubscription('monthly', $planId)->create($paymentMethod);
} catch (IncompletePayment $exception) {
return redirect()->route(
'cashier.payment',
[$exception->payment->id, 'redirect' => route('front')]
);
}
// return response(['status' => 'Success']);
}
и в моей полосе js файл У меня есть этот
const stripe = Stripe('stripe_key'); // i have my test key here
const elements = stripe.elements();
const cardElement = elements.create('card',{hidePostalCode: true});
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 }
}
}
);
axios.post('checkout', {
payment_method: setupIntent.payment_method
}).then(response => {
console.log(response.request.responseURL)
})
.catch(error => {
console.log(error.response)
});
});
Мой вид лезвия -
@extends('layouts.app')
@section('head')
@php
// dd($intent);
@endphp
<script src="https://js.stripe.com/v3/"></script>
<link href="{{ asset('css/stripe.css') }}" rel="stylesheet">
@endsection
@section('content')
<input id="card-holder-name" type="text">
<!-- Stripe Elements Placeholder -->
<div id="card-element"></div>
<button id="card-button" data-secret="{{ $intent->client_secret }}">
subscribe
</button>
@endsection
@section('js')
<script src="{{ asset('js/stripe.js') }}" type="text/javascript"></script>
@endsection
Кажется, все работает, но я просто получаю страницу подтверждения 3ds в качестве ответа в моей консоли. Как мне заставить laravel перенаправить и открыть эту страницу для пользователя?