#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. Рад, что вы разобрались!