PHP中统计Stripe API返回JSON内发票数量的可靠方案问询
可靠统计Stripe发票数量的PHP实现方案
你当前用substr_count匹配字符串的方式风险很高——一旦Stripe API返回的JSON格式微调(比如空格、转义字符变化,或者其他字段出现类似字符串),统计结果就会出错。以下是两种更可靠的实现方式:
1. 原生PHP解析JSON
直接将JSON字符串解码为结构化数据后统计,完全依赖数据结构而非字符串匹配:
// 将JSON字符串解码为关联数组 $data = json_decode($result, true); // Stripe列表类API的返回结果中,数据集合存于data字段 $invoiceCount = isset($data['data']) ? count($data['data']) : 0;
这种方式不受JSON格式的排版、转义变化影响,只要Stripe保持列表响应的结构规范,就能准确统计。
2. 使用Stripe官方PHP SDK
这是最推荐的方案,SDK会自动处理API响应解析、错误处理和分页逻辑:
首先通过Composer安装SDK:
composer require stripe/stripe-php
然后编写代码统计发票数量:
// 初始化Stripe客户端 \Stripe\Stripe::setApiKey('你的Secret Key'); // 获取发票列表(可添加筛选参数,如limit、created时间范围等) $invoices = \Stripe\Invoice::all(); // 统计发票数量 $invoiceCount = count($invoices->data);
如果发票数量超过API默认分页限制(默认10条),需要统计全部发票的话,可以用SDK的自动分页迭代器:
$totalCount = 0; foreach (\Stripe\Invoice::all()->autoPagingIterator() as $_) { $totalCount++; }
关键提醒
永远不要用字符串匹配的方式处理JSON数据,JSON的格式灵活性(空格、键值对顺序、转义规则)会导致这种方法的稳定性极低,解析为结构化数据才是正确的处理方式。
内容的提问来源于stack exchange,提问作者Maurice
相关产品推荐
相关产品推荐

