Stripe::Customer.create не привязывает способ оплаты к клиенту

Я создаю намерение установки и получаю от него идентификатор способа оплаты. Затем я создаю клиента, используя следующий код

customer = Stripe::Customer.create({
      email: current_user.email,
      description: "Customer for subscription",
      payment_method: params[:payment_method]
    })

Он возвращает следующий ответ

{
  "id": "cus_IZmhg4VhIwFUBI",
  "object": "customer",
  "address": null,
  "balance": 0,
  "created": 1608037176,
  "currency": null,
  "default_source": null,
  "delinquent": false,
  "description": "Customer for subscription",
  "discount": null,
  "email": "[email protected]",
  "invoice_prefix": "76BF0C5E",
  "invoice_settings": {
    "custom_fields": null,
    "default_payment_method": null,
    "footer": null
  },
  "livemode": false,
  "metadata": {
  },
  "name": null,
  "next_invoice_sequence": 1,
  "phone": null,
  "preferred_locales": [

  ],
  "shipping": null,
  "tax_exempt": "none"
}

Проблема в том, что он не привязывает способ оплаты к клиенту, когда я пытаюсь создать подписку с использованием объекта клиента, он возвращает следующую ошибку:

Stripe::InvalidRequestError (У этого клиента нет подключенного источника оплаты или метода оплаты по умолчанию.):

Но когда я смотрю в приборной панели, способ оплаты уже привязан к клиенту.

Какие данные вы передаете для payment_method?

Daniel Sindrestean 15.12.2020 14:48

Я передаю идентификатор платежа, который я получил от намерения установки. Когда я проверяю панель инструментов, платеж уже привязан к покупателю, но каким-то образом, когда я передаю идентификатор клиента в подписку, он возвращает, что у клиента нет прикрепленного платежа.

Aaqib 15.12.2020 18:49
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
2
1 791
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

payment_method прилагается, и вы можете перечислить их для клиента . Затем вам необходимо явно указать invoice_settings.default_payment_method для Заказчика, который будет использоваться для создания подписки.

Тоже не работает. Когда я указываю способ оплаты для клиентов, он появляется, но по-прежнему возникает та же ошибка после явной установки invoice_settings.default_payment_method... Stripe::InvalidRequestError (The customer does not have a payment method with the ID pm_1HyszfKNXDR22L81DER6eWTE. The payment method must be attached to the customer.):

Aaqib 16.12.2020 06:57

Да, это нужно будет сначала прикрепить, а затем вы сможете запустить обновление клиента. Как вы нашли в своем другом ответе, вы также можете установить это во время создания клиента: stripe.com/docs/api/customers/…

Nolan H 16.12.2020 15:00

Вдохновленный ответом @Nolan, я исправил проблему, передав идентификатор платежа invoice_settings.default_payment_method при создании клиента. Ниже приведен фрагмент кода:

customer = Stripe::Customer.create({
      email: current_user.email,
      description: "Customer for subscription",
      payment_method: params[:payment_method],
      invoice_settings: {
        default_payment_method: params[:payment_method] 
      } 
    })

Рад, что вы разобрались!

Nolan H 16.12.2020 14:58

Другие вопросы по теме