You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断Stripe中的卡片是否为默认支付方式(Java实现)

解决Stripe默认支付卡片的判断与获取问题

嘿,刚好之前处理过类似的需求,给你两种实用的解决思路,完美匹配你要显示默认卡片后4位的需求:

1. 遍历所有卡片判断是否为默认源

Stripe的Customer对象里有个default_source属性,它存储的就是当前默认支付源的ID。你只需要把遍历到的每张卡片ID和这个值对比就行,修改你的代码如下:

for (ExternalAccount source : customer.getSources().getData()) {
    if (source instanceof Card) { // 先做类型判断更安全,避免强转报错
        Card card = (Card) source;
        // 对比卡片ID和客户的默认源ID
        if (card.getId().equals(customer.getDefaultSource())) {
            // 这就是默认支付卡片,获取后4位
            String last4 = card.getLast4();
            System.out.println("默认卡片后4位:" + last4);
            break; // 找到目标就可以跳出循环,不用继续遍历
        }
    }
}

2. 直接查询默认支付源(更高效)

如果客户绑定了很多卡片,遍历所有卡片有点浪费资源,其实可以直接通过default_source的ID获取对应的卡片对象,不用遍历所有源:

String defaultSourceId = customer.getDefaultSource();
if (defaultSourceId != null) { // 先判断是否存在默认支付源
    // 直接通过ID获取默认卡片
    Card defaultCard = Card.retrieve(defaultSourceId);
    String last4 = defaultCard.getLast4();
    System.out.println("默认卡片后4位:" + last4);
} else {
    // 处理用户还没设置默认支付方式的场景
    System.out.println("用户未设置默认支付卡片");
}

小提醒

  • 一定要处理default_source为null的情况,也就是用户还没添加任何支付方式,或者还没设置默认选项的场景。
  • 类型判断instanceof Card很关键,因为ExternalAccount还可能对应银行账户等其他支付源类型,避免强转时出现异常。

内容的提问来源于stack exchange,提问作者RTF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:57:50