web-dev-qa-db-ja.com

このPaymentMethodは、以前は顧客に接続されずに使用されたか、顧客から切り離されていたため、再度使用することはできません

ここで奇妙な問題があります。ドキュメントに従って、PaymentMethodを既存の顧客に添付していますが、機能しません。おおよそ、私は:

  1. 顧客を作成する
  2. 顧客との支払い意図を作成する
  3. 支払い目的でカード要素を作成する
  4. 顧客はカード情報を入力します
  5. 支払いが成功したことを確認し、インテントをバックエンドに送り返しました
  6. インテントが成功し、顧客がカードを保存することを選択した場合は、インテントメソッドと顧客で支払い方法を作成します
  7. エラーが出る

コード:

  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. ユーザー:カード情報を入力
  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. エラー: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

おそらくステップ4の処理方法です。ここでは、何をする必要があるかを示します。 https://stripe.com/docs/payments/save-after-payment

0
floatingLomas