Hallo,
ich versuche schon seit Tagen Stripe als Zahlungsabwickler in meine Laravel App zu implementieren, jedoch ohne Erfolg. Mein Hauptproblem ist das mein submit event, soweit ich das feststellen kann nicht funktioniert, da mein console.log() nie ausgeführt wird bzw meinem Formular die "payment_methode" nie hinzugefügt wird. Nachfolgend mein Javascript und HTML code, damit ihr mir vielleicht helfen könnt.
<script src="https://js.stripe.com/v3/"></script>
<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();
}
});
Alles anzeigen
Normalerweise müsste mir Stripe, nachdem die Kartennummer verschickt wurde, eine Zahlungsmethode zurück geben, die ich dann über ein hidden input in mein Formular einfüge und an meinen Controller sende, um die subscription abzuschließen. Vielleicht hier noch mein Formular.
<form id="subscription-form" action="{{ url('/settings/subscription') }}" method="post" >
@csrf
<input id="card-holder-name" type="text">
<!-- Stripe Elements Placeholder -->
<div id="card-element"></div>
<button id="card-button" data-secret="{{ $intent->client_secret }}">
Update Payment Method
</button>
</form>
Alles anzeigen
Ich würde es wirklich sehr schätzen, wenn mir bei diesem Problem jemand helfen könnte, da ich schon seit Tagen versuche es zu lösen. Sollten noch Information gebraucht werden, bitte Bescheid geben.
MfG