Я создаю намерение установки и получаю от него идентификатор способа оплаты. Затем я создаю клиента, используя следующий код
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
прилагается, и вы можете перечислить их для клиента . Затем вам необходимо явно указать 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.):
Да, это нужно будет сначала прикрепить, а затем вы сможете запустить обновление клиента. Как вы нашли в своем другом ответе, вы также можете установить это во время создания клиента: stripe.com/docs/api/customers/…
Вдохновленный ответом @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]
}
})
Рад, что вы разобрались!
Какие данные вы передаете для
payment_method
?