https://stripe.com/docs/api?lang=php#list_chargesを使用してすべての料金を一覧表示していますが、ここでは指定しています
countオプション—デフォルトは10返されるオブジェクトの数の制限。カウントの範囲は1〜100アイテムです。
何千ものエントリがありますが、どうすればすべてを取得できますか。countを100に設定すると、 110レコードが返されます。
https://stripe.com/docs/api?lang=php#list_chargesを使用してすべての料金を一覧表示していますが、ここでは指定しています
countオプション—デフォルトは10返されるオブジェクトの数の制限。カウントの範囲は1〜100アイテムです。
何千ものエントリがありますが、どうすればすべてを取得できますか。countを100に設定すると、 110レコードが返されます。
offset
引数を使用できます。
100個のトランザクションを取得したらoffset=100
、URLを追加して別の呼び出しを行います。
これにより、次の100のトランザクションが発生し、その後、以下offset=200
のようになります。
更新:
offset
パラメーターは部分的に非推奨になりました:API変更ログ-2015-09-23
$charges = \Stripe\Charge::all();
foreach ($charges->autoPagingIterator() as $charge) {
// Do something with $charge
}
はい、オフセットで取得しました。すべてのレコードを取得できます。
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);
これは私にとってはうまくいきました。$a<5のAPIが5回ヒットし、作成されるたびに、APIリクエストごとにlte(等しくない)変更され、現在のリクエストが提供するよりも前のレコードを返すため、一度に500レコードを取得できました。また、各api呼び出しの結果を別の結果配列に追加しています
残念ながらできません。
このような機能がアカウンティングの目的などに適しているかどうかはわかりますが、ユーザーに大量のデータを表示する場合は、一般的に、ある種のページングを実装する方がユーザーエクスペリエンスが向上します。
一度に表示するレコードの数を完全に制御する必要がある場合は、charge.succeededイベントにWebhookを設定し、料金をローカルに保存することをお勧めします。