2017-10-03 2 views
0

Ich arbeite gerade mit Magento und Stripe und entwickle ein Statistikmodul. In diesem Modul möchte ich die Höhe der Gebühren pro Tag wissen. Ich habe eine Lösung, aber es ist wirklich langsam. Ist es wirklich notwendig, die Gebühr zu bekommen: alle für diese Nummer? Es sind wirklich schwere Daten.Transaktionsanzahl pro Tag abrufen

Meine Lösung bisher:

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; 
} 

Hoffnung jemand von euch einen Vorschlag bekam, wie ich die Ladezeit senken kann?

Antwort

0

Bei der Seitenumbruch müssen Sie alle Transaktionen durchlaufen, um sie zu zählen. Eine bessere Lösung wäre stattdessen webhooks zu verwenden.

Immer wenn etwas in einem Stripe-Konto passiert, wie zum Beispiel eine Kundenerstellung, eine Gebühr oder eine Übertragung, senden wir ein Ereignis an den Webhook-Endpunkt (falls vorhanden), damit es es bemerkt. Sie können für charge.* Ereignisse hören und diese in Echtzeit in Ihrer eigenen Datenbank verfolgen. Dies würde verhindern, dass die API täglich paginiert werden muss.