Как обновить метод оплаты по умолчанию в Stripe? - PullRequest
0 голосов
/ 01 июля 2019

Предположим, что мы создали способ оплаты - pm_xxx.Когда мы создаем клиента, мы можем прикрепить этот метод в качестве способа оплаты по умолчанию к клиенту через код Java:

CustomerCreateParams.Builder customerCreateParamsBuilder = CustomerCreateParams.builder()
                    .setEmail(email)
                    .setPaymentMethod('pm_xxx');       
Customer.create(customerCreateParamsBuilder.build());

К сожалению, соответствующий API для обновления клиента недоступен.Итак, вопрос в том, какой предпочтительный способ обновить метод оплаты по умолчанию для клиента в Stripe?

РЕДАКТИРОВАТЬ: на основе ответа @karllekko, потому что Мой вариант использования - это повторяющиеся платежи, поэтому я объединяю 2 действия: присоединить клиента к способу оплаты:

paymentMethod.attach(PaymentMethodAttachParams.builder().setCustomer(customer.getId()).build());            

и сделать способ оплаты по умолчанию для счета клиента:

customer.update(CustomerUpdateParams.builder().setInvoiceSettings(CustomerUpdateParams.InvoiceSettings.builder().setDefaultPaymentMethod(token).build()).build());

1 Ответ

3 голосов
/ 01 июля 2019

Важно отметить, что в API PaymentMethods отсутствует концепция по умолчанию PaymentMethod на уровне клиента. (0) При совершении одноразового платежа против сохраненного клиента идентификатор клиента и выбранного PaymentMethod должен быть предоставлен при вызове API для создания PaymentIntent для этого платежа. (1)

Установка payment_method при создании клиента (как в вашем примере Java-кода) - это удобная функция, которая присоединяет PaymentMethod к клиенту во время его создания. Нет эквивалента для обновления клиента - вместо этого вы просто сохраните для него PaymentMethod, либо как часть платежа (save_payment_method при использовании PaymentIntent), либо с помощью конечной точки присоединения / v1 / payment_methods: (2)

PaymentMethod pm = PaymentMethod.retrieve("pm_1ErMlwJoUivz182DfXf7OlWQ");
pm.attach(PaymentMethodAttachParams.builder().setCustomer(cus.getId()).build());

(0) - есть исключение для повторяющихся платежей с использованием Stripe Billing - здесь вы должны установить либо настройки счета Клиента, либо default_payment_method конкретной подписки.

(1) - https://stripe.com/docs/payments/payment-intents/off-session#create-payment-intent

(2) - https://stripe.com/docs/payments/payment-methods/saving

...