如何判断Stripe客户的默认支付方式是银行卡还是银行账户?
判断Stripe客户默认支付方式是银行卡还是银行账户
核心解决方案:用invoice_settings.default_payment_method字段(官方推荐)
Stripe的客户对象里,invoice_settings.default_payment_method是统一记录默认支付方式的字段,不管是银行卡还是银行账户都能识别。你只需要在API调用时扩展这个字段,就能从返回结果里拿到支付方式类型:
- 调整你的curl调用,加入扩展参数:
curl https://api.stripe.com/v1/customers/cus_Ia2m9sl1Na1j1E \ -u sk_test_51Hx2pbGbd..: \ -d expand[]=invoice_settings.default_payment_method
- 查看返回的
invoice_settings.default_payment_method对象:- 若支付方式是银行卡,
type属性值为card - 若支付方式是银行账户,
type属性值为对应类型(比如美国银行账户是us_bank_account,欧盟SEPA账户是sepa_debit)
- 若支付方式是银行卡,
替代方案:基于现有调用的补充判断
如果不想修改现有调用参数,也可以用你当前扩展的sources字段来判断:
- 当
default_source不为null时,该对象的object属性值为card,说明是银行卡 - 当
default_source为null时,遍历sources.data数组,找object属性为bank_account的条目——这类就是客户设置的默认银行账户(因为银行账户不会出现在default_source里)
为什么之前的default_source不好用?
因为Stripe的source体系主要针对银行卡,银行账户属于新的payment_method体系,所以default_source不会返回银行账户信息,改用invoice_settings.default_payment_method才能覆盖所有支付方式类型。
内容的提问来源于stack exchange,提问作者Ramzizi
相关产品推荐
相关产品推荐

