Уже два дня я пытаюсь осуществить полосовую оплату кредитной картой с подпиской на мое приложение laravel. Я работал с документацией laravel, но не смог получить "paymentMethod" в моей переменной $ request. Так что проблема в том, что html, который я добавляю через мой js, не отправляется. Чтобы вы лучше поняли мою проблему, я опубликую свой код.
HTML
<script src="https://js.stripe.com/v3/"></script>
const stripe = Stripe('{{ env("STRIPE_KEY") }}');
const elements = stripe.elements();
const cardElement = elements.create('card');
cardElement.mount('#card-element');
const cardHolderName = document.getElementById('name');
const cardButton = document.getElementById('card-button');
const clientSecret = cardButton.dataset.secret;
const cardError = document.getElementById('card-errors');
cardElement.addEventListener('change', function(event) {
if (event.error) {
cardError.textContent = event.error.message;
} else {
cardError.textContent = '';
}
});
var form = document.getElementById('subscription-form');
form.addEventListener('submit', async (e) => {
e.preventDefault();
const { setupIntent, error } = await stripe.handleCardSetup(
clientSecret, cardElement, {
payment_method_data: {
billing_details: { name: cardHolderName.value }
}
}
);
if (error) {
// Display "error.message" to the user...
console.log(error.message);
} else {
// The card has been verified successfully...
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'payment_method');
hiddenInput.setAttribute('value', setupIntent.payment_method);
form.appendChild(hiddenInput);
// Submit the form
form.submit();
}
});
<div class="container">
<div class="row">
@include('partials.settings-nav')
<div class="col-lg-9 mt-1 mb-4">
<form id="payment-form" action="{{ url('settings/card') }}" method="post" >
@csrf
<input id="card-holder-name" class="form-control" type="text">
<!-- Stripe Elements Placeholder -->
<div id="card-element" class="creditcard"></div>
<button type="submit" id="card-button" data-secret="{{ $intent->client_secret }}">
Kreditkarte hinzufügen
</button>
</form>
</div>
</div>
</div>
Мой контроллер
$paymentMethod = $request->paymentMethod;
auth()->user()->newSubscription('default', 'small')->create($paymentMethod);
return back();
Я надеюсь, что кто-то может помочь мне здесь.
Лучший