【发布时间】:2013-03-14 22:19:21
【问题描述】:
我正在使用https://stripe.com/docs/api?lang=php#list_charges 获取列出所有费用,但在这里他们指定了
count 可选 — 默认为 10 对象数量的限制 回来。计数可以在 1 到 100 项之间。
我有成千上万的条目,现在我如何才能获得所有条目。虽然如果我将计数设置为 100 它会返回 110 记录。
【问题讨论】:
标签: php stripe-payments
我正在使用https://stripe.com/docs/api?lang=php#list_charges 获取列出所有费用,但在这里他们指定了
count 可选 — 默认为 10 对象数量的限制 回来。计数可以在 1 到 100 项之间。
我有成千上万的条目,现在我如何才能获得所有条目。虽然如果我将计数设置为 100 它会返回 110 记录。
【问题讨论】:
标签: php stripe-payments
您可以使用offset 参数。
获得 100 笔交易后,通过在 URL 中添加 offset=100 进行另一个调用。
这将带来接下来的 100 笔交易,然后进行 offset=200 等等。
更新:
offset 参数已部分弃用:API changelog - 2015-09-23
【讨论】:
$charges = \Stripe\Charge::all();
foreach ($charges->autoPagingIterator() as $charge) {
// Do something with $charge
}
【讨论】:
是的,我通过 offset 获得了它,我们可以获得所有记录。
【讨论】:
:)
这是一个 PHP 示例:\Stripe\Charge::all(array("limit" => 3, "offset" => 10));
一个 Ruby 示例:
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
【讨论】:
如果不推荐使用偏移量
$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
【讨论】:
很遗憾你不能。
我可以看到这样的功能在会计用途或其他方面会很好,但在向用户显示大量数据时实现某种分页通常会更好的用户体验。
如果您需要绝对控制一次显示多少条记录,我建议在 charge.succeeded 事件上设置一个 webhook 并将您的费用存储在本地。
【讨论】: