Affichez le montant de 0,00 sur Stripe.
<p>J'utilise Stripe où les utilisateurs s'abonnent à différents forfaits payants en un seul paiement. Le paiement est effectué avec succès, mais le principal problème est que lors du processus de paiement 3D Secure (nous opérons en Europe, le chèque de paiement 3D Secure est obligatoire), le montant affiché à l'utilisateur est de 0,00. Non seulement c’est faux, mais plus important encore, cela crée de la confusion pour la personne sur le point d’effectuer le paiement.</p>
<pre class="brush:php;toolbar:false;">achat de fonction publique (Request $request, Plan $plan)
{
$utilisateur = $requête->utilisateur();
$paymentMethod = $request->input('payment_method');
$encryptedSystemId = $request->input('system_id');
$encryptedBoxId = $request->input('box_id');
// Déchiffrez les identifiants chiffrés
$systemId = Crypt::decrypt($encryptedSystemId);
$boxId = Crypt::decrypt($encryptedBoxId);
// Valider les identifiants et l'autorisation de l'utilisateur
$system = System::findOrFail($systemId);
$box = Box::findOrFail($boxId);
$total = $plan->prix ;
essayer {
$user->createOrGetStripeCustomer();
$user->updateDefaultPaymentMethod($paymentMethod);
$utilisateur->charge($total * 100, $paymentMethod, [
'métadonnées' =>
['id_système' => $IDsystème,
'box_id' => $boxId,
'tenant_id '=> $utilisateur->tenant->id,
]
]); // * 100 car Stripe traite des centimes
} catch (Exception $exception) {
return back()->with('error', 'Erreur lors du traitement du paiement : ' . $exception->getMessage());
}
<script src="https://js.stripe.com/v3/"></script>
<script>
laissez stripe = Stripe("{{ env('STRIPE_KEY') }}")
laissez les éléments = stripe.elements()
laissez style = {
base: {
couleur : '#32325d',
fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
fontSmoothing : 'anticrénelé',
Taille de la police : '16px',
'::espace réservé' : {
couleur : '#aab7c4'
}
},
invalide: {
couleur : '#fa755a',
couleur de l'icône : '#fa755a'
}
}
let card = elements.create('card', {
style: style
})
card.mount('#card-element')
laissez paymentMethod = null
$('.card-form').on('submit', function(e) {
$('#pay-btn').attr('disabled', vrai)
si (méthode de paiement) {
retourner vrai
}
stripe.confirmCardSetup(
"{{ $intent->client_secret }}", {
mode de paiement: {
carte : carte,
Détails de la facturation: {
nom : $('.card_holder_name').val()
}
}
}
).then(fonction(résultat) {
si (résultat.erreur) {
toastr.erreur(
'__("location. Les données que vous avez saisies contiennent des erreurs ! Réviser
et réessayez")')
$('#pay-btn').removeAttr('disabled')
}autre {
paymentMethod = result.setupIntent.payment_method
$('.méthode de paiement').val(méthode de paiement)
$('.card-form').submit()
$('span.icon').removeAttr('hidden');
$('#pay-btn').attr('disabled', vrai)
}
})
retourner faux
})
<div class="tab-content mt-4 " id="card-tab" style="display:none">
<form method="POST" action="{{ route('rentals.purchase', $plan) }}"
class="formulaire de carte mt-3 mb-3">
@csrf
<input type="hidden" name="payment_method" class="payment-method">
<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 arrondi-lg w-full"
name="card_holder_name" placeholder="{{ __('rental.Cardholder
Nom') }}">
</div>
<div>
<div id="card-element"></div>
</div>
<div id="erreurs de carte" role="alerte"></div>
<div class="mt-3 text-center">
<button type="submit" class="bg-red-500 text-white font-bold py-2 px-4 arrondi" id="pay-btn">{{ __('rental.Pay') } } {{ $plan->prix }} € <span class="icône" caché><i class="fas fa-sync fa-spin"></i></span></button>
</div>
</formulaire>
</div>
et ça quand je débogue
#_originalValues : tableau : 39 [▼
"identifiant" => "pi_3NZqdIC6ZwDjQHNX1R7KJLoO"
"objet" => "intention_de paiement"
"montant" => 100
"montant_capturable" => 0
"montant_détails" => tableau : 1 [▼
"astuce" => []
]
"montant_received" => 100≪/pré>
<p><br /></p>