PHP调用Stripe API如何获取客户银行卡详情数组数据
问题根因
你没有接收retrieveSource方法的返回值,直接打印了$stripe这个初始化好的客户端实例,当然看不到银行卡数据。Stripe PHP SDK的所有资源操作接口,调用后会把响应结果作为返回值返回,必须用变量接收才能拿到数据。
正确写法
require_once('vendor/autoload.php'); // 初始化客户端 $stripe = new \Stripe\StripeClient('你的Stripe秘钥'); // 接收接口返回的银行卡资源对象 $card = $stripe->customers->retrieveSource( 'CUSTOMER_ID', 'CARD_ID' ); // 直接打印对象可以看到完整返回结构 print_r($card); // 如果需要原生数组格式,调用对象自带的toArray()方法转换即可 $cardArray = $card->toArray(); print_r($cardArray); // 单独读取字段不需要转数组,直接对象属性取就行,举几个常用字段例子 $cardLast4 = $card->last4; // 银行卡后四位 $cardBrand = $card->brand; // 卡组织,比如visa、mastercard $expireMonth = $card->exp_month; // 过期月份 $expireYear = $card->exp_year; // 过期年份
补充说明
$stripe是你初始化的请求客户端实例,只负责发请求,本身不存任何接口返回的业务数据,打印它永远只会显示客户端相关配置- SDK默认返回的是Stripe自定义的资源对象,不是PHP原生数组,要数组必须调
toArray()方法转换,不要强转 - 调用接口时建议加try-catch捕获异常,秘钥错误、客户/银行卡ID不存在、权限不足时SDK会直接抛异常,不捕获会直接出致命错误
- 确保你传入的银行卡ID确实归属于传入的客户ID,否则接口会返回404错误
内容的提问来源于stack exchange,提问作者kbza dev
相关产品推荐
相关产品推荐

