如何更新客户默认支付方式?



假设我们已经创建了一个付款方式 - 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());

需要注意的重要一点是,在付款方式 API 上,客户级别没有默认付款方式的概念。(0) 如果对已保存的客户进行一次性付款,则在进行 API 调用以创建该付款的付款意图时,必须提供客户所选付款方式的 ID。(1)

在创建客户时设置payment_method(如示例 Java 代码)是一个方便的功能,可在创建客户时将付款方式附加到客户。更新客户没有等效项 - 相反,您只需将付款方式保存给他们,作为付款的一部分(使用付款意图时save_payment_method),或者使用附加终结点/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

PaymentMethod.attach doc page (1) 是这样说的:

使用此付款方式作为发票或订阅的默认付款方式 付款,在客户上设置 invoice_settings.默认付款方式 到付款方式的 ID。

因此,您可以使用 Customer.update API 路由 (2) 并填写invoice_settings属性。

(1) - https://stripe.com/docs/api/payment_methods/attach

(2) - https://stripe.com/docs/api/customers/update#update_customer-invoice_settings

最新更新