web-dev-qa-db-fra.com

Cette méthode de paiement était auparavant utilisée sans être liée à un client ou a été détachée d'un client, et ne peut plus être utilisée

J'ai un problème étrange ici. Suite à la documentation, j'attache le PaymentMethod à un client existant, mais cela ne fonctionne pas. En gros, je:

  1. créer un client
  2. créer une intention de paiement avec le client
  3. créer un élément de carte avec l'intention de paiement
  4. le client entre les informations de sa carte
  5. confirmer que le paiement a réussi et renvoyer l'intention au backend
  6. si l'intention a réussi et que le client a choisi d'enregistrer sa carte, créez le mode de paiement avec le mode d'intention et le client
  7. obtenir une erreur

Le code:

  1. python: stripe.Customer.create(email=user.email, name=user.full_name)
  2. python: stripe.PaymentIntent.create(amount=amount, currency="aud", customer=user.stripe_customer_id)
  3. js: Stripe('{{ stripe_publishable_key }}').elements().create("card");
  4. utilisateur: entre les informations de la carte
  5. js: stripe.confirmCardPayment('{{ clientSecret }}', { payment_method: { card: card, billing_details: { // name: 'Jenny Rosen' }, } }).then(function (result) { if (result.error) { // Show error to your customer (e.g., insufficient funds) console.log(result.error.message); var displayError = document.getElementById('card-errors'); displayError.textContent = result.error.message; } else { // The payment has been processed! if (result.paymentIntent.status === 'succeeded') { // Show a success message to your customer // There's a risk of the customer closing the window before callback // execution. Set up a webhook or plugin to listen for the // payment_intent.succeeded event that handles any business critical // post-payment actions. $('#fake-submit').click(); } } });
  6. python: stripe.PaymentMethod.attach(stripe.PaymentIntent.retrieve(intent_id).payment_method, customer=user.stripe_customer_id)
  7. erreur: Request req_request_id: This PaymentMethod was previously used without being attached to a Customer or was detached from a Customer, and may not be used again.
5
Josheee

C'est probablement la façon dont vous gérez l'étape 4. Voici ce que vous devez faire: https://stripe.com/docs/payments/save-after-payment

0
floatingLomas