Zeigen Sie den Betrag von 0,00 für Stripe an.
<p>Ich verwende Stripe, bei dem Benutzer mit einer Zahlung verschiedene kostenpflichtige Pläne abonnieren. Die Zahlung wurde erfolgreich durchgeführt, das Hauptproblem besteht jedoch darin, dass während des 3D Secure-Zahlungsvorgangs (wir sind in Europa tätig, der 3D Secure-Zahlungscheck ist obligatorisch) der dem Benutzer angezeigte Betrag 0,00 beträgt. Das ist nicht nur falsch, sondern, was noch wichtiger ist, es ist für die Person, die die Zahlung leisten möchte, verwirrend.</p>
<pre class="brush:php;toolbar:false;">Public Function Purchase(Request $request, Plan $plan)
{
$user = $request->user();
$ paymentMethod = $request->input(' payment_method');
$encryptedSystemId = $request->input('system_id');
$encryptedBoxId = $request->input('box_id');
// Entschlüsseln Sie die verschlüsselten IDs
$systemId = Crypt::decrypt($encryptedSystemId);
$boxId = Crypt::decrypt($encryptedBoxId);
// Validieren Sie die IDs und Benutzerautorisierung
$system = System::findOrFail($systemId);
$box = Box::findOrFail($boxId);
$total = $plan->price;
versuchen {
$user->createOrGetStripeCustomer();
$user->updateDefaultPaymentMethod($ paymentMethod);
$user->charge($total * 100, $ paymentMethod, [
'Metadaten' =>
['system_id' => $systemId,
'box_id' => $boxId,
'tenant_id '=> $user->tenant->id,
]
]); // * 100, weil Stripe mit Cent handelt
} Catch (Ausnahme $Exception) {
return back()->with('error', 'Fehler bei der Zahlungsverarbeitung: ' . $Exception->getMessage());
}
<script src="https://js.stripe.com/v3/"></script>
<script>
let stripe = Stripe("{{ env('STRIPE_KEY') }}")
let elements = stripe.elements()
let style = {
Basis: {
Farbe: '#32325d',
Schriftfamilie: „Helvetica Neue“, Helvetica, serifenlos,
FontSmoothing: 'antialiased',
Schriftgröße: '16px',
'::placeholder': {
Farbe: '#aab7c4'
}
},
ungültig: {
Farbe: '#fa755a',
iconColor: '#fa755a'
}
}
let card = elements.create('card', {
Stil: Stil
})
card.mount('#card-element')
let paymentMethod = null
$('.card-form').on('submit', function(e) {
$('#pay-btn').attr('disabled', true)
if (zahlungsmethode) {
Rückkehr wahr
}
stripe.confirmCardSetup(
"{{ $intent->client_secret }}", {
Bezahlverfahren: {
Karte: Karte,
Rechnungsdetails: {
Name: $('.card_holder_name').val()
}
}
}
).then(function(result) {
if (result.error) {
toastr.error(
'__("Vermietung.Die von Ihnen eingegebenen Daten enthalten Fehler! Überprüfen
es und versuchen Sie es erneut")')
$('#pay-btn').removeAttr('disabled')
}anders {
paymentMethod = result.setupIntent. payment_method
$('.zahlungsmethode').val(zahlungsmethode)
$('.card-form').submit()
$('span.icon').removeAttr('hidden');
$('#pay-btn').attr('disabled', true)
}
})
falsch zurückgeben
})
<div class="tab-content mt-4 " id="card-tab" style="display:none">
<form method="POST" action="{{ route('rentals.purchase', $plan) }}"
class="card-form mt-3 mb-3">
@csrf
<input type="hidden" name="zahlungsmethode" class="zahlungsmethode">
<input type="hidden" name="system_id" value="{{ encrypt($system->id) }}">
<input type="hidden" name="box_id" value="{{ encrypt($box->id) }}">
<div class="mb-4">
<input class="StripeElement form-input px-4 py-3 abgerundet-lg w-full"
name="card_holder_name" placeholder="{{ __('rental.Cardholder
Name') }}">
</div>
<div>
<div id="card-element"></div>
</div>
<div id="card-errors" role="alert"></div>
<div class="mt-3 text-center">
<button type="submit" class="bg-red-500 text-white font-bold py-2 px-4 abgerundet" id="pay-btn">{{ __('rental.Pay') } } {{ $plan->price }} € <span class="icon" versteckt><i class="fas fa-sync fa-spin"></i></span></button>
</div>
</form>
</div>
und das, wenn ich debugge
#_originalValues: array:39 [▼
"id" => „pi_3NZqdIC6ZwDjQHNX1R7KJLoO“
"Objekt" => „Zahlungsabsicht“
"Betrag" => 100
"amount_capturable" => 0
"amount_details" => array:1 [▼
"tip" => []
]
"amount_received" => 100</pre>
<p><br /></p>