Zeigen Sie den Betrag von 0,00 für Stripe an.
P粉237125700
2023-07-31 14:36:38
<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>
根据您提供的代码,您正在使用SetupIntents来收集付款方式的详细信息。SetupIntents用于收集用于将来使用的付款方式详细信息:https://stripe.com/docs/payments/save-and-reuse。预计如果需要3DS,则金额为0.00,因为您在收集付款方式时不会对卡片收取任何金额。
如果您正在使用订阅功能,您应该按照此指南进行操作:https://stripe.com/docs/billing/subscriptions/build-subscriptions?ui=elements,在付款时收集和保存付款方式。
如果您正在使用一次性付款,则可以在付款同时收集和保存付款方式的详细信息:https://stripe.com/docs/payments/save-during-payment。