在 Java 中,如何判断 Stripe 中的卡是否是默认支付选项?例如:
for ( ExternalAccount source : customer.getSources().getData() ){
Card card = (Card) source;
if ( card.???? // how do I know if it's the default payment option
}
或者,我可以查询默认付款来源吗?
我问的原因是因为我想向客户显示卡的最后 4 位数字,以向他们显示哪个支付选项是他们当前的默认支付选项。但是,如果有多张卡,我怎么知道?
您可以通过比较 fingerprint
属性来查看您是否已经存档了卡片。 它将永远是一样的。
您还可以通过使用 Customer 对象上的 getDefaultSourceObject()
方法直接获取默认付款源。
https://github.com/stripe/stripe-java/blob/master/src/main/java/com/stripe/model/Customer.java#L92
换句话说,将您拥有的fingerprint
与默认源的fingerprint
进行比较,您将获得答案。
希望对您有所帮助!
从我现在能知道的(查看文档等(来看,不可能通过检查卡来判断它是否是默认的支付来源。但是我错过了客户的选项,该选项可让您直接检索默认付款选项(如果有的话(,例如
ExternalAccount defaultSource = customer.getDefaultSourceObject();
Card defaultCard = (Card) defaultSource; // if it's a card
使用最新的 Stripe SDK,我无法使用 customer.getDefaultSourceObject()
.这是对我有用的代码
String defaultSource = customer.getDefaultSource();
if (defaultSource != null) {
List<ExternalAccount> sources = customer.getSources().getData();
for (ExternalAccount source: sources) {
if (source instanceof Card && source.getId().equals(defaultSource)) {
Card card = (Card)source;
LOG.info("Last-4=" + card.getLast4()...);
return card;
}
}
}