Stripe - создание подписок с клиентом с помощью PaymentMethod вместо Source (токен) - PullRequest
0 голосов
/ 20 сентября 2019

Я интегрирую полосовые подписки в наш рабочий процесс, но при создании подписки с Клиентом , созданным с paymentMethod вместо source Я получаю сообщение об ошибке This customer has no attached payment source.

Если я позвоню в браузер createToken() и прикреплю его к клиенту в поле source, оно будет работать.

Мы интегрировали единовременные платежи с использованием новых документов с SCA, которые используют createPaymentMethod(), а не createToken(), поэтому наши клиенты сохраняются с paymentMethod, а не source, как описано здесь:

https://stripe.com/docs/payments/cards/saving-cards-after-payment#save-payment-method

curl https://api.stripe.com/v1/customers \
  -u sk_test_secret_token \
  -d payment_method="{{PAYMENT_METHOD_ID}}"

Кроме того, в руководстве по миграции говорится о замене createToken() на createPaymentMethod().

In Сценарий 2: зарядкаклиенты вне сеанса для их первоначального платежа , я увидел следующее:

Чтобы создать подписку и снять с клиентов сеанс для первоначального платежа, необходимо:

1) Используйте CreatePaymentMethod для сбора платежной информации

2) Создайте клиента, используя идентификатор PaymentMethod вы создали

3) Создайте подписку

4) Настройте обработку ошибок, используя handleCardSetup для ошибок аутентификации и handleCardPayment для ошибок авторизации

Я следовал за этими шагами.Я не создаю SetupIntent (точно так же, как я не создаю его в одноразовых платежах, и он работает в этих случаях), и получаю ошибку, о которой я говорил ранее, при попытке создать подписку.

Можно ли создать подписку с клиентом с paymentMethod вместо source?

(Мы повторно используем карты, используя клиентов, созданных с помощью paymentMethod, для одноразового использованияплатежей, поэтому было бы очень важно иметь возможность повторно использовать одного и того же клиента / карту для подписок без необходимости ввода пользовательских данных в виде чередующихся элементов или чего-либо подобного, потому что это нарушило бы наш поток для повторного использования карт)

1 Ответ

1 голос
/ 20 сентября 2019

Я смог решить эту проблему, включив способ оплаты в поле default_payment_method .

Это поле описывается следующим образом:

Идентификаторспособ оплаты по умолчанию для подписки.Он должен принадлежать клиенту, связанному с подпиской.Если не установлено, то в счетах-фактурах в настройках счетов клиента будет использоваться метод оплаты по умолчанию.

Поэтому я предположил, что он будет использовать метод оплаты, связанный с клиентом, если он не определен.Кажется, этого не происходит, что сложно, поэтому мне нужно было передать его явно (это ошибка Stripe? Или создание клиента с paymentMethod не делает его методом оплаты по умолчанию в настройках счета клиента? Я свяжусь с Stripeчтобы удостовериться).

Обновление (2019-09-23)

Я связался со Stripe, спросив, была ли это ошибка, и они ответили:

[...] С учетом вышесказанного, это не будет ошибкой с нашей стороны, скорее ожидаемым поведением.

Если вы хотите использовать метод оплаты, который вы добавляете вобъект клиента, который будет использоваться в подписках или счетах, по умолчанию без указания default_payment_method при создании подписки, тогда вы захотите присоединить метод оплаты и указать параметр invoice_settings.default_payment_method при обновлении клиента.Эту информацию можно найти в нашей справке по API здесь:

https://stripe.com/docs/api/payment_methods/attach

Параметр, используемый для обновления, можно найти в самом объекте клиента, здесь:

https://stripe.com/docs/api/customers/update#update_customer-invoice_settings-default_payment_method

Это также можно указать при создании клиента, что можно увидеть здесь:

https://stripe.com/docs/api/customers/create#create_customer-invoice_settings-default_payment_method

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

...