我正在与Magento和Stripe合作开发统计模块。在那个模块中,我想知道每天的收费金额。我有一个解决方案,但它真的很慢。获得费用是否真的是必要的:一切都是为了得到这个数字?它真的很重。
到目前为止我的解决方案:
public function getPaidInvoicesByDate($begin, $end) {
Mage::log('BEGIN: ' . $begin . ' END: ' . $end, null, 'customerLog.log');
$begin = strtotime($begin);
$end = strtotime($end);
$end = strtotime('+1 day', $end);
$transactions = array();
$this->setStripeKey();
// Get alle invoices
$charges = \Stripe\Charge::all(array(
"limit" => 100,
"created[gte]" => $begin,
"created[lte]" => $end
));
foreach ($charges->autoPagingIterator() as $charge) {
$createdAt = explode(' ' ,date('d-m-Y H:m:s', $charge->created))[0];
$transactions[$createdAt] += 1;
}
return $transactions;
}
希望你们有人建议我如何降低加载时间?
答案 0 :(得分:0)
分页要求您循环所有事务以计算它们。更好的解决方案是使用webhooks代替。
每当Stripe帐户中发生某些事情(例如客户创建,收费或转移)时,我们都会向webhook端点(如果有)发送事件,以便它了解它。您可以监听charge.*
个事件,并在您自己的数据库中实时跟踪这些事件。这样可以避免每天对API进行分页。