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

#ruby-on-rails #stripe-payments

#ruby-на-рельсах #stripe-платежи

Вопрос:

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

 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": "customer@example.com",
  "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"
}
 

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

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

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

Комментарии:

1. Какие данные вы передаете для payment_method этого ?

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

Ответ №1:

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

Комментарии:

1. Тоже не работает. Когда я перечисляю способ оплаты для клиентов, он появляется, но все равно выдает ту же ошибку после явной настройки 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.):

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

Ответ №2:

Вдохновленный ответом @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] 
      } 
    })
 

Комментарии:

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