如何通过Stripe获取客户关联银行卡/账户的最后四位数字
Stripe 获取目标账户、客户支付方法及卡号后四位实现方案
需求说明
通过Stripe建立连接,完成以下操作:
- 获取目标账户(destination account)
- 检索客户对象ID
- 获取该客户的可用支付方法,并提取关联银行卡/银行账户的最后四位数字
原代码问题修正
原代码存在语法和逻辑错误,以下是修正后的可运行实现:
require_once 'stripe-php-master/init.php'; // 初始化Stripe客户端 $stripe = new \Stripe\StripeClient($STRIPE_API_KEY); // 1. 检索目标账户(destination account) $destinationAccount = $stripe->accounts->retrieve($STRIPE_DEST); // 2. 确定客户ID(需根据业务场景获取,示例假设客户ID已知) // 若客户归属目标账户而非平台主账户,需切换账户上下文:$stripe->withConfig(['stripe_account' => $STRIPE_DEST]) $customerId = 'cus_xxxxxx'; // 替换为实际客户ID // 3. 获取客户的卡类型支付方法 $paymentMethods = $stripe->paymentMethods->all([ 'customer' => $customerId, 'type' => 'card', ]); // 4. 提取首张卡的最后四位(先判断是否存在支付方法) $last4 = null; if (!empty($paymentMethods->data)) { $last4 = $paymentMethods->data[0]->card->last4; } // 若需获取银行账户(如ACH转账),可修改type参数并提取对应字段 // $paymentMethods = $stripe->paymentMethods->all([ // 'customer' => $customerId, // 'type' => 'us_bank_account', // ]); // $last4 = $paymentMethods->data[0]->us_bank_account->last4;
关键细节说明
- 目标账户检索:
accounts->retrieve方法仅需传入目标账户ID,原代码的空数组参数属于语法错误。 - 账户上下文切换:如果客户是关联在目标账户下的,必须用
withConfig切换到目标账户的上下文才能正确检索客户数据。 - 支付方法结构:
paymentMethods->all()返回的列表在data属性下,而非sources->data;卡的最后四位在card->last4字段,银行账户对应us_bank_account->last4。 - 空值校验:实际使用时必须先检查
paymentMethods->data是否为空,避免数组越界报错。
内容的提问来源于stack exchange,提问作者Justin Crawfish
相关产品推荐
相关产品推荐

