让我们假设我们创建了一种付款方式-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());
答案 0 :(得分:3)
需要注意的重要一点是,在PaymentMethods API上,在客户级别没有默认的PaymentMethod的概念。 (0)如果对已保存的客户进行一次性付款,则在进行API调用以创建该付款的PaymentIntent时,必须提供所选PaymentMethod的客户和的ID。 (1)
在创建客户时设置payment_method
(就像您的示例Java代码一样)是一种便利功能,可在创建客户时将PaymentMethod附加到客户。没有更新客户的等效方法,而是您只需将PaymentMethod保存为他们,既可以作为付款的一部分(使用PaymentIntent时{save_payment_method
),也可以使用/ v1 /的附加端点付款方式:(2)
PaymentMethod pm = PaymentMethod.retrieve("pm_1ErMlwJoUivz182DfXf7OlWQ");
pm.attach(PaymentMethodAttachParams.builder().setCustomer(cus.getId()).build());
(0)-使用“条带化计费”的定期付款有一个例外-在这里,您可以设置客户的invoice settings或特定订阅的default_payment_method。
(1)-https://stripe.com/docs/payments/payment-intents/off-session#create-payment-intent
答案 1 :(得分:2)
PaymentMethod.attach文档页面(1)表示:
将此付款方式用作发票或订阅的默认值 付款,在客户上设置invoice_settings.default_payment_method 到PaymentMethod的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