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