【问题标题】:Stripe API: List all ChargesStripe API:列出所有费用
【发布时间】:2013-03-14 22:19:21
【问题描述】:

我正在使用https://stripe.com/docs/api?lang=php#list_charges 获取列出所有费用,但在这里他们指定了

count 可选 — 默认为 10 对象数量的限制 回来。计数可以在 1 到 100 项之间。

我有成千上万的条目,现在我如何才能获得所有条目。虽然如果我将计数设置为 100 它会返回 110 记录。

【问题讨论】:

    标签: php stripe-payments


    【解决方案1】:

    您可以使用offset 参数。

    获得 100 笔交易后,通过在 URL 中添加 offset=100 进行另一个调用。

    这将带来接下来的 100 笔交易,然后进行 offset=200 等等。

    更新: offset 参数已部分弃用:API changelog - 2015-09-23

    【讨论】:

      【解决方案2】:
      $charges = \Stripe\Charge::all();
      foreach ($charges->autoPagingIterator() as $charge) {
        // Do something with $charge
      }
      

      Reference.

      【讨论】:

        【解决方案3】:

        是的,我通过 offset 获得了它,我们可以获得所有记录。

        【讨论】:

        • 看起来你应该接受@Chirag 的回答——他/她比你早了好几天!你会打勾吗? :)
        【解决方案4】:

        这是一个 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_chargeshttps://stripe.com/docs/api/ruby#list_charges

        【讨论】:

          【解决方案5】:

          如果不推荐使用偏移量

            $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

          【讨论】:

            【解决方案6】:

            很遗憾你不能。

            我可以看到这样的功能在会计用途或其他方面会很好,但在向用户显示大量数据时实现某种分页通常会更好的用户体验。

            如果您需要绝对控制一次显示多少条记录,我建议在 charge.succeeded 事件上设置一个 webhook 并将您的费用存储在本地。

            【讨论】:

              猜你喜欢
              • 2021-06-16
              • 2020-12-15
              • 2021-12-28
              • 2018-05-14
              • 2020-05-28
              • 2015-12-10
              • 2021-01-10
              • 2018-11-09
              • 2018-02-01
              相关资源
              最近更新 更多