如何判断一张卡是否是Stripe中的默认付款来源?

时间:2018-04-05 11:28:40

标签: java stripe-payments

如何判断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位数字,以向他们显示哪个付款选项是他们当前的默认值。但如果有多张卡片,我怎么知道?

3 个答案:

答案 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;
            }
        }
    }