我正在使用https://stripe.com/docs/api?lang=php#list_charges来获取列出所有费用,但在这里他们指定
count 可选 — 默认为 10 要返回的对象数量的限制。计数可以在 1 到 100 个项目之间。
我有成千上万的条目,现在我怎么能得到所有。虽然如果我将计数设置为100,它会返回110条记录。
我正在使用https://stripe.com/docs/api?lang=php#list_charges来获取列出所有费用,但在这里他们指定
count 可选 — 默认为 10 要返回的对象数量的限制。计数可以在 1 到 100 个项目之间。
我有成千上万的条目,现在我怎么能得到所有。虽然如果我将计数设置为100,它会返回110条记录。
您可以使用该offset
参数。
获得 100 笔交易后,通过添加offset=100
URL 进行另一个调用。
这将带来接下来的 100 笔交易,然后 makeoffset=200
等等。
更新:
offset
部分不推荐使用参数:API 更改日志 - 2015-09-23
$charges = \Stripe\Charge::all();
foreach ($charges->autoPagingIterator() as $charge) {
// Do something with $charge
}
是的,我得到了偏移量,我们可以获得所有记录。
如果不推荐使用偏移量
$result = [];
$created_at = strtotime($request->end_data);
//created_at should be today's date epoch. search google for epoch
$has_more = false;
$a = 0;
do{
print_r($a);
\Stripe\Stripe::setApiKey(env('STRIPE_SECRET'));
$temp = \Stripe\BalanceTransaction::all( array(
'limit' => 100,
'created' => array(
'lte' => $created_at,
)
));
$result = array_merge($temp->data,$result);
$created_at = $temp->data[99]->created_at;
//api returns a parameter has_more(boolean), which means there is more
//data or not so you can also put that in while condition, for ex.
// $has_more = $temp->has_more;
$a++;
}while($a < 5);
dd($result);
这对我有用,我能够一次获得 500 条记录,因为 $a < 5 api 命中 5 次,并且每次创建的参数都是 lte(小于等于)为每个 api 请求更改并返回比当前请求提供的先前记录。我还将每个 api 调用的结果附加到另一个结果数组
这是一个 PHP 示例: \Stripe\Charge::all(array("limit" => 3, "offset" => 10));
一个红宝石示例:
Stripe::Charge.all(limit: 3, offset:3)
与 Stripe API 文档一样好,它们可以更清楚地说明如何过滤。
来源:https ://stripe.com/docs/api/php#list_charges,https : //stripe.com/docs/api/ruby#list_charges
不幸的是你不能。
我可以看到这样的功能在哪里可以用于会计目的或其他用途,但在向用户显示大量数据时实现某种分页通常是一种更好的用户体验。
如果您需要绝对控制一次显示多少条记录,我建议您在 charge.succeeded 事件上设置一个 webhook 并将您的费用存储在本地。