2017-01-10 39 views
8

Zaprenumerowałem użytkownika w abonamencie za pośrednictwem pakietu Laravel's Cashier. Teraz chcę wyświetlić datę następnego rozliczenia użytkownika, jednak nie wydaje się, że jest to dostępne za pośrednictwem funkcji Płatne.Pobierz następną datę fakturowania z Laravel Cashier

Jak uzyskać kolejną datę fakturowania? Dzięki!

Odpowiedz

6

Rozwiązaniem jest użycie metody asStripeCustomer:

// Retrieve the timestamp from Stripe 
$timestamp = $user -> asStripeCustomer()["subscriptions"] -> data[0]["current_period_end"]; 

// Cast to Carbon instance and return 
return \Carbon\Carbon::createFromTimeStamp($timestamp) -> toFormattedDateString(); 

Zauważ, że mam tylko przetestowane z użytkownikiem, który ma jeden abonament - data[0].

Być może trzeba będzie zmienić ten kod dla wielu subskrypcji lub jeśli użytkownik anulował i rozpoczął kolejną subskrypcję.

+0

To rozwiązanie pracował dla mnie. @ John1984, zaakceptowanie własnej odpowiedzi jest OK. –

0

Subskrypcje mają również metodę ->asStripeSubscription(), która daje dostęp do wartości właśnie dla tej subskrypcji. Więc można zrobić:

// Retrieve the timestamp from Stripe 
$timestamp = $subscription->current_period_end; 

// Cast to Carbon instance and return 
return \Carbon\Carbon::createFromTimeStamp($timestamp)->toFormattedDateString(); 
0

Opierając się na poprzednich odpowiedzi, oto, co działa dla mnie:

private function getSubscriptionRenewDate($plan) 
{ 
    $sub = Auth::user()->subscription($plan)->asStripeSubscription(); 
    return Carbon::createFromTimeStamp($sub->current_period_end)->format('F jS, Y'); 
}