Maison  >  Questions et réponses  >  le corps du texte

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 }} &euro; <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>
P粉237125700P粉237125700420 Il y a quelques jours497

répondre à tous(1)je répondrai

  • P粉403549616

    P粉4035496162023-08-01 11:45:55

    Sur la base du code que vous avez fourni, vous utilisez SetupIntents pour collecter les détails du mode de paiement. Les SetupIntents sont utilisés pour collecter les détails du mode de paiement pour une utilisation future : https://stripe.com/docs/payments/save-and-reuse. Attendez-vous à ce que le montant soit de 0,00 si un 3DS est requis, car aucun montant ne sera débité sur la carte lorsque vous récupérerez votre mode de paiement.

    Si vous utilisez la fonction d'abonnement, vous devez suivre ce guide : https://stripe.com/docs/billing/subscriptions/build-subscriptions?ui=elements pour collecter et enregistrer le mode de paiement lors d'un paiement.

    Si vous utilisez des paiements uniques, vous pouvez collecter et enregistrer les détails du mode de paiement en même temps que vous effectuez le paiement : https://stripe.com/docs/payments/save-during-payment.

    répondre
    0
  • Annulerrépondre